使用外部 PostgreSQL 服务配置 GitLab

如果您在云提供商上托管 GitLab,您可以选择使用 PostgreSQL 托管服务。例如,AWS 提供了一个运行 PostgreSQL 的托管关系数据库服务 (RDS)。

或者,您可以选择独立于 Linux 软件包,管理您自己的 PostgreSQL 实例或集群。

如果您使用云托管服务,或提供您自己的 PostgreSQL 实例:

  1. 根据数据库需求文档设置 PostgreSQL。
  2. 使用您选择的密码设置一个 gitlab 用户,创建 gitlabhq_production 数据库,并使该用户成为数据库的所有者。
  3. 如果您使用的是云管理服务,您可能需要为您的 gitlab 用户授予额外的角色:

    这是用于在安装和升级期间安装扩展。作为替代方案,确保手动安装扩展,并阅读未来升级过程中可能出现的问题。

  4. /etc/gitlab/gitlab.rb 文件中,为您的外部 PostgreSQL 服务配置与 GitLab 应用服务器连接的适当细节:

     # 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'
    
  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 实例升级到合适的版本后,您应该能够执行备份而不会出现此错误。