tencent cloud

云数据库 PostgreSQL

动态与公告
产品动态
产品简介
产品概述
产品特性
产品优势
应用场景
信息安全说明
地域和可用区
产品功能列表
大版本生命周期说明
MSSQL 兼容版
产品计费
计费概述
实例类型与规格
购买方式
退费说明
欠费说明
备份空间收费说明
快速入门
创建 PostgreSQL 实例
连接 PostgreSQL 实例
管理 PostgreSQL 实例
数据导入
通过 DTS 迁移数据
内核能力介绍
内核版本概述
内核版本更新动态
查看内核版本
自研内核功能介绍
数据库审计
审计服务说明
开通审计服务
查看审计日志
修改审计服务
审计性能说明
用户指南
实例管理
升级实例
CPU 弹性扩容
只读实例
账号管理
数据库管理
参数管理
日志管理及分析
备份与恢复
数据迁移
插件管理
网络管理
访问管理
数据安全
租户及资源隔离
安全组
监控与告警
标签
AI 实践
使用 tencentdb_ai 插件调用大模型
使用 tencentdb_ai 插件构建 AI 应用
结合 Supabase 快速构建基于云数据库 PostgreSQL 的后端服务
实践教程
跨库访问
如何在 PostgreSQL 中自动创建分区
基于 pg_roaringbitmap 实现超大规模标签查找
一条 SQL 实现查询附近的人
如何配置云数据库 PostgreSQL 作为 GitLab 外部数据源
通过 cos_fdw 插件支持分级存储能力
通过 pgpool 实现读写分离
通过 auto_explain 插件实现慢 SQL 分析
使用 pglogical 进行逻辑复制
使用 Debezium 采集 PostgreSQL 数据
在 CVM 本地搭建 PostgreSQL 异地灾备环境
只读实例与只读组实践教程
如何使用云函数定时操作数据库
表膨胀处理
性能白皮书
测试方法
测试结果
API 文档
History
Introduction
API Category
Making API Requests
Instance APIs
Read-only Replica APIs
Backup and Recovery APIs
Parameter Management APIs
Security Group APIs
Performance Optimization APIs
Account APIs
Specification APIs
Network APIs
Data Types
Error Codes
常见问题
相关协议
Service Level Agreement
Terms of Service
词汇表
联系我们
文档云数据库 PostgreSQL实践教程如何配置云数据库 PostgreSQL 作为 GitLab 外部数据源

如何配置云数据库 PostgreSQL 作为 GitLab 外部数据源

PDF
聚焦模式
字号
最后更新时间: 2026-02-03 10:33:34

背景

Gitlab 是⼀种类似 github 的服务,企业可以使⽤它来提供 git 存储库的内部管理。它是⼀个⾃我托管的 Git-repository 管理系统,可以保持⽤户代码的私密性,并且可以轻松地部署代码的更改。其优势在于:
GitLab 提供了 GitLab Community Edition 版本,供⽤户在他们的代码所在的服务器上进行定位。
GitLab 免费提供⽆限数量的私人和公共存储库。
代码⽚段可以共享项⽬中的少量代码,⽽不是共享整个项⽬。
Gitlab 服务的元数据库在新版本(12.1)中目前仅⽀持 PostgreSQL,Gitlab 介绍不再支持 MySQL 的理由如下:
⽆法⽀持嵌套分组查询。
必须使用黑科技来提升 MySQL 对列的限制,这将导致 MySQL 拒绝存储数据。
MySQL ⽆法添加 TEXT 类型字段的⻓度限制。
MySQL 不⽀持分区索引。
而 PostgreSQL 都能支持到以上场景。所以 Gitlab 在安装包中集成了 PostgreSQL,但对于某些企业⽽⾔,集成的数据库服务存在⼀定的安全风险,并且数据库服务的可靠性和可⽤性都不能得到保证。为了确保代码托管服务的稳定,部分业务和企业会选择采⽤稳定的外部数据库服务。而 Gitlab 在 Gitlab HA Repmgr 包中才⽀持基于 patroni 版本的⾼可⽤数据库。但是⾃⾏维护集群是⼀件成本较⾼的事情,采⽤腾讯云数据库可极⼤的减少这些维护操作。
本⽂介绍如何将 Gitlab 中的嵌⼊式数据库服务更换为腾讯云数据库 PostgreSQL 服务。

步骤1:安装 GitLab

1. 准备资源
CentOS Linux release 7.6.1810 (Core)。
gitlab-ce 14.9.3 版本。
云服务器⼀台,内存需4GB以上,磁盘需50GB以上。建议 /opt 独⽴挂载⼀个数据盘。
腾讯云数据库 PostgreSQL ⼀个,规格根据⾃身实际情况进⾏配置。可初始选择⼀个规格较小的实例。再根据具体使用进行扩容。版本根据 Gitlab 的版本进行调整选择。
2. 下载 GitLab单击此处 在跳转页面下找到想要安装的 Gitlab 安装包,下载到本地后再上传⾄需要安装 Gitlab 服务的服务器中。
3. 安装 GitLab 使⽤ root ⽤户执⾏下列语句安装 Gitlab,若最后⼀步操作提示存在依赖包未安装,可直接通过 yum 或其他安装⼯具提前安装完成:
curl https://packages.gitlab.com/install/repositories/gitlab/gitlabce/script.rpm.sh > gitlab-ee_install.sh
sh gitlab-ee_install.sh
export EXTERNAL_URL=https://gitlab.example.com
yum install -y curl policycoreutils-python openssh-server cronie
rpm -ivh gitlab-ce-13.10.2-ce.0.el7.x86_64.rpm

步骤2:初始化数据源 PostgreSQL

1. 可使⽤云上数据库服务,如腾讯云数据库 PostgreSQL,要创建腾讯云数据库 PostgreSQL 请参见 创建 PostgreSQL 实例
注意:
创建或安装数据库时需确保数据库版本与 GitLab 版本要对应。否则在初始化 GitLab 时候将提示版本不⼀致,⽆法创建成功。
GitLab 版本
最⼩⽀持的 PostgreSQL 版本
13.0
11
14.0
12
2. 通过客户端⼯具登录⾄腾讯云数据库 PostgreSQL 中。可使⽤ psql ⼯具测试是否可以直接访问数据库,若⽆法访问,请排查⽹络链路和安全组配置。
psql -U <数据库管理员> -p <端口> -d postgres -h <访问地址>
3. ⾸先在数据库中创建⼀个 GitLab 所使⽤的账号,如 gitlab,请注意此账号必须拥有 superuser 权限或者云数据库所给与的管理员权限,如腾讯云的 pg_tencentdb_superuser
create user gitlab login password 'gitlab_****_password#123';
grant gitlab to <当前管理员账号>; grant pg_tencentdb_superuser to gitlab;
4. 然后创建⼀个 gitlab 所管理使⽤的 database:
create database gitlab owner=gitlab ENCODING = 'UTF8';
注意:
在 GitLab 库中必须要能⽀持 pg_trgm、btree_gist、plpgsql 插件,⽆需提前创建,在初始化 GitLab 时候将⾃动创建。但是需要保证能创建成功。

步骤3:修改 GitLab 元数据库为腾讯云数据库 PostgreSQL

1. 登录⾄ GitLab 安装服务器中,找到 gitlab 配置⽂件,默认为:/etc/gitlab/gitlab.rb。默认此⽂件中未配置任何信息,可通过下列命令查看到相关信息:
# cat /etc/gitlab/gitlab.rb |grep -v ^# | grep -v ^$
external_url 'http://gitlab.example.com'
2. 在此⽂件的最后加⼊以下信息,将腾讯云数据库 PostgreSQL 数据源加⼊到 gitlab 中:
## postgresql connect
## 此参数设置为 false 指禁用内置的 postgresql,而使用外部 postgresql 数据源
postgresql['enable'] = false
gitlab_rails['db_adapter'] = "postgresql"
gitlab_rails['db_encoding'] = "utf8"
## 数据库名
gitlab_rails['db_database'] = "gitlab"
gitlab_rails['db_pool'] = 100 ## 数据库用户
gitlab_rails['db_username'] = "gitlab"
## 密码,请根据自身配置修改
gitlab_rails['db_password'] = "gitlab_Test_password#123" ## 访问地址
gitlab_rails['db_host'] = "gz-tdcpg-ep-6kvx6p19.sql.tencentcdb.com" ## 访问端口
gitlab_rails['db_port'] = "25870"
请注意,此处如果配置访问地址为域名时,在初始化时候,将提示: ActiveRecord::ConnectionNotEstablished: could not translate host name "gz-tdcpgep-6kvx6p19.sql.tencentcdb.com " to address: Name or service not known
所以若数据库访问为域名时,请使⽤ ping 命令找到此域名的 IP 地址或者找到能解析此域名的 DNS 服务器,不建议将访问地址的域名直接修改为 IP 地址,因为使⽤域名的场景常伴有数据库后端是做了负载均衡或者⾼可⽤,可直接在服务器中配置 DNS 服务器或者 host。若数据库服务有变化,则可直接修改 host 或者 DNS 服务,避免对 GitLab 服务进⾏修改。

步骤4:初始化与登录使用 GitLab

1. 执⾏以下命令初始化 GitLab,此命令执⾏会消耗⼀段时间,请耐心等待,当提示:gitlab Reconfigured! 时,说明已经初始化完成。
gitlab-ctl reconfigure
2. 执⾏以下命令启动 GitLab。
gitlab-ctl startok
3. 可使⽤以下 URL 访问 GitLab,若⽆法访问通,可能是服务器防⽕墙的限制。 地址示例:http://{可访问的服务器 IP 地址}/users/sign_in 登录界面如下:


4. 初始登录账号为 root,初始密码在初始完成后,会有如下的提示:
Password stored to /etc/gitlab/initial_root_password. This file will be
cleaned up in first reconfigure run after 24 hours.
说明:
可在服务器中的此⽂件中找到初始化密码。完成登录后,请记得修改密码。


此时,GitLab 就安装完成,后续将正式使⽤ GitLab。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈