温馨提示×

CentOS如何迁移GitLab

小樊
41
2026-07-08 09:08:08
栏目: 智能运维

下面以 CentOS 系统迁移 GitLab 为例,给你一套完整、可操作的迁移方案(适用于跨服务器、同版本或相近版本迁移)。


一、迁移前准备

1️⃣ 确认当前 GitLab 版本

gitlab-rake gitlab:env:info
# 或
rpm -qa | grep gitlab

强烈建议:源服务器和目标服务器 GitLab 版本一致


2️⃣ 在目标服务器安装相同版本 GitLab

示例(CentOS 7)

cat > /etc/yum.repos.d/gitlab.repo <<EOF
[gitlab]
name=gitlab
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/
gpgcheck=0
enabled=1
EOF

yum install -y gitlab-ce-x.x.x

安装完成后 先不要启动

gitlab-ctl stop

二、迁移 GitLab 数据(核心步骤)

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


三、在源服务器创建备份

1️⃣ 创建完整备份

gitlab-rake gitlab:backup:create

备份文件位置:

/var/opt/gitlab/backups/

文件名类似:

1234567890_2026_01_21_gitlab_backup.tar

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

scp /var/opt/gitlab/backups/1234567890_2026_01_21_gitlab_backup.tar root@目标服务器IP:/var/opt/gitlab/backups/

四、迁移关键配置文件(非常重要)

⚠️ 不迁移以下文件,项目、用户、Token 可能异常

1️⃣ 源服务器打包配置

tar czf gitlab-config.tar.gz \
  /etc/gitlab/gitlab.rb \
  /etc/gitlab/gitlab-secrets.json

2️⃣ 拷贝到目标服务器

scp gitlab-config.tar.gz root@目标服务器IP:/tmp/

3️⃣ 目标服务器恢复配置

tar xzf /tmp/gitlab-config.tar.gz -C /

五、在目标服务器恢复 GitLab

1️⃣ 修改 gitlab.rb(如有 IP / 域名变更)

vi /etc/gitlab/gitlab.rb

例如:

external_url 'http://gitlab.newdomain.com'

2️⃣ 重新加载配置

gitlab-ctl reconfigure

3️⃣ 恢复备份

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

⚠️ 不写 _gitlab_backup.tar

恢复时会提示:

  • 覆盖数据库?✅ yes
  • 覆盖仓库?✅ yes

4️⃣ 启动 GitLab

gitlab-ctl start

六、迁移后检查

1️⃣ 检查服务状态

gitlab-ctl status

2️⃣ 检查数据完整性

gitlab-rake gitlab:check

3️⃣ 登录 Web 验证

  • 用户
  • 项目
  • CI/CD
  • Runner

七、常见问题与解决

❌ 数据库版本不一致

PG::Error

✅ 解决:

  • 源和目标 GitLab 版本必须一致
  • 或逐步升级

❌ Runner 无法连接

gitlab-runner verify

✅ 解决:

  • 重新注册 Runner
  • 或复制 /etc/gitlab-runner/config.toml

❌ SSH Key 失效

✅ 确认:

ls /var/opt/gitlab/.ssh

八、可选:整机迁移(不推荐生产)

方式 说明
rsync 全盘复制 风险高
虚拟机快照 可行
Docker 版 GitLab 迁移更简单

九、迁移总结(推荐流程)

最稳妥方案

相同版本 GitLab
→ 官方 backup
→ 迁移 gitlab.rb + secrets.json
→ restore

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

  • ✅ GitLab 版本
  • ✅ CentOS 版本
  • ✅ 是否更换 IP / 域名
  • ✅ 是否使用 Docker

我可以 按你的环境给你定制迁移方案

0