gitlab16.2迁移记录
核心的原则是:目标服务器的 GitLab 版本必须与源服务器的完全一致。
1. 查询 GitLab 版本
通过以下三种方式查询:
1.0网页端 (最直观): 登录 GitLab 后,点击右上角的 Help (?) 图标,通常会直接显示版本号。或者访问
https://your-gitlab-url/help。1.1命令行 (最准确): 在服务器上执行以下命令:
1 | sudo gitlab-rake gitlab:env:info |
- 1.2查看版本文件:
1 | cat /opt/gitlab/version-manifest.txt | head -n 1 |
2. GitLab 迁移流程 (备份与恢复法)
2.1准备工作
- 安装环境: 在新服务器上安装与旧服务器版本完全相同的 GitLab。
注意:如果旧版是
15.1.0,新版也必须先安装15.1.0,等迁移完成后再考虑升级。
- 停止服务: 为防止迁移期间产生新数据,建议在备份前停止旧服务器的写入。
2.2在旧服务器上备份
执行备份命令:
1 | gitlab-backup create |
- 备份文件默认保存在
/var/opt/gitlab/backups/目录下。 - 文件名格式通常为:
1708953600_2024_02_26_15.1.0_gitlab_backup.tar。
2.3传输备份与配置文件
除了备份文件,你还必须手动备份并传输以下两个核心配置文件(极其重要,否则无法解密数据):
/etc/gitlab/gitlab.rb(配置文件)/etc/gitlab/gitlab-secrets.json(密钥文件)/etc/gitlab/trusted-certs-directory(如果有自定义证书)
将上述三个文件通过 scp 等工具传输到新服务器。
2.4在新服务器上恢复
- 放置备份: 将
.tar备份文件移动到新服务器的/var/opt/gitlab/backups/目录下,并赋予权限:
1 | chown git:git /var/opt/gitlab/backups/xxx_gitlab_backup.tar |
- 停止影响恢复的服务:
1 | sudo gitlab-ctl stop unicorn |
- 执行恢复:
1 | # 注意:BACKUP 参数只需填文件名中时间戳到版本号的部分 |
- 覆盖配置文件: 将旧服务器的
gitlab.rb和gitlab-secrets.json覆盖到新服务器的/etc/gitlab/。 - 重载并重启:
1 | gitlab-ctl reconfigure |
6.检查系统状况
gitlab-rake gitlab:check SANITIZE=true
3. 注意事项
| 检查项 | 说明 |
|---|---|
| 版本一致性 | 哪怕是大版本下的补丁号(如 15.1.1 与 15.1.2)不同,恢复也可能失败。 |
| 存储空间 | 确保新服务器的磁盘空间至少是备份文件大小的两倍(解压需要空间)。 |
| GitLab 类型 | 企业版 (EE) 和社区版 (CE) 之间迁移需注意兼容性,建议 CE 迁 CE,EE 迁 EE。 |