温馨提示×

linux gitlab怎么迁移数据

小樊
41
2026-09-25 18:12:02
栏目: 智能运维

在 Linux 服务器上迁移 GitLab 数据,常见场景有:

  • 同版本 GitLab:服务器迁移 / 重装系统
  • 跨版本升级迁移
  • 容器版 ↔ 源码版 / Omnibus 版

下面按最常用、最稳妥的方式讲。


一、迁移前准备(重要)

1. 确认 GitLab 版本一致(强烈建议)

gitlab-rake gitlab:env:info

源和目标 GitLab 大版本必须一致(如都是 16.x)

2. 停止相关服务(避免数据写入)

gitlab-ctl stop unicorn
gitlab-ctl stop puma
gitlab-ctl stop sidekiq

(老版本可能是 unicorn,新版本是 puma)


二、官方推荐方式:备份 + 恢复(最安全)

✅ 1. 在源服务器备份

gitlab-rake gitlab:backup:create

备份文件在:

/var/opt/gitlab/backups/

文件名类似:

1234567890_2024_01_01_gitlab_backup.tar

该备份 不包含:

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

✅ 2. 拷贝以下文件到新服务器

/etc/gitlab/gitlab.rb
/etc/gitlab/gitlab-secrets.json
/var/opt/gitlab/backups/*.tar

示例:

scp /var/opt/gitlab/backups/*.tar root@new-server:/var/opt/gitlab/backups/
scp /etc/gitlab/gitlab.rb root@new-server:/etc/gitlab/
scp /etc/gitlab/gitlab-secrets.json root@new-server:/etc/gitlab/

三、在新服务器恢复

1. 安装同版本 GitLab

# CentOS / Rocky / Alma
yum install gitlab-ee

# Ubuntu / Debian
apt install gitlab-ee

2. 修改配置文件

vi /etc/gitlab/gitlab.rb

确保:

external_url 'http://gitlab.example.com'
gitlab-ctl reconfigure

3. 恢复备份

gitlab-ctl stop puma
gitlab-ctl stop sidekiq

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

恢复完成后:

gitlab-ctl restart

四、验证迁移是否成功

gitlab-rake gitlab:check SANITIZE=true

浏览器访问 GitLab,确认:

  • 用户
  • 项目
  • CI/CD
  • SSH Key 都正常

五、可选:直接拷贝数据目录(不推荐)

仅限 完全同版本 + 同路径:

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

然后:

gitlab-ctl reconfigure
gitlab-ctl restart

⚠️ 容易出权限 / 版本问题


六、Docker GitLab 迁移(补充)

如果是容器:

docker exec -t gitlab gitlab-backup create

挂载卷直接拷贝:

/var/opt/gitlab
/etc/gitlab

七、常见坑

❌ 版本不一致 → 恢复失败
❌ 忘记 gitlab-secrets.json → CI/Token 失效
❌ 没停服务 → 数据不一致


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

  • GitLab 版本
  • 是否 Docker
  • 是否跨大版本

我可以给你精确命令。

0 踩