GitLabデータベースを別のPostgreSQLインスタンスに移行する
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab Self-Managed
データベースをPostgreSQLの別のインスタンスに移行する必要がある場合があります。たとえば、AWS Auroraを使用しており、データベースロードバランシングを有効にする準備をしている場合は、PostgreSQL用のRDSにデータベースを移行する必要があります。
データベースをあるインスタンスから別のインスタンスに移行するには、次の手順に従います:
ソースと宛先のPostgreSQLエンドポイント情報を収集します:
SRC_PGHOST=<source postgresql host> SRC_PGUSER=<source postgresql user> DST_PGHOST=<destination postgresql host> DST_PGUSER=<destination postgresql user>GitLabを停止します:
sudo gitlab-ctl stopソースからデータベースをダンプします:
/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を実行して問題を修正してください。宛先にデータベースを復元する (これにより、同じ名前の既存のデータベースが上書きされます):
/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オプション。PgBouncerを使用しないデータベースから使用するデータベースに移行する場合は、アプリケーションデータベース(通常は
gitlabhq_production)にpg_shadow_lookup関数を手動で追加する必要があります。/etc/gitlab/gitlab.rbファイル内の宛先PostgreSQLインスタンスの適切な接続の詳細でGitLabアプリケーションサーバーを構成します:gitlab_rails['db_host'] = '<destination postgresql host>'GitLabマルチノード設定の詳細については、参照アーキテクチャを参照してください。
変更を有効にするには、再構成を実行してください:
sudo gitlab-ctl reconfigureGitLabを再起動します:
sudo gitlab-ctl start