gitlab-ce 数据迁移

gitlab-ce 数据迁移

本文记录了怎么对 gitlab 的数据做迁移。以 ubuntu 24.04.4 系统为例。

第一步:搭建新 gitlab 服务


gitlab 完整迁移需要使用完全一致的 gitlab-ce 版本,否则会失败。

1.1、查看旧 gitlab-ce 版本号

dpkg -l | grep gitlab-ce

1.2、安装 对应版本的 gitlab-ce

参考往期文章:https://www.madbull.site/?p=2264 安装 gitlab-ce 。

注意:apt 安装方式直接从源里安装默认 gitlab-ce 很可能不是对应的版本。需要指定版本安装。具体方法如下:

# 查看源里可以安装的版本号。
apt-cache madison gitlab-ce

# 安装对应的版本,以 18.5.4-ce.0 为例
apt install gitlab-ce=18.5.4-ce.0 

需要 按照文章把 4 个步骤 全部执行完,确保新安装的 gitlab-ce 能够成功启动。

第二步:备份并迁移旧数据


需要对 旧gitlab上的数据创建备份,并和配置文件一起,移动到 新gitlab服务器 对应的路径下。

2.1、备份数据

登录旧 gitlab 服务器,执行备份

gitlab-backup create

数据会备份在:/var/opt/gitlab/backups/ 目录,文件名格式为 时间戳_年_月_日_gitlab版本号_gitlab_backup.tar。

把 备份 打包的 tar 文件,拿到 新gitlab服务器 对应的目录,即 /var/opt/gitlab/backups/ 目录。

修改文件属主为 git:git

chown git:git /var/opt/gitlab/backups/xxxxxxx_gitlab_backup.tar

2.2、备份配置文件

/etc/gitlab/gitlab.rb/etc/gitlab/gitlab-secrets.json 文件复制到 新gitlab服务器,放在 /etc/gitlab/ 目录下

如果 打开了 https 服务,需要把 证书 和 私钥 也要复制到 新gitlab服务器

如果 更换了 external_url 需要重新申请证书。自签名证书请参考往期文章:https://www.madbull.site/?p=601

第三步:恢复数据


新gitlab服务器 上恢复数据。

3.1、停止部分服务

sudo gitlab-ctl stop puma
sudo gitlab-ctl stop sidekiq
sudo gitlab-ctl stop nginx

3.2、恢复配置

这一步将应用你从旧服务器带来的配置和密钥

gitlab-ctl reconfigure

3.3、恢复数据

执行如下执行,其中 xxxxxxx 指的是 备份文件名中 _gitlab_backup.tar 之前的时间戳和版本号。

gitlab-backup restore BACKUP=xxxxxxx

恢复过程中,系统会发出警告提示数据库将被清空并覆盖,输入 yes 继续。

3.4、重启并检查

sudo gitlab-ctl restart
sudo gitlab-rake gitlab:check SANITIZE=true

注意:


新旧版本必须一致:这是最容易出错的地方。如果版本不一致,恢复命令会直接报错并终止

gitlab-secrets.json 至关重要:这个文件包含了加密密钥。如果没有它,恢复后你将无法登录用户(特别是开启了双因素认证的)、CI/CD 变量会失效,Runner 也无法连接

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注