使用外部 PostgreSQL 服务配置 GitLab
- Tier: Free, Premium, Ultimate
- Offering: GitLab Self-Managed
如果您在云提供商上托管 GitLab,可以选择使用 PostgreSQL 的托管服务。例如,AWS 提供了一个运行 PostgreSQL 的托管关系型数据库服务 (RDS)。
或者,您也可以选择管理自己的 PostgreSQL 实例或集群,使其与 Linux 软件包分离。
如果您使用云托管服务,或提供自己的 PostgreSQL 实例,请根据数据库要求文档来设置 PostgreSQL。
GitLab Rails 数据库
设置外部 PostgreSQL 服务器后:
-
登录到您的数据库服务器。
-
设置一个
gitlab用户,并为其设置您选择的密码,创建gitlabhq_production数据库,并将该用户设为数据库的所有者。您可以在自主编译安装文档中查看此设置的示例。 -
如果您使用的是云托管服务,可能需要为您的
gitlab用户授予额外的角色:- Amazon RDS 需要
rds_superuser角色。 - Azure Database for PostgreSQL 需要
azure_pg_admin角色。Azure Database for PostgreSQL - Flexible Server 需要在安装前将扩展加入允许列表。 - Google Cloud SQL 需要
cloudsqlsuperuser角色。
这是为了在安装和升级期间安装扩展。作为替代方案,请确保手动安装扩展,并了解未来 GitLab 升级过程中可能出现的问题。
- Amazon RDS 需要
-
在您的
/etc/gitlab/gitlab.rb文件中,使用外部 PostgreSQL 服务的相应连接信息来配置 GitLab 应用服务器:# 禁用捆绑的 Omnibus 提供的 PostgreSQL postgresql['enable'] = false # PostgreSQL 连接信息 gitlab_rails['db_adapter'] = 'postgresql' gitlab_rails['db_encoding'] = 'unicode' gitlab_rails['db_host'] = '10.1.0.5' # 数据库服务器的 IP/主机名 gitlab_rails['db_port'] = 5432 gitlab_rails['db_password'] = 'DB password'有关 GitLab 多节点设置的更多信息,请参阅参考架构。
-
重新配置以使更改生效:
sudo gitlab-ctl reconfigure -
重启 PostgreSQL 以启用 TCP 端口:
sudo gitlab-ctl restart
容器注册表元数据库
如果您计划使用容器注册表元数据库,您还应该创建注册表数据库和用户。
设置外部 PostgreSQL 服务器后:
-
登录到您的数据库服务器。
-
使用以下 SQL 命令创建用户和数据库:
-- 创建注册表用户 CREATE USER registry WITH PASSWORD '<your_registry_password>'; -- 创建注册表数据库 CREATE DATABASE registry OWNER registry; -
对于云托管服务,根据需要授予额外的角色:
GRANT rds_superuser TO registry;GRANT azure_pg_admin TO registry;GRANT cloudsqlsuperuser TO registry; -
现在,您可以启用并开始使用容器注册表元数据库。
故障排除
解决 SSL SYSCALL error: EOF detected 错误
使用外部 PostgreSQL 实例时,您可能会看到如下错误:
pg_dump: error: Error message from server: SSL SYSCALL error: EOF detected要解决此错误,请确保您满足最低 PostgreSQL 要求。将您的 RDS 实例升级到支持的版本后,您应该可以执行备份而不会出现此错误。 更多信息请参阅 issue 64763。