Help us learn about your current experience with the documentation. Take the survey.

使用外部 PostgreSQL 服务配置 GitLab

  • Tier: Free, Premium, Ultimate
  • Offering: GitLab Self-Managed

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

或者,您也可以选择管理自己的 PostgreSQL 实例或集群,使其与 Linux 软件包分离。

如果您使用云托管服务,或提供自己的 PostgreSQL 实例,请根据数据库要求文档来设置 PostgreSQL。

GitLab Rails 数据库

设置外部 PostgreSQL 服务器后:

  1. 登录到您的数据库服务器。

  2. 设置一个 gitlab 用户,并为其设置您选择的密码,创建 gitlabhq_production 数据库,并将该用户设为数据库的所有者。您可以在自主编译安装文档中查看此设置的示例。

  3. 如果您使用的是云托管服务,可能需要为您的 gitlab 用户授予额外的角色:

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

  4. 在您的 /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 多节点设置的更多信息,请参阅参考架构

  5. 重新配置以使更改生效:

    sudo gitlab-ctl reconfigure
  6. 重启 PostgreSQL 以启用 TCP 端口:

    sudo gitlab-ctl restart

容器注册表元数据库

如果您计划使用容器注册表元数据库,您还应该创建注册表数据库和用户。

设置外部 PostgreSQL 服务器后:

  1. 登录到您的数据库服务器。

  2. 使用以下 SQL 命令创建用户和数据库:

    -- 创建注册表用户
    CREATE USER registry WITH PASSWORD '<your_registry_password>';
    
    -- 创建注册表数据库
    CREATE DATABASE registry OWNER registry;
  3. 对于云托管服务,根据需要授予额外的角色:

    GRANT rds_superuser TO registry;
    GRANT azure_pg_admin TO registry;
    GRANT cloudsqlsuperuser TO registry;
  4. 现在,您可以启用并开始使用容器注册表元数据库。

故障排除

解决 SSL SYSCALL error: EOF detected 错误

使用外部 PostgreSQL 实例时,您可能会看到如下错误:

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

要解决此错误,请确保您满足最低 PostgreSQL 要求。将您的 RDS 实例升级到支持的版本后,您应该可以执行备份而不会出现此错误。 更多信息请参阅 issue 64763