Debian上GitLab如何迁移
导读:Debian 上 GitLab 迁移实操指南 一 迁移方案总览 完整实例迁移:使用 GitLab 内置备份工具在旧实例生成备份,在新实例恢复,适合一次性整体搬迁,包含仓库、数据库、上传文件等。要求新旧实例版本尽量一致,以减少兼容性问题。备...
Debian 上 GitLab 迁移实操指南
一 迁移方案总览
- 完整实例迁移:使用 GitLab 内置备份工具在旧实例生成备份,在新实例恢复,适合一次性整体搬迁,包含仓库、数据库、上传文件等。要求新旧实例版本尽量一致,以减少兼容性问题。备份默认位于 /var/opt/gitlab/backups。
- 项目级迁移:逐项目用 git push --mirror 将仓库与引用完整镜像到新实例,适合只迁移部分项目或跨实例整理。
- 混合策略:大规模实例先完整迁移,再按需用项目级迁移补齐或调整结构。
二 完整实例迁移步骤
- 准备与版本对齐
- 检查旧实例版本:cat /opt/gitlab/embedded/service/gitlab-rails/VERSION。
- 新服务器安装与旧实例相同版本的 GitLab CE/EE,编辑 /etc/gitlab/gitlab.rb 中的 external_url 为新的访问地址。
- 旧实例备份
- 执行备份:sudo gitlab-rake gitlab:backup:create;备份文件位于 /var/opt/gitlab/backups/1684211114_2023_05_16_12.5.5_gitlab_backup.tar(示例名)。
- 传输备份
- 将备份复制到新服务器同目录:scp /var/opt/gitlab/backups/xxx.tar user@new:/var/opt/gitlab/backups/。
- 新实例恢复
- 建议先停止数据相关服务:sudo gitlab-ctl stop unicorn;sudo gitlab-ctl stop sidekiq。
- 执行恢复(BACKUP 为时间戳部分,不含 .tar):sudo gitlab-rake gitlab:backup:restore BACKUP=1684211114_2023_05_16_12.5.5。
- 如提示权限问题,可临时 chmod 777 备份文件(恢复完成后再收紧权限)。
- 启动与验证
- 启动:sudo gitlab-ctl start;必要时 sudo gitlab-ctl reconfigure。
- 登录新实例,核对项目、用户、权限、CI、上传文件等是否完整一致。
三 项目级迁移步骤
- 在旧实例导出或直接在本地克隆裸仓库:git clone --mirror https://old-gitlab-url/group/project.git。
- 在新实例创建同名空项目(建议初始化选项保持干净,避免 README/许可证导致历史不一致)。
- 进入本地镜像目录,切换远端:git remote set-url origin https://new-gitlab-url/group/project.git。
- 镜像推送所有分支与标签:git push --mirror。
- 若本地缺少某些远端分支,先在本地创建对应分支再推送;若两端历史无关,合并时加 –allow-unrelated-histories。
四 关键注意事项与常见问题
- 版本一致优先:跨版本恢复风险高,建议新实例先安装与旧实例相同的 GitLab 版本,迁移完成后再按需升级。
- 配置与密钥:迁移后核对 /etc/gitlab/gitlab.rb 的 external_url、邮件、LDAP/SSO、对象存储等配置;若使用自签名或私有 CA 证书,确保新实例信任链一致。
- 备份与权限:备份目录默认 /var/opt/gitlab/backups,确保磁盘空间充足与备份文件权限正确;恢复时按提示确认覆盖。
- 服务与网络:必要时在恢复前停止 unicorn/sidekiq;迁移后放行 80/443(如 ufw allow 80,443)。
- 验证清单:项目数量与可见性、用户与组成员、SSH/HTTP 拉取推送、Webhooks、CI/CD 流水线、LFS/附件、Runner 注册与标签。
五 自动化与回滚建议
- 自动化:在旧实例用 cron 定时执行备份(如 0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1),并将备份同步到对象存储或离线介质;新实例准备相同版本的应答文件与自动化部署脚本,减少人工差异。
- 回滚:若完整迁移后发现问题,可切回旧实例继续服务,或基于最新备份再次恢复;项目级迁移可重复执行 git push --mirror 覆盖更新。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian上GitLab如何迁移
本文地址: https://pptw.com/jishu/749489.html
