1. 迁移前准备
- 版本一致性检查:确保新旧服务器的 GitLab 版本完全一致(可通过
sudo gitlab-rake gitlab:env:info查看版本),否则可能导致恢复失败。 备份策略制定:
- 使用
sudo gitlab-rake gitlab:backup:create创建全量备份(包含仓库、数据库、用户权限等数据),备份文件默认存储在/var/opt/gitlab/backups。 手动备份配置文件:
/etc/gitlab/gitlab.rb(主配置文件)/etc/gitlab/gitlab-secrets.json(密钥文件)
避免因配置文件丢失导致恢复失败。
- 使用
2. 新服务器环境配置
安装相同版本的 GitLab:
- 通过 RPM 包或 Docker 安装指定版本(例如
gitlab-ce-12.6.0-ce),确保兼容性。
- 通过 RPM 包或 Docker 安装指定版本(例如
调整存储路径(可选):
- 修改
/etc/gitlab/gitlab.rb中的git_data_dir和backup_path,指定自定义仓库和备份目录。 - 执行
gitlab-ctl reconfigure使配置生效。
- 修改
3. 数据传输与恢复
传输备份文件:
- 将备份文件(如
1631420302_2024_07_12_12.6.0_gitlab_backup.tar)和配置文件复制到新服务器的对应目录(如/var/opt/gitlab/backups和/tmp)。
- 将备份文件(如
停止 GitLab 服务:
- 执行
sudo gitlab-ctl stop停止服务,避免数据写入冲突。
- 执行
恢复配置文件:
- 将旧服务器的
gitlab.rb和gitlab-secrets.json覆盖到新服务器的/etc/gitlab/目录。
- 将旧服务器的
执行数据恢复:
- 进入备份目录:
cd /var/opt/gitlab/backups - 运行
sudo gitlab-backup restore BACKUP=1631420302_2024_07_12_12.6.0(注意去掉文件名中的后缀)。
- 进入备份目录:
4. 验证与启动
重新加载配置并启动服务:
- 执行
sudo gitlab-ctl reconfigure和sudo gitlab-ctl start启动服务。
- 执行
验证数据完整性:
- 检查用户、项目、分支、合并请求等数据是否完整。
- 测试 CI/CD 流水线、SSH/HTTP 克隆功能是否正常。
5. 迁移后维护
权限与安全设置:
- 检查目录权限(如
/var/opt/gitlab)是否匹配,避免因权限问题导致服务异常。 - 配置防火墙、SSL 证书等安全措施。
- 检查目录权限(如
定时备份与监控:
- 设置 Cron 定时任务自动备份,例如每天凌晨执行备份。
- 使用监控工具(如 Prometheus)跟踪服务器性能和日志。
注意事项
- 软链接与目录迁移:若需迁移
/var/opt/gitlab到其他路径,建议使用软链接或直接修改配置文件,而非手动移动目录。 - Docker 环境迁移:若使用 Docker,需确保容器卷挂载路径与备份恢复路径一致。
通过以上步骤,可实现 GitLab 数据的安全迁移,确保业务连续性和数据完整性。具体操作细节可参考各来源文档。