在 Debian 上迁移 GitLab,常见有 同版本迁移 / 跨版本升级迁移 / 整机迁移 / 容器迁移 几种场景。下面给你一套最稳妥、官方推荐的做法(基于 Omnibus 安装)。
在源服务器和目标服务器上执行:
cat /opt/gitlab/version-manifest.txt | head -1
# 或
gitlab-rake gitlab:env:info
✅ 强烈建议:源和目标 GitLab 版本一致
(大版本不一致容易出坑)
gitlab-rake gitlab:backup:create
备份文件在:
/var/opt/gitlab/backups/xxxxxx_gitlab_backup.tar
不包含
gitlab.rb和gitlab-secrets.json
scp /etc/gitlab/gitlab.rb root@目标IP:/etc/gitlab/
scp /etc/gitlab/gitlab-secrets.json root@目标IP:/etc/gitlab/
scp /var/opt/gitlab/backups/*.tar root@目标IP:/var/opt/gitlab/backups/
⚠️ gitlab-secrets.json 不拷贝会导致:
apt-get install gitlab-ee=版本号
# 或 gitlab-ce
安装后:
gitlab-ctl reconfigure
gitlab-ctl stop puma
gitlab-ctl stop sidekiq
gitlab-rake gitlab:backup:restore BACKUP=备份时间戳
按提示输入 yes
gitlab-ctl start
gitlab-rake gitlab:check SANITIZE=true
适用于:
gitlab-ctl stop
/var/opt/gitlab
/etc/gitlab
/var/log/gitlab
gitlab-ctl reconfigure
gitlab-ctl start
docker exec -t gitlab gitlab-backup create
docker cp gitlab:/var/opt/gitlab/backups ./backups
再在目标 Docker 恢复即可。
解决:先升级源或目标到同版本
gitlab-ctl restart
重新注册 Runner
✅ 最稳妥:
同版本 + 备份恢复 + 拷贝 secrets
如果你愿意,可以告诉我:
我可以给你精确命令。