温馨提示×

如何迁移CentOS GitLab

小樊
45
2026-07-20 03:50:11
栏目: 智能运维

下面以常见场景给你一个完整、可验证的 CentOS GitLab 迁移方案
我将按 “同机升级 / 跨机迁移 / 版本一致 / 版本升级” 四种情况分别说明,你可以直接对号入座。


一、迁移前必看(非常重要)

✅ 核心原则

GitLab 迁移最安全的方式 = 同版本备份 + 同版本恢复

强烈建议:

  • 源和目标 GitLab 版本一致
  • 确认 CentOS 版本差异(CentOS 7 vs 8 影响依赖)

二、确认当前 GitLab 信息(源服务器)

gitlab-rake gitlab:env:info

重点关注:

  • GitLab version
  • OS version
  • MySQL / PostgreSQL(一般 GitLab 自带 PostgreSQL)

三、推荐迁移方式(标准做法)

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

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

gitlab-rake gitlab:backup:create

备份文件位置:

/var/opt/gitlab/backups/

文件名类似:

1690000000_2024_01_01_gitlab_backup.tar

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

scp /var/opt/gitlab/backups/*.tar root@new_server:/var/opt/gitlab/backups/

3️⃣ 新服务器安装 同版本 GitLab

⚠️ 版本必须一致!

# 示例:CentOS 7
yum install -y curl policycoreutils-python
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | bash
yum install gitlab-ce-16.7.2

查看可用版本:

yum list gitlab-ce --showduplicates

4️⃣ 恢复备份

gitlab-ctl reconfigure
gitlab-ctl stop puma
gitlab-ctl stop sidekiq

gitlab-rake gitlab:backup:restore BACKUP=1690000000_2024_01_01

恢复完成后:

gitlab-ctl restart
gitlab-rake gitlab:check SANITIZE=true

✅ 成功标志:

  • 能登录
  • 仓库、用户、Issue、CI 都在

四、迁移 GitLab 配置文件(不能忘)

1️⃣ 迁移关键配置

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

必须拷贝!否则:

  • CI Runner 失效
  • 登录异常
  • 仓库 push 失败

2️⃣ 恢复后执行

gitlab-ctl reconfigure
gitlab-ctl restart

五、CentOS 特殊注意事项

⚠️ CentOS 7 已 EOL

  • 官方源失效
  • 建议迁移到:
    • Rocky Linux
    • AlmaLinux
    • CentOS Stream

推荐路径:

CentOS 7 GitLab → Rocky Linux 8/9 GitLab

六、跨大版本迁移(升级)

如果你必须升级 GitLab:

✅ 正确顺序

当前版本 → 逐级升级 → 目标版本

例如:

13.x → 14.x → 15.x → 16.x

⚠️ 禁止直接跨 2 个大版本


七、迁移 Docker GitLab(如果有)

docker cp gitlab-data:/var/opt/gitlab/backups .

恢复:

docker run --rm \
  -v gitlab-data:/var/opt/gitlab \
  gitlab/gitlab-ce gitlab-backup restore

八、常见问题排查

❌ 502 错误

gitlab-ctl status
gitlab-ctl restart

❌ 权限错误

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

❌ 登录失败

确认:

/etc/gitlab/gitlab-secrets.json

是否一致


九、迁移检查清单 ✅

  • [ ] GitLab 版本一致
  • [ ] 备份文件完整
  • [ ] gitlab.rb + secrets.json 已迁移
  • [ ] gitlab-ctl reconfigure
  • [ ] 所有仓库、用户、CI 正常

十、我可以继续帮你

你可以直接告诉我:

  1. ✅ 当前 GitLab 版本
  2. ✅ CentOS 版本
  3. ✅ 是否升级 GitLab
  4. ✅ 是否跨服务器

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

0