下面给你一套从 CentOS 服务器迁移 GitLab 的完整方案,适用于 GitLab CE / EE(Omnibus 安装),这是最常见、最稳妥的方式。
新旧服务器 GitLab 版本必须一致,否则可能升级失败。
gitlab-rake gitlab:env:info
# 或
rpm -qa | grep gitlab
✅ 如果版本不一致,先在新服务器安装同版本 GitLab,再迁移。
gitlab-ctl stop puma
gitlab-ctl stop sidekiq
如果你不怕数据变化,也可以不停止(不推荐生产环境)
gitlab-backup create
备份文件位置:
/var/opt/gitlab/backups/
文件名类似:
1690000000_2024_01_01_gitlab_backup.tar
scp /var/opt/gitlab/backups/1690000000_2024_01_01_gitlab_backup.tar root@新服务器IP:/var/opt/gitlab/backups/
yum install -y curl policycoreutils openssh-server
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | bash
yum install gitlab-ce-版本号 -y
或指定版本:
yum install gitlab-ce-16.7.2-ce.0.el7.x86_64 -y
vi /etc/gitlab/gitlab.rb
常见修改:
external_url 'http://gitlab.example.com'
然后:
gitlab-ctl reconfigure
chown git.git /var/opt/gitlab/backups/1690000000_2024_01_01_gitlab_backup.tar
gitlab-backup restore BACKUP=1690000000_2024_01_01
⚠️ 注意:不要加 .tar
旧服务器拷贝:
/etc/gitlab/gitlab.rb
/etc/gitlab/gitlab-secrets.json
新服务器覆盖后执行:
gitlab-ctl reconfigure
gitlab-ctl restart
gitlab-rake gitlab:check SANITIZE=true
浏览器访问 GitLab,确认:
cat /etc/gitlab-runner/config.toml
gitlab-runner register
backup is from a different GitLab version
✅ 解决办法:安装相同版本
chown -R git.git /var/opt/gitlab/backups
gitlab-ctl status
gitlab-ctl restart
| 方式 | 适用场景 | 推荐 |
|---|---|---|
| 官方 backup | 标准迁移 | ✅✅✅ |
| rsync 整个目录 | 同版本、同系统 | ✅ |
| Docker 迁移 | 容器环境 | ✅ |
| 单独仓库迁移 | 少量项目 | ❌ |
你可以直接告诉我:
我可以给你 精确到命令的迁移方案 ✅