使用外部 PostgreSQL 服务配置 GitLab
如果您在云提供商上托管 GitLab,您可以选择使用 PostgreSQL 托管服务。例如,AWS 提供了一个运行 PostgreSQL 的托管关系数据库服务 (RDS)。
或者,您可以选择独立于 Omnibus GitLab 包,管理您自己的 PostgreSQL 实例或集群。
如果您使用云托管服务,或提供您自己的 PostgreSQL 实例:
- 根据数据库需求文档设置 PostgreSQL。
- 使用您选择的密码设置一个
gitlab
用户,创建gitlabhq_production
数据库,并使该用户成为数据库的所有者。 - 如果您使用的是云管理服务,您可能需要为您的
gitlab
用户授予额外的角色:- Amazon RDS 需要
rds_superuser
角色。 - Azure Database for PostgreSQL 需要
azure_pg_admin
角色。Azure Database for PostgreSQL - 灵活服务器需要允许列表扩展才能安装。 - Google Cloud SQL 需要
cloudsqlsuperuser
角色。
这是用于在安装和升级期间安装扩展。作为替代方案,确保手动安装扩展,并阅读未来升级过程中可能出现的问题。
- Amazon RDS 需要
-
在
/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'
-
重新配置以使更改生效:
sudo gitlab-ctl reconfigure
故障排查
解决 SSL SYSCALL error: EOF detected
错误
使用外部 PostgreSQL 实例时,您可能会看到如下错误:
pg_dump: error: Error message from server: SSL SYSCALL error: EOF detected
要解决此错误,请确保您满足最低 PostgreSQL 要求。将您的 RDS 实例升级到合适的版本后,您应该能够执行备份而不会出现此错误。