温馨提示×

linux gitlab怎样迁移数据

小樊
66
2026-10-01 13:25:20
栏目: 智能运维

在 Linux 环境下迁移 GitLab 数据,常见场景有 同版本迁移、跨版本升级迁移、整机迁移、容器迁移。下面按最稳妥、官方推荐的方式给你讲。


一、最推荐方式:使用 GitLab 备份恢复(通用)

适用于:

  • 服务器更换
  • 同版本 / 小版本升级
  • 数据整体迁移

1. 旧服务器备份

# 停止相关服务(可选,保证一致性)
gitlab-ctl stop unicorn
gitlab-ctl stop puma
gitlab-ctl stop sidekiq

# 创建备份
gitlab-rake gitlab:backup:create

备份文件位置:

/var/opt/gitlab/backups/
# 类似:1690000000_2023_07_22_15.11.0_gitlab_backup.tar

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

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

3. 新服务器安装相同版本 GitLab

⚠️ 版本必须一致或兼容

# 查看旧版本
cat /opt/gitlab/version-manifest.txt

安装对应版本(以 Ubuntu 为例):

apt install gitlab-ee=15.11.0-ee.0

4. 恢复数据

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

# 恢复
gitlab-rake gitlab:backup:restore BACKUP=1690000000_2023_07_22_15.11.0

5. 重启并验证

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

二、配置文件单独迁移(很重要)

备份不包含:

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

必须手动拷贝:

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

否则:

  • CI Token 失效
  • Runner 无法注册
  • 加密数据无法解密

三、Docker GitLab 迁移

备份

docker exec -t gitlab gitlab-rake gitlab:backup:create

拷贝

docker cp gitlab:/var/opt/gitlab/backups /本地

恢复

docker cp 备份文件 gitlab:/var/opt/gitlab/backups
docker exec -t gitlab gitlab-rake gitlab:backup:restore BACKUP=xxx

四、直接整机拷贝(不推荐但快)

适用于:

  • 同版本
  • 同架构
  • 紧急情况

拷贝目录:

/var/opt/gitlab
/etc/gitlab
/var/log/gitlab

风险:版本不一致容易崩。


五、常见问题

1. 版本不一致怎么办?

先在新服务器装旧版本 → 恢复 → 再升级 GitLab。

2. 仓库很大很慢?

  • 用 rsync
  • 或只备份重要项目

3. 迁移后页面 500?

gitlab-ctl reconfigure
gitlab-ctl restart

六、总结(最简流程)

旧机:
gitlab-rake gitlab:backup:create
拷贝 backup + gitlab.rb + secrets.json

新机:
装同版本 GitLab
恢复 backup
重启

如果你告诉我:

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

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

0 踩