Rocky Linux 9.2 GitLab的备份和恢复 16.0.0

本文将介绍 Rocky Linux 9.2 中通过 Yum 安装的 Omnibus GitLab 的备份和恢复。对此,官方有十分详尽的介绍,也推荐你先看完官方文档,才能对 Gitlab 的备份和恢复有更好理解。这里主要针对普通 Gitlab 服务器的迁移情景,作精简概括,并列出需要注意的问题。
备份
执行备份前请先结束项目中的所有 pipeline 工作。以复制临时数据文件的策略来备份:
sudo gitlab-backup create STRATEGY=copy
其中备份的内容包括:
db(数据库)
uploads(附件)
repositories(Git 仓库数据)
builds(CI 作业输出日志)
artifacts(CI 工作工件)
lfs(LFS 对象)
registry(容器注册表图像)
pages(页面内容)
备份文件会保存到默认的 /var/opt/gitlab/backups 路径上,并以约定的时间戳格式作为文件名,它包含时间戳、日期、Gitlab 版本等信息,如:
1586605881_2020_04_11_16.0.0_gitlab_backup.tar
在执行备份命令成功后,会提示备份配置文件。它们至少包括:
/etc/gitlab/gitlab-secrets.json
/etc/gitlab/gitlab.rb
因为 gitlab-secrets.json 包含数据库加密密钥,CI/CD 变量以及用于双因素身份验证的变量。出于安全因素考虑,这些加密信息被单独保存到该文件。
恢复
官方多次强调,要确保备份和恢复时使用的是同一版本的 Gitlab。
将备份文件拷贝到新 Gitlab 服务器的备份目录,并设置文件属主为 git:
chown git:git /var/opt/gitlab/backups/1586605881_2020_04_11_12.9.2-ee_gitlab_backup.tar
停止连接到数据库的进程,保持其余的 GitLab 进程运行:
gitlab-ctl stop unicorn
gitlab-ctl stop puma
gitlab-ctl stop sidekiq
再检查一下:
gitlab-ctl status
指定要还原的备份文件时间戳标记,执行恢复操作:
gitlab-backup restore BACKUP=1586605881_2020_04_11_12.9.2-ee
将备份的配置文件覆盖到 /etc/gitlab 目录下,并修改 EXTERNAL_URL 等配置信息。
重载配置,重启 GitLab:
gitlab-ctl reconfigure
gitlab-ctl restart
检查 GitLab:
gitlab-rake gitlab:check SANITIZE=true
到此为止,Gitlab 的备份和恢复步骤已经完成,它将恢复所有代码仓库、用户群组、用户密钥等内容。