ubuntu gitlab 怎么迁移数据
小樊
40
2025-12-06 22:02:56
Ubuntu 上 GitLab 迁移数据实操指南
一 迁移总览与前置检查
- 迁移思路:在源服务器创建备份,将备份与关键配置文件拷贝到目标服务器,在目标服务器安装相同版本的 GitLab 后执行恢复,最后验证数据一致性与可用性。
- 版本一致性:恢复时的 GitLab 版本需与备份时完全一致(或更高版本按官方升级路径进行)。查看版本命令:cat /opt/gitlab/embedded/service/gitlab-rails/VERSION。
- 备份内容范围:内置备份包含数据库、仓库、附件、CI/CD 作业输出与工件、LFS 对象、Pages、包、Terraform 状态等;不包含配置文件、TLS 证书、SSH 主机密钥、以及 Redis/Sidekiq 运行时数据。务必额外备份:/etc/gitlab/gitlab.rb、/etc/gitlab/gitlab-secrets.json,如使用容器还需备份其配置卷。
- 备份命名与路径:默认备份目录为 /var/opt/gitlab/backups,文件名形如 1658368484_2022_07_21_14.8.2_gitlab_backup.tar;可通过 gitlab_rails[‘backup_path’] 自定义备份目录。
二 在原服务器创建备份
- Omnibus 包安装(Ubuntu 常见):
- 查看版本:cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
- 创建备份:gitlab-rake gitlab:backup:create(或 GitLab 12.2+ 使用:gitlab-backup create)
- 备份文件默认位于:/var/opt/gitlab/backups
- 如需自定义备份目录,在 /etc/gitlab/gitlab.rb 中设置:gitlab_rails[‘backup_path’] = “/your/backup/path”,然后执行:gitlab-ctl reconfigure
- 备份完成后,务必拷贝以下文件到安全位置(与备份 tar 分开存放):/etc/gitlab/gitlab.rb、/etc/gitlab/gitlab-secrets.json。
三 在目标服务器恢复数据
- 安装相同版本:在目标 Ubuntu 上安装与源服务器同版本的 GitLab(例如使用官方仓库或下载对应版本的 .deb 包后执行 dpkg -i),然后执行 gitlab-ctl reconfigure 完成初始化。
- 拷贝文件:
- 将备份 tar 放到目标服务器的备份目录(默认 /var/opt/gitlab/backups;如自定义过路径,请放到对应目录)。
- 将 gitlab.rb 与 gitlab-secrets.json 覆盖到 /etc/gitlab/(建议先备份目标服务器原文件)。
- 执行恢复(保持 GitLab 服务停止以避免写入冲突):
- 停止连接服务:gitlab-ctl stop unicorn;gitlab-ctl stop sidekiq
- 恢复数据:gitlab-rake gitlab:backup:restore BACKUP=1658368484_2022_07_21_14.8.2
- 注意:BACKUP 参数填写的是时间戳前缀(不含 “_gitlab_backup.tar” 后缀)
- 启动服务:gitlab-ctl start
- 首次访问与密码:如为全新实例,首次登录 root 会被要求修改密码;如从备份恢复,原有账户与密码应保持不变。
四 常见问题与注意事项
- 版本不匹配:恢复失败或异常多与版本不一致有关,务必确保两端版本一致;需要跨版本时请先规划升级路径,在测试环境验证后再实施。
- 配置文件与密钥:备份 Rake 任务不会包含 gitlab.rb 与 gitlab-secrets.json,缺失会导致 2FA、CI/CD 变量等解密失败,必须手动迁移并妥善保管。
- 仓库存储路径变更:若新服务器使用自定义仓库目录,需在 /etc/gitlab/gitlab.rb 中设置 git_data_dirs,例如:git_data_dirs({ “default” => { “path” => “/home/gitlab-data” } }),然后 gitlab-ctl reconfigure 生效。
- 备份目录权限与所有权:确保备份文件对 git 用户可读,目录权限正确,避免因权限问题导致恢复失败。
- 容器场景提示:若使用 Docker,可在容器内执行备份/恢复(docker exec -t gitlab-backup create/restore),并确保挂载了配置卷与备份目录。