首页主机资讯如何在Linux上使用GitLab进行数据迁移

如何在Linux上使用GitLab进行数据迁移

时间2026-01-15 13:52:04发布访客分类主机资讯浏览412
导读:Linux 上 GitLab 数据迁移实操指南 一 迁移准备与版本要求 保持版本一致:新旧服务器的 GitLab 版本号需完全一致(包括 CE/EE 与补丁号)。查看版本可用命令:gitlab-rake gitlab:env:info 或...

Linux 上 GitLab 数据迁移实操指南

一 迁移准备与版本要求

  • 保持版本一致:新旧服务器的 GitLab 版本号需完全一致(包括 CE/EE 与补丁号)。查看版本可用命令:gitlab-rake gitlab:env:infocat /opt/gitlab/embedded/service/gitlab-rails/VERSION。不一致易导致恢复失败或数据不一致。
  • 规划停机窗口:使用官方备份/恢复方式迁移时,恢复阶段会清理现有数据,需安排短暂停机。
  • 备份敏感配置:除数据备份外,务必单独备份 /etc/gitlab/gitlab.rb/etc/gitlab/gitlab-secrets.json,它们包含外部 URL、SMTP、LDAP、Runner 注册令牌等敏感信息,迁移后直接复用更安全。
  • 目录与权限:备份包默认位于 /var/opt/gitlab/backups,属主应为 git:git;恢复前确保权限正确。

二 标准迁移步骤(同版本,推荐)

  1. 旧服务器备份
    • 执行备份:sudo gitlab-rake gitlab:backup:create(备份文件生成于 /var/opt/gitlab/backups,命名如 TIMESTAMP_gitlab_backup.tarTIMESTAMP_YYYY_MM_DD_VERSION_gitlab_backup.tar)。
    • 备份配置文件:sudo cp -a /etc/gitlab/{ gitlab.rb,gitlab-secrets.json} /path/to/safe/place/
  2. 传输备份与配置到新服务器
    • 备份包:scp /var/opt/gitlab/backups/xxx.tar root@new:/var/opt/gitlab/backups/
    • 配置文件:scp /path/to/safe/place/{ gitlab.rb,gitlab-secrets.json} root@new:/etc/gitlab/
  3. 新服务器安装同版本 GitLab
    • 使用与你旧环境一致的 CE/EE 与版本号安装(RPM/DEB 或 Omnibus 方式均可)。
  4. 新服务器恢复
    • 设置权限:sudo chown git:git /var/opt/gitlab/backups/xxx.tar
    • 停止写入服务:sudo gitlab-ctl stop unicorn & & sudo gitlab-ctl stop sidekiq
    • 执行恢复:
      • 若备份名为 1666142751_2022_10_19_13.6.7_gitlab_backup.tar,可用时间戳部分:sudo gitlab-rake gitlab:backup:restore BACKUP=1666142751
      • 若恢复提示找不到文件,按提示将文件重命名为仅含时间戳的 .tar 再恢复;
      • 恢复过程会出现两次确认,均输入 yes
    • 启动服务:sudo gitlab-ctl start
  5. 校验
    • 访问 external_url,登录检查项目、仓库、Issues、Runner、Webhooks、LFS/附件等是否完整。

三 常见问题与处理

  • 恢复时报错 “must be owner of extension pg_trgm/btree_gist”
    • 原因:内置 PostgreSQL 的扩展属主与恢复用户不匹配。
    • 处理(Omnibus 内置 PG):
      • sudo -u gitlab-psql /opt/gitlab/embedded/bin/psql -h 127.0.0.1 -d gitlabhq_production
      • 执行:ALTER USER gitlab WITH SUPERUSER; (恢复完成可按需改回)。
  • 备份包权限不足或找不到
    • 确保备份包在 /var/opt/gitlab/backups 且属主为 git:git,必要时 chown git:git xxx.tar;若恢复提示找不到,按提示将文件重命名为仅含时间戳的 .tar 再恢复。
  • 页面异常(如 500、Runner 注册异常、Web IDE 打不开)
    • 多因 gitlab-secrets.json 未正确迁移或 Runner 注册令牌残留。确保复用旧 gitlab-secrets.json;必要时在 Rails 控制台清理相关令牌后再试。
  • 版本不一致导致恢复失败
    • 新服务器必须安装与旧服务器一致的 GitLab 版本(含小版本)后再恢复。

四 进阶场景与建议

  • 跨安装方式迁移(如 RPM/DEB ↔ Docker)
    • 思路一致:在源环境用 gitlab-rake gitlab:backup:create 生成备份,将备份文件与 gitlab.rb/gitlab-secrets.json 复制到目标环境对应位置后执行恢复;Docker 场景需进入容器执行 rake 或确保挂载目录正确。
  • 仅迁移部分项目或仓库
    • 若不是整实例迁移,可在新实例创建空项目后,使用 git push --mirror 或项目导出/导入功能逐项目迁移,以保留提交历史与分支。
  • 大版本升级与迁移
    • 建议先同版本迁移到新环境,再按官方升级路径逐步升级;跨大版本直接恢复成功率低且风险高。
  • 迁移后检查清单
    • 校验 external_urlSSH 端口SMTP/LDAP对象存储(如有)Runner 注册与作业执行、LFS 与附件、Pages、Webhooks、系统钩子、项目/组/实例级变量等。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 如何在Linux上使用GitLab进行数据迁移
本文地址: https://pptw.com/jishu/780022.html
Linux GitLab中如何实现跨平台协作 GitLab在Linux系统中如何进行日志管理

游客 回复需填写必要信息