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 数据的安全迁移,确保业务连续性和数据完整性。具体操作细节可参考各来源文档。