温馨提示×

如何在Linux迁移GitLab

小樊
39
2026-08-13 05:20:54
栏目: 智能运维

在 Linux 上迁移 GitLab,常见场景有 同机迁移、跨服务器迁移、版本升级迁移。下面我按最通用、最稳妥的方式给你一个完整流程,适用于 Omnibus 版 GitLab(官方推荐)


一、迁移前准备

1️⃣ 确认 GitLab 版本(源 & 目标必须一致或兼容)

gitlab-rake gitlab:env:info

cat /opt/gitlab/version-manifest.txt

强烈建议:源和目标 GitLab 版本一致


2️⃣ 停止 GitLab 服务(源服务器)

gitlab-ctl stop

二、备份 GitLab(源服务器)

1️⃣ 创建完整备份

gitlab-rake gitlab:backup:create

备份文件默认在:

/var/opt/gitlab/backups/

文件名类似:

1234567890_2026_01_21_gitlab_backup.tar

2️⃣ 备份配置文件(非常重要)

/etc/gitlab/gitlab.rb
/etc/gitlab/gitlab-secrets.json

建议打包:

tar czvf gitlab-config.tar.gz /etc/gitlab

三、传输备份文件到新服务器

方式一:scp

scp /var/opt/gitlab/backups/*.tar root@new-server:/var/opt/gitlab/backups/
scp gitlab-config.tar.gz root@new-server:/tmp/

方式二:rsync

rsync -avz /var/opt/gitlab/backups/*.tar new-server:/var/opt/gitlab/backups/

四、在新服务器安装 GitLab

1️⃣ 安装相同版本 GitLab

(以 Ubuntu / Debian 为例)

apt-get update
apt-get install -y curl openssh-server
curl -fsSL https://packages.gitlab.com/gpg.key | gpg --dearmor > /usr/share/keyrings/gitlab.gpg
echo "deb [signed-by=/usr/share/keyrings/gitlab.gpg] https://packages.gitlab.com/gitlab/gitlab-ee/ubuntu $(lsb_release -cs) main" \
> /etc/apt/sources.list.d/gitlab_gitlab-ee.list
apt-get update
apt-get install gitlab-ee=16.7.2-ee.0

⚠️ 版本号必须和源一致


2️⃣ 恢复配置文件

tar xzvf /tmp/gitlab-config.tar.gz -C /
gitlab-ctl reconfigure

五、恢复 GitLab 数据(新服务器)

1️⃣ 修改备份文件权限

chown git.git /var/opt/gitlab/backups/*.tar

2️⃣ 停止部分服务

gitlab-ctl stop puma
gitlab-ctl stop sidekiq

3️⃣ 执行恢复

gitlab-rake gitlab:backup:restore BACKUP=1234567890_2026_01_21

只写文件名前缀,不要 .tar


4️⃣ 重新配置并启动

gitlab-ctl reconfigure
gitlab-ctl restart

六、验证迁移是否成功

gitlab-rake gitlab:check SANITIZE=true

浏览器访问:

http://<新服务器IP>

✅ 登录
✅ 仓库
✅ CI/CD
✅ 用户权限


七、常见问题

❌ 版本不一致

backup is from GitLab 16.3, current is 16.7

✅ 解决:安装相同版本


❌ 权限错误

chown -R git.git /var/opt/gitlab/backups

❌ SSH Key 失效

恢复 /etc/gitlab/gitlab-secrets.json 后必须:

gitlab-ctl reconfigure

八、Docker / 源码版 GitLab 迁移(简要)

Docker

docker exec -t gitlab gitlab-backup create
docker cp gitlab:/var/opt/gitlab/backups /backup

源码版

sudo -u git bundle exec rake gitlab:backup:create RAILS_ENV=production

九、迁移总结(推荐方案)

最稳妥

同版本 + 官方备份 + 配置文件恢复

适用场景

  • 服务器更换
  • 机房迁移
  • 系统重装
  • GitLab 升级前备份

如果你愿意,可以告诉我:

  • ✅ GitLab 版本
  • ✅ 是否 Docker
  • ✅ 是否跨系统(CentOS → Ubuntu)
  • ✅ 数据量大小

我可以给你 定制迁移方案 + 零停机方案

0