多数据库
引入于 15.7 版本。
默认情况下,极狐GitLab 使用单个应用程序数据库,称为 main
数据库。
要扩展极狐GitLab,您可以将极狐GitLab 配置为使用多个应用程序数据库。
由于已知问题,使用多数据库配置极狐GitLab 功能处于 Alpha 阶段。
已知问题
- 尚不支持将数据从
main
数据库迁移到ci
数据库。 - 一旦数据迁移到
ci
数据库,您就无法将其迁移回来。
设置多数据库
使用以下方法,为新的极狐GitLab 安装实例设置多个数据库。
目前不支持为现有的极狐GitLab 安装实例进行设置。
在您设置多个数据库后,极狐GitLab 为 CI/CD 功能使用第二个应用程序数据库,称为 ci
数据库。 例如,极狐GitLab 读取和写入 ci
数据库中的 ci_pipelines
表。
main
数据被写入 ci
数据库,反之亦然。源安装实例
-
备份极狐GitLab,以防出现不可预见的问题。
-
停止极狐GitLab:
sudo service gitlab stop
-
打开
config/database.yml
,并在production:
下添加一个ci:
部分。有关新部分的可能值,请参阅config/database.yml.decomposed-postgresql
。修改后,config/database.yml
应如下所示:production: main: # ... ci: adapter: postgresql encoding: unicode database: gitlabhq_production_ci # ...
-
保存
config/database.yml
文件。 -
更新服务文件以将
GITLAB_ALLOW_SEPARATE_CI_DATABASE
环境变量设置为true
。 -
创建
gitlabhq_production_ci
数据库:sudo -u postgres psql -d template1 -c "CREATE DATABASE gitlabhq_production OWNER git;" sudo -u git -H bundle exec rake db:schema:load:ci
-
对
main
数据库中的ci
表进行锁定写入,反之亦然:sudo -u git -H bundle exec rake gitlab:db:lock_writes
-
重启极狐GitLab:
sudo service gitlab restart
Omnibus GitLab 安装实例
-
备份极狐GitLab,以防出现不可预见的问题。
-
停止极狐GitLab:
sudo gitlab-ctl stop
-
编辑
/etc/gitlab/gitlab.rb
并添加以下行:gitlab_rails['env'] = { 'GITLAB_ALLOW_SEPARATE_CI_DATABASE' => 'true' } gitlab_rails['databases']['ci']['enable'] = true gitlab_rails['databases']['ci']['db_database'] = 'gitlabhq_production_ci'
-
保存
/etc/gitlab/gitlab.rb
文件。 -
重新配置极狐GitLab:
sudo gitlab-ctl reconfigure
-
可选。重新配置极狐GitLab 应该会创建
gitlabhq_production_ci
。如果没有,请手动创建gitlabhq_production_ci
:sudo gitlab-ctl start postgresql sudo -u gitlab-psql /opt/gitlab/embedded/bin/psql -h /var/opt/gitlab/postgresql -d template1 -c "CREATE DATABASE gitlabhq_production_ci OWNER gitlab;" sudo gitlab-rake db:schema:load:ci
-
对
main
数据库中的ci
表进行锁定写入,反之亦然:sudo gitlab-ctl start postgresql sudo gitlab-rake gitlab:db:lock_writes
-
重启极狐GitLab:
sudo gitlab-ctl restart