GitLabデータベースを別のPostgreSQLインスタンスに移動

データベースをあるPostgreSQLインスタンスから別のPostgreSQLインスタンスに移動する必要があることがあります。例えば、AWS Auroraを使っていてDatabase Load Balancingを有効にする準備をしている場合、データベースをRDS for PostgreSQLに移動する必要があります。

インスタンスから別のインスタンスにデータベースを移動するには:

  1. 移動元と移動先の PostgreSQL エンドポイント情報を収集します:

    SRC_PGHOST=<source postgresql host>
    SRC_PGUSER=<source postgresql user>
       
    DST_PGHOST=<destination postgresql host>
    DST_PGUSER=<destination postgresql user>
    
  2. GitLab を停止します:

    sudo gitlab-ctl stop
    
  3. ソースからデータベースをダンプします:

    /opt/gitlab/embedded/bin/pg_dump -h $SRC_PGHOST -U $SRC_PGUSER -c -C -f gitlabhq_production.sql gitlabhq_production
    /opt/gitlab/embedded/bin/pg_dump -h $SRC_PGHOST -U $SRC_PGUSER -c -C -f praefect_production.sql praefect_production
    
  4. 宛先にデータベースをリストアします(同じ名前の既存のデータベースは上書きされます):

    /opt/gitlab/embedded/bin/psql -h $DST_PGHOST -U $DST_PGUSER -f praefect_production.sql postgres
    /opt/gitlab/embedded/bin/psql -h $DST_PGHOST -U $DST_PGUSER -f gitlabhq_production.sql postgres
    
  5. GitLabアプリケーションサーバーを設定し、/etc/gitlab/gitlab.rb ファイルに保存先のPostgreSQLインスタンスに対する適切な接続詳細を設定します:

    gitlab_rails['db_host'] = '<destination postgresql host>'
    

    GitLabの複数ノードセットアップの詳細については、リファレンスアーキテクチャを参照してください。

  6. 変更を有効にするために再設定します:

    sudo gitlab-ctl reconfigure
    
  7. GitLabを再起動します:

    sudo gitlab-ctl start