在 Linux 下迁移 GitLab,常见有 整机迁移 / 服务器更换 和 数据迁移 两种场景。下面按最稳妥、官方推荐方式给你讲。
GitLab 版本必须一致
gitlab-rake gitlab:env:info
源机和目标机版本要相同(小版本也要一致)。
备份当前 GitLab(源机)
sudo gitlab-rake gitlab:backup:create
备份文件在:
/var/opt/gitlab/backups/
文件名类似:
1690000000_2023_07_22_gitlab_backup.tar
拷贝以下关键配置(非常重要)
/etc/gitlab/gitlab.rb
/etc/gitlab/gitlab-secrets.json
# 以 CentOS 为例
sudo yum install -y gitlab-ce-<版本号>
安装后 先不要启动服务。
把备份文件传到目标机
scp 源机:/var/opt/gitlab/backups/*.tar /var/opt/gitlab/backups/
停止部分服务
sudo gitlab-ctl stop puma
sudo gitlab-ctl stop sidekiq
恢复备份
sudo gitlab-rake gitlab:backup:restore BACKUP=1690000000_2023_07_22
恢复配置
cp gitlab.rb /etc/gitlab/
cp gitlab-secrets.json /etc/gitlab/
重新配置并启动
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
sudo gitlab-rake gitlab:check SANITIZE=true
访问 Web 页面,确认:
都正常。
| 方式 | 适用场景 | 风险 |
|---|---|---|
| 官方 backup/restore | 最推荐 | 低 |
直接拷贝 /var/opt/gitlab |
同版本同机 | 中 |
| Docker 卷迁移 | 容器部署 | 低 |
| 冷拷贝整盘 | 整机迁移 | 高 |
docker exec -t gitlab gitlab-backup create
docker cp gitlab:/var/opt/gitlab/backups ./backups
再在新机器恢复即可。
如果你愿意,可以告诉我:
我可以给你精确到命令的迁移方案。