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