温馨提示×

gitlab linux如何迁移

小樊
55
2026-10-16 04:36:30
栏目: 智能运维

在 Linux 环境下迁移 GitLab(通常指 Omnibus 安装的 GitLab)一般有两种常见场景:

  1. 同版本迁移(整机 / 服务器更换)
  2. 跨版本迁移(升级 + 迁移)

下面以 Omnibus GitLab(最常用) 为例说明标准做法。


一、迁移前准备

1. 确认原 GitLab 信息

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

记录:

  • GitLab 版本
  • 操作系统版本
  • 安装方式(Omnibus / 源码 / Docker)

2. 新服务器准备

  • 相同 Linux 发行版(推荐)
  • 相同 GitLab 大版本(如 16.x → 16.x)
  • 足够磁盘空间
  • 网络通畅

二、标准迁移步骤(推荐:备份恢复方式)

✅ 原服务器操作

1. 停止部分服务(可选但推荐)

gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq

(GitLab 14+ 可省略)

2. 创建备份

gitlab-rake gitlab:backup:create

备份文件位置:

/var/opt/gitlab/backups/
# 文件名类似:
1670000000_2023_12_01_16.0.1_gitlab_backup.tar

3. 拷贝配置文件

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

✅ 新服务器操作

1. 安装相同版本 GitLab

# 以 CentOS 为例
yum install -y gitlab-ee-16.0.1

或参考官方: https://about.gitlab.com/install/

2. 拷贝配置文件

scp root@old-server:/etc/gitlab/gitlab.rb /etc/gitlab/
scp root@old-server:/etc/gitlab/gitlab-secrets.json /etc/gitlab/
gitlab-ctl reconfigure

3. 拷贝备份文件

scp root@old-server:/var/opt/gitlab/backups/*.tar \
    /var/opt/gitlab/backups/

4. 恢复备份

gitlab-ctl stop
gitlab-rake gitlab:backup:restore BACKUP=1670000000_2023_12_01_16.0.1

按提示输入 yes

5. 启动服务

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

三、Docker GitLab 迁移(简要)

备份

docker exec -t gitlab gitlab-backup create

迁移

  • 拷贝:
    • gitlab.rb
    • gitlab-secrets.json
    • backups/*.tar
  • 新容器挂载相同目录
  • 执行 gitlab-backup restore

四、整机迁移(物理 / 云服务器)

如果你是直接换机器:

  • 直接打包 /var/opt/gitlab 和 /etc/gitlab
  • 新机器相同路径解压
  • 安装同版本 GitLab
  • gitlab-ctl reconfigure

⚠️ 不推荐跨大版本直接拷贝数据目录


五、注意事项

✅ 必须保证:

  • GitLab 版本一致
  • gitlab-secrets.json 必须一致(否则 CI / Token 失效)

❌ 不推荐:

  • 直接复制数据库文件
  • 跨大版本迁移不做升级

六、常见错误

问题 解决
secrets 不一致 拷贝 gitlab-secrets.json
版本不匹配 先升级再迁移
权限错误 chown -R git:git /var/opt/gitlab/backups

如果你能告诉我:

  • GitLab 安装方式(Omnibus / Docker)
  • 当前版本
  • 是否跨版本

我可以给你更精确的迁移命令。

0 踩