温馨提示×

如何迁移Linux GitLab数据

小樊
41
2026-07-28 14:22:43
栏目: 智能运维

下面按常见场景给你一个完整可操作的 Linux → Linux GitLab 数据迁移方案。如果你用的是 Omnibus GitLab(最常见),这是最稳妥的方式。


一、迁移前准备

1️⃣ 确认版本一致(非常重要)

源和目标 GitLab 版本必须一致,否则可能失败。

gitlab-rake gitlab:env:info

或:

cat /opt/gitlab/version-manifest.txt

✅ 推荐:

  • 先升级旧服务器到最新小版本
  • 再在新服务器安装相同版本

2️⃣ 在目标服务器安装 GitLab

# Ubuntu / Debian
apt-get install gitlab-ee

# CentOS / RHEL
yum install gitlab-ee

安装后先不要初始化,直接停服务:

gitlab-ctl stop

二、迁移核心数据(推荐方式 ✅)

✅ 方式一:官方备份恢复(最安全)

1️⃣ 在旧服务器创建备份

gitlab-rake gitlab:backup:create

生成文件:

/var/opt/gitlab/backups/XXXXXXXX_gitlab_backup.tar

2️⃣ 拷贝备份到新服务器

scp /var/opt/gitlab/backups/*.tar user@new-server:/var/opt/gitlab/backups/

设置权限:

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

3️⃣ 迁移 GitLab 配置(非常重要)

旧服务器执行:

scp /etc/gitlab/gitlab.rb user@new-server:/etc/gitlab/
scp /etc/gitlab/gitlab-secrets.json user@new-server:/etc/gitlab/

4️⃣ 在新服务器恢复

gitlab-ctl reconfigure
gitlab-ctl start
gitlab-rake gitlab:backup:restore BACKUP=XXXXXXXX

⚠️ 不要加 _gitlab_backup.tar


5️⃣ 完成后检查

gitlab-rake gitlab:check
gitlab-ctl status

三、迁移 SSH / CI / Registry 数据(可选)

1️⃣ SSH 密钥

scp -r /var/opt/gitlab/.ssh new:/var/opt/gitlab/

2️⃣ CI/CD Job 数据(如果很大)

scp -r /var/opt/gitlab/gitlab-ci/builds new:/var/opt/gitlab/gitlab-ci/

3️⃣ Container Registry

scp -r /var/opt/gitlab/registry new:/var/opt/gitlab/

四、方式二:直接拷贝数据目录(不推荐新手)

⚠️ 风险高,仅用于同版本、同架构

rsync -avz /var/opt/gitlab/ new:/var/opt/gitlab/
rsync -avz /etc/gitlab/ new:/etc/gitlab/

然后:

gitlab-ctl reconfigure
gitlab-ctl restart

五、迁移后必做检查 ✅

检查项 命令
服务状态 gitlab-ctl status
仓库访问 浏览器访问 GitLab
SSH 拉取 git clone git@gitlab:xxx.git
CI/CD 检查 Runner
用户登录 LDAP / OAuth

六、常见问题

❌ 版本不一致

backup is for version x, current is y

✅ 解决:升级旧或新服务器到同一版本


❌ 500 错误

gitlab-rake db:migrate
gitlab-ctl restart

❌ 权限错误

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

七、迁移时间估算

数据量 时间
10 GB 10–20 分钟
100 GB 1–2 小时
1 TB+ 建议 rsync + 停机窗口

八、我可以继续帮你

你可以直接告诉我:

  1. GitLab 版本
  2. Omnibus 还是 Docker
  3. 数据量大小
  4. 是否跨公网 / 内网

我可以给你精确到命令级别的迁移方案

0