GitLab的数据库用的是PostgreSQL,之前由于阿里云RDS不支持PostgreSQL,只能将GitLab的数据库部署在云服务器上。
6月1日得知阿里云推出了PostgreSQL RDS,于是立马将GitLab的数据库迁移至PostgreSQL RDS。
下面分享一下迁移的主要操作步骤:
1)在GitLab服务器上备份GitLab数据库
操作命令:
sudo gitlab-rake gitlab:backup:create SKIP=db
注:这个命令原本是只备份数据库,但实际运行时也会备份repositories,可以在完成数据库备份时,ctrl+C直接退出。
数据库备份成功后,会在 /var/opt/gitlab/backups/db 文件夹中看到 database.sql 文件,导入时只需将这个文件导入到阿里云RDS。
2)在阿里云RDS中创建GitLab的数据库帐户与数据库
在阿里云RDS控制台首页点击“登录数据库”,进入idb.rds.aliyun.com,选择对应的PostgreSQL实例。
a)创建2个帐户:gitlab, gitlab-psql
b)创建gitlabhq_production数据库,所有者为gitlab。
3) 在GitLab服务器上进行导入操作
a) cd /var/opt/gitlab/backups/db
b) psql -h [RDS实例网址] -p 3433 -d gitlabhq_production -U gitlab -f database.sql
导入成功时的控制台输出:
...
CREATE INDEX
psql:database.sql:5084: WARNING: no privileges could be revoked for "public"
REVOKE
psql:database.sql:5085: WARNING: no privileges could be revoked for "public"
REVOKE
psql:database.sql:5086: WARNING: no privileges were granted for "public"
GRANT
psql:database.sql:5087: WARNING: no privileges were granted for "public"
GRANT
4)修改GitLab的配置
a)打开配置文件
vi /etc/gitlab/gitlab.rb
b)修改如下设置
设置PostgreSQL RDS数据库连接
gitlab_rails['db_username'] = "gitlab"
gitlab_rails['db_password'] = 帐户密码
gitlab_rails['db_host'] = RDS实例网址
gitlab_rails['db_port'] = 3433
禁用本地PostgreSQL
postgresql['enable'] = false
启用新设置
gitlab-ctl reconfigure