温馨提示×

centos gitlab怎样迁移

小樊
37
2026-09-02 20:17:18
栏目: 智能运维

CentOS 上迁移 GitLab,常见有 同版本迁移跨版本/跨服务器迁移 两种场景。下面按最稳妥、官方推荐的方式给你说明。


一、迁移前准备(非常重要)

1. 查看 GitLab 版本

gitlab-rake gitlab:env:info
# 或
cat /opt/gitlab/version-manifest.txt

目标服务器 GitLab 版本必须 ≥ 源服务器版本


2. 停止 GitLab 服务(源服务器)

gitlab-ctl stop

二、使用官方备份方式迁移(推荐 ✅)

1. 在源服务器创建备份

gitlab-rake gitlab:backup:create

备份文件位置:

/var/opt/gitlab/backups/
# 文件名类似:
1234567890_2024_01_01_gitlab_backup.tar

2. 拷贝备份文件到目标服务器

scp /var/opt/gitlab/backups/*.tar root@目标IP:/var/opt/gitlab/backups/

3. 在目标服务器安装同版本 GitLab

# 示例(CentOS 7)
yum install -y gitlab-ce-<版本号>

⚠️ 不要先初始化数据,直接恢复


4. 恢复备份(目标服务器)

# 修改文件权限
chown git:git /var/opt/gitlab/backups/*.tar

# 恢复
gitlab-rake gitlab:backup:restore BACKUP=1234567890_2024_01_01

恢复时:

  • 会询问是否覆盖数据库 ✅ 输入 yes
  • 会询问是否重建授权 ✅ 输入 yes

5. 重启 GitLab

gitlab-ctl reconfigure
gitlab-ctl restart

三、迁移配置文件(很多人会漏 ❗)

GitLab 备份 不包含配置文件

需要手动拷贝:

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

拷贝到目标服务器相同位置,然后:

gitlab-ctl reconfigure

⚠️ gitlab-secrets.json 不拷贝会导致:

  • CI Token 失效
  • Runner 无法注册
  • 密钥解密失败

四、跨大版本迁移(如 12 → 16)

正确方式:

逐级升级

12 → 13 → 14 → 15 → 16

每一步:

yum update gitlab-ce-<下一版本>
gitlab-ctl reconfigure
gitlab-rake db:migrate

❌ 不支持直接跨多个大版本恢复备份


五、Docker GitLab 迁移(如果你用的是 Docker)

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

恢复同理。


六、验证迁移是否成功

gitlab-rake gitlab:check SANITIZE=true

页面登录后检查:

  • 项目是否完整
  • 用户权限
  • CI / Runner
  • SSH Key

七、常见问题

1. 恢复报错版本不一致

GitLab version mismatch

✅ 必须版本一致或目标更高

2. 页面 502

gitlab-ctl status
gitlab-ctl tail

3. 忘记 admin 密码

gitlab-rake "gitlab:password:reset[root]"

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

  • CentOS 版本(7 / 8)
  • GitLab 版本
  • 是否换服务器 / 换 IP
  • 是否 Docker

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

0