在 CentOS 上部署的 GitLab 容灾,一般从备份恢复、主从复制、高可用架构、异地容灾几个层面来做。下面按“实用程度”从简单到复杂说明。
gitlab-rake gitlab:backup:create
默认备份目录:
/var/opt/gitlab/backups
crontab -e
示例(每天 2 点):
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create
rsync 到异地服务器rsync -az /var/opt/gitlab/backups user@backup-server:/gitlab-backup/
✅ 适合:小团队、成本敏感
GitLab 备份不包含配置文件,需单独备份:
/etc/gitlab/gitlab.rb
/etc/gitlab/gitlab-secrets.json
恢复步骤:
# 安装同版本 GitLab
yum install gitlab-ee
# 恢复配置
cp gitlab.rb gitlab-secrets.json /etc/gitlab/
gitlab-ctl reconfigure
# 恢复数据
gitlab-rake gitlab:backup:restore BACKUP=时间戳
✅ 适合:单数据中心容灾
CentOS 主 GitLab → 异地 CentOS 从 GitLab
✅ 适合:中大型团队、跨地域
主库 → 备库(hot standby)
rsyncgit mirrorgit clone --mirror git@primary:group/repo.git
git push --mirror git@backup:group/repo.git
rsync -az /var/opt/gitlab/gitlab-rails/uploads backup:/var/opt/gitlab/gitlab-rails/uploads
⚠️ 非实时,可能丢数据
✅ 适合:不想买 EE
⚠️ 成本高,运维复杂
✅ 适合:核心研发平台
定期做:
| 规模 | 推荐方案 |
|---|---|
| 小团队 | 每日备份 + 异地 rsync |
| 中型 | 备份 + 配置同步 + 演练 |
| 大型 | GitLab Geo |
| 核心平台 | Geo + HA |
如果你愿意,可以告诉我:
我可以给你一套可直接落地的 CentOS 容灾方案。