本文记录了怎么对 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 也无法连接。


发表回复