在 CentOS 上迁移 GitLab 数据,常见且官方推荐的方式是使用 GitLab 备份与恢复机制。下面按最稳妥、最常用的流程给你说明,适用于 GitLab CE / EE(Omnibus 安装)。
✅ 源服务器和目标服务器 GitLab 版本必须一致
gitlab-rake gitlab:env:info
如果不一致,需要先升级/降级到相同版本。
适用于 Omnibus GitLab(最常见):
rpm -qa | grep gitlab
如果你是用 Docker 或源码安装,流程会不同。
gitlab-ctl stop puma
gitlab-ctl stop sidekiq
只停必要服务,不一定要全停
gitlab-rake gitlab:backup:create
✅ 成功后备份文件在:
/var/opt/gitlab/backups/
文件名类似:
1690000000_2024_01_01_gitlab_backup.tar
GitLab 备份 不包含 配置文件和 SSH key:
cp /etc/gitlab/gitlab.rb /root/gitlab.rb.bak
cp -r /etc/gitlab/ssl /root/ssl.bak
cp /etc/gitlab/gitlab-secrets.json /root/gitlab-secrets.json.bak
scp /var/opt/gitlab/backups/1690000000_2024_01_01_gitlab_backup.tar root@新服务器IP:/var/opt/gitlab/backups/
scp /root/gitlab.rb.bak root@新服务器IP:/etc/gitlab/gitlab.rb
scp /root/gitlab-secrets.json.bak root@新服务器IP:/etc/gitlab/gitlab-secrets.json
yum install -y curl policycoreutils-python openssh-server
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | bash
yum install gitlab-ee-版本号
或 CE:
yum install gitlab-ce-版本号
cp /root/gitlab.rb.bak /etc/gitlab/gitlab.rb
cp /root/gitlab-secrets.json.bak /etc/gitlab/gitlab-secrets.json
然后重新配置:
gitlab-ctl reconfigure
gitlab-ctl stop puma
gitlab-ctl stop sidekiq
gitlab-rake gitlab:backup:restore BACKUP=1690000000_2024_01_01
⚠️ 注意:
_gitlab_backup.targitlab-ctl start
gitlab-rake gitlab:check SANITIZE=true
浏览器访问 GitLab,确认:
Backup is corrupted or version mismatch
✅ 解决:统一版本
chown git:git /var/opt/gitlab/backups/*
确认:
/etc/gitlab/gitlab-secrets.json 已恢复gitlab-ctl reconfigure| 场景 | 建议 |
|---|---|
| 同版本迁移 | ✅ 官方备份恢复 |
| 跨版本 | ⚠️ 先升级再迁移 |
| 整机迁移 | ✅ 备份 + 配置文件 |
| Docker → CentOS | ❌ 不建议,需导出数据 |
如果你愿意,可以告诉我:
我可以给你精确命令,避免踩坑。