大家好!
在本文中,我们将GitLab数据库从与GitLab一起安装的内部PostgreSQL迁移到已经安装在另一台服务器上的外部PostgreSQL。

注意
保证所有操作均可在CentOS 7.7.1908,PostgreSQL 12和GitLab 12.4.2-ee.0上执行。
初步准备
我们将提前做三件事:1.在PostgreSQL服务器上,向防火墙添加一条规则,该规则允许传入到PostgreSQL 5432 / TCP端口的连接。
就我而言:firewall-cmd --add-service=postgresql --zone=internal --permanent success firewall-cmd --reload success
2.在同一位置,但在postgresql.conf文件中,允许网络接口接受来自外部的传入连接。 打开postgresql.conf文件,找到注释掉的行“
#listen_addresses ='localhost' ”,然后在其下面添加行。 其中10.0.0.2是接口的地址。
就我而言: vi /var/lib/pgsql/12/data/postgresql.conf
3.由于GitLab服务器将连接到外部数据库,因此必须在PostgreSQL服务器上的pg_hba.conf文件中启用它。 我的GitLab服务器的地址是10.0.0.4。
打开pg_hba.conf文件,并在其中添加以下行: host all gitlab 10.0.0.4/24 md5
它看起来像这样:
最后,重新启动postgresql服务: systemctl restart postgresql-12.service
导出GitLab数据库
让我们在GitLab服务器上执行备份数据库的操作: sudo -u gitlab-psql /opt/gitlab/embedded/bin/pg_dumpall -U gitlab-psql --host=/var/opt/gitlab/postgresql > /tmp/internal-gitlab.sql
备份出现在/ tmp中: ls -lh total 836K -rw-r--r--. 1 root root 836K Nov 18 12:59 internal-gitlab.sql
将此副本复制到PostgreSQL服务器: scp /tmp/internal-gitlab.sql 10.0.0.2:/tmp/ internal-gitlab.sql 100% 835KB 50.0MB/s 00:00
将“ internal-gitlab.sql”导入PostgreSQL
将数据库导入PostgreSQL: sudo -u postgres psql -f /tmp/internal-gitlab.sql
检查数据库现在是否在PostgreSQL中: sudo -u postgres psql -l
应显示以下行: gitlabhq_production | gitlab | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
配置GitLab
将数据库导入PostgreSQL后,创建了gitlab用户。 您需要更改该用户的密码。
修改密码: sudo -u postgres psql -c "ALTER USER gitlab ENCRYPTED PASSWORD '' VALID UNTIL 'infinity';" Password for user postgres: ALTER ROLE
然后在GitLab服务器上的配置文件/etc/gitlab/gitlab.rb中,我们将指定外部PostgreSQL的所有数据。
制作gitlab.rb文件的备份副本: cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb.orig
现在,在gitlab.rb文件的末尾,添加以下行:
保存文件/etc/gitlab/gitlab.rb并重新配置GitLab: gitlab-ctl reconfigure && gitlab-ctl restart
仅此而已:)
一个很大的要求。 如果减号,请在注释中写下原因。