gitlab16.2迁移记录

核心的原则是:目标服务器的 GitLab 版本必须与源服务器的完全一致。

1. 查询 GitLab 版本

通过以下三种方式查询:

  • 1.0网页端 (最直观): 登录 GitLab 后,点击右上角的 Help (?) 图标,通常会直接显示版本号。或者访问 https://your-gitlab-url/help

  • 1.1命令行 (最准确): 在服务器上执行以下命令:

1
2
sudo gitlab-rake gitlab:env:info

  • 1.2查看版本文件:
1
2
cat /opt/gitlab/version-manifest.txt | head -n 1


2. GitLab 迁移流程 (备份与恢复法)

2.1准备工作

  1. 安装环境: 在新服务器上安装与旧服务器版本完全相同的 GitLab。

注意:如果旧版是 15.1.0,新版也必须先安装 15.1.0,等迁移完成后再考虑升级。

  1. 停止服务: 为防止迁移期间产生新数据,建议在备份前停止旧服务器的写入。

2.2在旧服务器上备份

执行备份命令:

1
gitlab-backup create
  • 备份文件默认保存在 /var/opt/gitlab/backups/ 目录下。
  • 文件名格式通常为:1708953600_2024_02_26_15.1.0_gitlab_backup.tar

2.3传输备份与配置文件

除了备份文件,你还必须手动备份并传输以下两个核心配置文件(极其重要,否则无法解密数据):

  1. /etc/gitlab/gitlab.rb (配置文件)
  2. /etc/gitlab/gitlab-secrets.json (密钥文件)
  3. /etc/gitlab/trusted-certs-directory(如果有自定义证书)

将上述三个文件通过 scp 等工具传输到新服务器。

2.4在新服务器上恢复

  1. 放置备份:.tar 备份文件移动到新服务器的 /var/opt/gitlab/backups/ 目录下,并赋予权限:
1
chown git:git /var/opt/gitlab/backups/xxx_gitlab_backup.tar
  1. 停止影响恢复的服务:
1
2
3
4
sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
# 如果是较新版本,unicorn 换成 puma
gitlab-ctl stop puma
  1. 执行恢复:
1
2
# 注意:BACKUP 参数只需填文件名中时间戳到版本号的部分
sudo gitlab-rake gitlab:backup:restore BACKUP=1708953600_2024_02_26_15.1.0
  1. 覆盖配置文件: 将旧服务器的 gitlab.rbgitlab-secrets.json 覆盖到新服务器的 /etc/gitlab/
  2. 重载并重启:
1
2
gitlab-ctl reconfigure
gitlab-ctl restart

6.检查系统状况

gitlab-rake gitlab:check SANITIZE=true

3. 注意事项

检查项 说明
版本一致性 哪怕是大版本下的补丁号(如 15.1.1 与 15.1.2)不同,恢复也可能失败。
存储空间 确保新服务器的磁盘空间至少是备份文件大小的两倍(解压需要空间)。
GitLab 类型 企业版 (EE) 和社区版 (CE) 之间迁移需注意兼容性,建议 CE 迁 CE,EE 迁 EE。