正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

GitLabデータベースを別のPostgreSQLインスタンスに移行する

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab Self-Managed

データベースをPostgreSQLの別のインスタンスに移行する必要がある場合があります。たとえば、AWS Auroraを使用しており、データベースロードバランシングを有効にする準備をしている場合は、PostgreSQL用のRDSにデータベースを移行する必要があります。

データベースをあるインスタンスから別のインスタンスに移行するには、次の手順に従います:

  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

    まれに、pg_dumpを実行して復元するした後、データベースのパフォーマンスの問題が発生することがあります。これは、pg_dumpクエリ計画の決定を行うためにオプティマイザで使用される統計が含まれていないために発生する可能性があります。復元する後にパフォーマンスが低下する場合は、問題のあるクエリを見つけ、そのクエリで使用されているテーブルでANALYZEを実行して問題を修正してください。

  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. オプション。PgBouncerを使用しないデータベースから使用するデータベースに移行する場合は、アプリケーションデータベース(通常はgitlabhq_production)にpg_shadow_lookup関数を手動で追加する必要があります。

  6. /etc/gitlab/gitlab.rbファイル内の宛先PostgreSQLインスタンスの適切な接続の詳細でGitLabアプリケーションサーバーを構成します:

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

    GitLabマルチノード設定の詳細については、参照アーキテクチャを参照してください。

  7. 変更を有効にするには、再構成を実行してください:

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

    sudo gitlab-ctl start