ubuntu上gitlab的数据迁移方法是什么
导读:Ubuntu 上 GitLab 数据迁移方法 一 迁移总览与前置条件 迁移思路为:在原服务器创建备份,将备份与关键配置文件拷贝到新服务器,在新服务器用相同版本的 GitLab 执行恢复,最后校验数据。迁移前务必确认两端 GitLab 版本...
Ubuntu 上 GitLab 数据迁移方法
一 迁移总览与前置条件
- 迁移思路为:在原服务器创建备份,将备份与关键配置文件拷贝到新服务器,在新服务器用相同版本的 GitLab 执行恢复,最后校验数据。迁移前务必确认两端 GitLab 版本一致(建议精确到小版本),否则恢复可能失败或数据不一致。备份工具默认不备份配置文件与密钥,需单独拷贝。备份通常包含:数据库、仓库、附件、CI/CD 作业输出与工件、LFS 对象、容器镜像、Pages、包、Terraform 状态等;不包含:Redis/Sidekiq 运行时、配置文件、TLS 证书、系统文件。若使用 PgBouncer,备份需额外参数。以上要点适用于 Omnibus 包与 Docker 部署。
二 在原服务器创建备份
- Omnibus 包安装(Ubuntu 常见):
- 查看版本:
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION - 创建备份(GitLab 12.2+):
sudo gitlab-backup create;旧版本可用:sudo gitlab-rake gitlab:backup:create - 备份默认目录:
/var/opt/gitlab/backups,文件名形如 1658368484_2022_07_21_14.8.2_gitlab_backup.tar。如需改目录,在/etc/gitlab/gitlab.rb设置gitlab_rails['backup_path'] = '/your/path'并执行sudo gitlab-ctl reconfigure生效。
- 查看版本:
- Docker 部署:
- 查看容器名:
docker ps - 创建备份(GitLab 12.2+):
docker exec -t < 容器名> gitlab-backup create - 备份通常位于容器内挂载的
/var/opt/gitlab/backups,对应宿主机目录需提前挂载(常见为/srv/gitlab/data/backups)。
- 查看容器名:
三 拷贝备份与配置文件到新服务器
- 必传内容:
- 备份包(如:1658368484_2022_07_21_14.8.2_gitlab_backup.tar)
- 配置文件与密钥:/etc/gitlab/gitlab.rb、/etc/gitlab/gitlab-secrets.json
- 如使用 HTTPS,建议同时备份 /etc/gitlab/ssl 与 /etc/gitlab/trusted-certs;如使用容器,确保挂载了配置卷(常见为 /srv/gitlab/config)。
- 拷贝示例(Omnibus):
scp /var/opt/gitlab/backups/1658368484_2022_07_21_14.8.2_gitlab_backup.tar root@新服务器:/var/opt/gitlab/backups/scp /etc/gitlab/gitlab.rb root@新服务器:/etc/gitlab/gitlab.rbscp /etc/gitlab/gitlab-secrets.json root@新服务器:/etc/gitlab/gitlab-secrets.json
- 注意:备份 Rake 任务不会包含配置文件与密钥,必须手动拷贝;否则可能导致 2FA、CI/CD 变量等解密失败。
四 在新服务器恢复与验证
- 安装相同版本 GitLab(Omnibus):
- 查看旧服务器版本并下载对应版本安装包(如:
gitlab-ce_14.8.2-ce.0_amd64.deb) - 安装:
sudo dpkg -i gitlab-ce_*.deb & & sudo gitlab-ctl reconfigure - 将新服务器的
external_url在/etc/gitlab/gitlab.rb调整为目标访问地址并gitlab-ctl reconfigure。
- 查看旧服务器版本并下载对应版本安装包(如:
- 恢复步骤(Omnibus):
- 确认备份文件属主为 git:git,权限建议 0600:
chown git:git /var/opt/gitlab/backups/*.tar & & chmod 0600 /var/opt/gitlab/backups/*.tar - 停止连接服务:
sudo gitlab-ctl stop unicorn & & sudo gitlab-ctl stop sidekiq - 执行恢复(BACKUP 为时间戳前缀,不含 “.tar”):
sudo gitlab-rake gitlab:backup:restore BACKUP=1658368484_2022_07_21_14.8.2 - 启动服务:
sudo gitlab-ctl start - 如遇 PostgreSQL 扩展权限错误(如:must be owner of extension pg_trgm/btree_gist),可在恢复前临时将数据库属主切给 gitlab-psql 所属用户,恢复后再改回。
- 确认备份文件属主为 git:git,权限建议 0600:
- Docker 恢复要点:
- 将备份包放入宿主机挂载目录(如:/srv/gitlab/data/backups),确保
/srv/gitlab/config已包含 gitlab.rb 与 gitlab-secrets.json - 停止容器:
docker stop gitlab - 进入容器执行恢复:
docker exec -it gitlab gitlab-backup restore BACKUP=1658368484_2022_07_21_14.8.2 - 启动容器:
docker start gitlab - 若使用非默认备份目录,需在容器内设置
GITLAB_BACKUPS环境变量或在挂载目录中放置备份。
- 将备份包放入宿主机挂载目录(如:/srv/gitlab/data/backups),确保
- 验证与常见问题:
- 登录 Web 检查:项目、仓库、LFS、CI/CD 作业、Runner、Pages、容器镜像、用户与权限、2FA 是否正常。
- 若 external_url 变更,需同步调整 GitLab Pages 域名、Runner 注册令牌、Webhooks、SSH/HTTPS 克隆地址 等。
- 迁移后首次启动若报错,优先检查:版本一致性、备份文件属主与权限、配置文件与密钥是否正确就位。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: ubuntu上gitlab的数据迁移方法是什么
本文地址: https://pptw.com/jishu/757731.html
