外部のPostgreSQLサービスを使ったGitLabの設定

GitLabをクラウドプロバイダーでホストしている場合、オプションでPostgreSQLのマネージドサービスを使うことができます。例えば、AWSはPostgreSQLを実行するマネージドRelational Database Service(RDS) を提供しています。

あるいは、Linuxパッケージとは別に自分のPostgreSQLインスタンスやクラスターを管理することもできます。

クラウドマネージドサービスを利用したり、独自のPostgreSQLインスタンスを提供したりする場合です:

  1. データベース要件文書に従って PostgreSQL をセットアップします。
  2. gitlab ユーザーを任意のパスワードで設定し、gitlabhq_production データベースを作成し、そのユーザーをデータベースのオーナーにします。このセットアップの例は、セルフコンパイルのインストール・ドキュメントで見ることができます。
  3. クラウド管理サービスを使用している場合は、gitlab ユーザーに追加のロールを付与する必要があるかもしれません:

    これは、インストールやアップグレードの際に拡張機能をインストールするためのものです。別の方法として、エクステンションが手動でインストールされていることを確認し、将来のGitLabアップグレード時に発生する可能性のある問題についてお読みください。

  4. GitLabアプリケーションサーバーを設定し、/etc/gitlab/gitlab.rb ファイルで外部PostgreSQLサービスの適切な接続詳細を設定します:

    # Disable the bundled Omnibus provided PostgreSQL
    postgresql['enable'] = false
       
    # PostgreSQL connection details
    gitlab_rails['db_adapter'] = 'postgresql'
    gitlab_rails['db_encoding'] = 'unicode'
    gitlab_rails['db_host'] = '10.1.0.5' # IP/hostname of database server
    gitlab_rails['db_password'] = 'DB password'
    

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

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

    sudo gitlab-ctl reconfigure
    

トラブルシューティング

SSL SYSCALL error: EOF detected エラーの解決

外部のPostgreSQLインスタンスを使用している場合、以下のようなエラーが表示されることがあります:

pg_dump: error: Error message from server: SSL SYSCALL error: EOF detected

このエラーを解決するには、PostgreSQLの最小要件を満たしていることを確認してください。RDSインスタンスを適切なバージョンにアップグレードすると、このエラーなしでバックアップを実行できるようになります。詳細については、イシュー#64763 (Segmentation fault citingLooseForeignKeys::CleanupWorker causes complete database restart) を参照してください。