ubuntu下gitlab迁移方法
导读:Ubuntu 下 GitLab 迁移实操指南 一 迁移总览与前置准备 迁移思路:在新服务器安装与旧服务器相同版本的 GitLab,先迁移备份包,再迁移密钥与配置,最后执行恢复与验证。 版本核对:在两台机器上查看版本,确保一致(示例命令适用...
Ubuntu 下 GitLab 迁移实操指南
一 迁移总览与前置准备
- 迁移思路:在新服务器安装与旧服务器相同版本的 GitLab,先迁移备份包,再迁移密钥与配置,最后执行恢复与验证。
- 版本核对:在两台机器上查看版本,确保一致(示例命令适用于 Omnibus 包)
- 查看版本:
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION - 安装相同版本:在 Ubuntu 上用官方软件源或下载对应版本的 .deb 包后执行
dpkg -i gitlab-ce_XX.XX.X-ce.0_amd64.deb,然后gitlab-ctl reconfigure。
- 查看版本:
- 关键文件与目录:
- 备份包默认目录:/var/opt/gitlab/backups
- 密钥与配置:/etc/gitlab/gitlab.rb、/etc/gitlab/gitlab-secrets.json(迁移时建议一并拷贝,避免密码、密钥不一致导致问题)。
二 旧服务器备份
- 手动创建备份(GitLab 需处于运行状态):
- 命令:
gitlab-rake gitlab:backup:create - 备份包命名示例:1684461274_2023_05_19_13.12.2_gitlab_backup.tar(其中时间戳+版本号是识别关键)。
- 命令:
- 备份文件位置与保留策略:
- 默认位置:/var/opt/gitlab/backups
- 可在
/etc/gitlab/gitlab.rb中自定义备份目录与保留时间,例如:gitlab_rails['backup_path'] = "/data/backup/gitlab"gitlab_rails['backup_keep_time'] = 604800(保留 7 天,单位秒)
- 使配置生效:
gitlab-ctl reconfigure
- 定时备份(可选):
- 示例(每天 1 点):
0 1 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create
- 示例(每天 1 点):
- 建议同时拷贝密钥与配置:
scp /etc/gitlab/gitlab.rb root@新服务器:/etc/gitlab/scp /etc/gitlab/gitlab-secrets.json root@新服务器:/etc/gitlab/- 注意:备份包不包含上述两个敏感文件,迁移时务必单独处理。
三 新服务器恢复
- 放置备份包:
- 将备份 tar 放入默认备份目录:
/var/opt/gitlab/backups - 如自定义了备份目录,请放到对应目录并赋权(示例:
chown -R git:git /data/backup/gitlab)。
- 将备份 tar 放入默认备份目录:
- 权限与准备:
- 备份包权限建议至少对运行用户可读,常见做法为
chmod 600或chown git:git;在部分环境中为规避权限问题会使用chmod 777(仅在可信内网临时使用)。
- 备份包权限建议至少对运行用户可读,常见做法为
- 停止写入服务并恢复:
- 停止服务:
gitlab-ctl stop unicorn、gitlab-ctl stop sidekiq - 执行恢复(BACKUP 值为时间戳+版本,不含“.tar”后缀):
- 示例:
gitlab-rake gitlab:backup:restore BACKUP=1684461274_2023_05_19_13.12.2 - 恢复过程中会提示清理数据库并输入 yes 确认,等待完成。
- 示例:
- 停止服务:
- 启动与验证:
- 启动:
gitlab-ctl start - 访问 Web 并核对项目、用户、密钥、Runner 注册等是否完整。
- 启动:
四 迁移后配置与验证
- 配置访问地址:
- 编辑
/etc/gitlab/gitlab.rb,设置external_url 'http://新服务器IP:端口'(或域名),然后gitlab-ctl reconfigure使配置生效。
- 编辑
- 密钥与配置核对:
- 确认
/etc/gitlab/gitlab-secrets.json与旧环境一致(用于加密与签名,缺失会导致登录、Webhooks、Runner 等异常)。
- 确认
- 服务状态与日志:
- 状态检查:
gitlab-ctl status - 日志排查:
gitlab-ctl tail(如 nginx、sidekiq、postgresql 等组件异常时定位问题)。
- 状态检查:
- 首次登录与密码:
- 若未导入旧管理员凭据,可通过控制台重置 root 密码:
gitlab-rails consoleu = User.where(username: 'root').firstu.password = '新密码'; u.password_confirmation = '新密码'; u.save!exit
- 若未导入旧管理员凭据,可通过控制台重置 root 密码:
- 常见现象与处理:
- 页面短暂 502 属正常,等待组件就绪或刷新即可。
- 如出现组件端口冲突(如 9100 被占用),检查并释放端口后重启服务。
五 常见问题与进阶建议
- 版本不一致:恢复会失败或异常,推荐先保持同版本迁移,迁移完成后再按官方升级路径逐步升级。
- 备份包过大与超时:
- 可在恢复前停止写入服务,恢复完成后再启动;确保磁盘空间充足与网络稳定。
- 自定义备份目录:
- 修改
/etc/gitlab/gitlab.rb的gitlab_rails['backup_path']与权限后执行gitlab-ctl reconfigure。
- 修改
- 仓库数据目录迁移(可选):
- 如需将仓库数据目录迁移到新磁盘,可修改
git_data_dirs路径并使用rsync同步后reconfigure生效。
- 如需将仓库数据目录迁移到新磁盘,可修改
- 定时备份与保留策略:
- 建议配置
backup_keep_time与定时任务,避免磁盘被旧备份占满。
- 建议配置
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: ubuntu下gitlab迁移方法
本文地址: https://pptw.com/jishu/748706.html
