Gitlab 数据迁移、备份与恢复
最近升级了一下 Gitlab 版本,升级过程中出现意外导致 Gitlab 异常退出。导致之前使用 Docker 搭建的 Gitlab 服务器一直在自动重启,无法正常提供服务。于是研究了一下 Gitlab 服务器数据的迁移、备份与恢复。
Gitlab 异常退出故障信息,折腾许久未能解决问题Σ(っ °Д °;)っ:
由于 Gitlab 异常退出,导致 Docker 一直在自动重启 Gitlab 服务,无法执行备份命令导出备份数据:
庆幸之前对 Gitlab 数据目录 /home/pbversion/Gitlab/ 进行过打包备份,且打包的备份数据时间节点后没有任何提交更新,最终不得以使用原先备份的数据进行了迁移操作来恢复服务。
一、数据迁移
1. 停止正在运行的 Gitlab 服务
# 若基于 Docker 部署,则停止对应的 Docker 运行实例
docker stop gitlab
# 若是在宿主机上直接部署,使用 gitlab-ctl stop 命令来停止服务
sudo gitlab-ctl stop
2. 在旧机器上完整打包备份 Gitlab 数据目录
# 这里举例本人 Gitlab 数据目录 /home/pbversion/Gitlab/
tar cfz gitlabbak.tar.gz /home/pbversion/Gitlab/
# 庆幸的是本人之前做过备份,所以直接执行了后续操作来完成 Gitlab 的服务恢复
3. 将 Gitlab 备份数据拷贝到新机器上并释放到对应目录
tar xfz gitlabbak.tar.gz
新机器上需修改对应 /etc/gitlab/gitlab.rb 配置文件(如访问 external_url )
4.新机器上启动 Gitlab 服务
# 若使用 Docker 部署方式参如下链接进行启动,将对应Gitlab数据目录使用你的存放目录来替换即可:
# https://www.go2aaron.com/blog/index.php/archives/112/#三、启动Docker镜像
# 若使用宿主机直接部署,使用 gitlab-ctl start 命令来启动服务
sudo gitlab-ctl start
新机器上的 Gitlab 最好和原机器上 Gitlab版本一致,或者新机器上使用兼容的新版本。
切不可跨版本升级。
切不可跨版本升级。
二、使用备份命令备份数据
# Docker 内执行备份命令
docker exec -it gitlab gitlab-rake gitlab:backup:create
# 若使用宿主机直接部署,使用 gitlab-rake gitlab:backup:create 命令
gitlab-rake gitlab:backup:create
默认备份目录为 /var/opt/gitlab/backups ,备份的文件名称类似于 XXXXXXXXX_gitlab_backup.tar 这样的名称。
可通过修改 /etc/gitlab/gitlab.rb 配置文件来修改默认备份目录:
gitlab_rails['backup_path'] = '/mnt/your_backups'
修改完成之后使用 gitlab-ctl reconfigure 命令重载配置文件即可
gitlab-ctl reconfigure
由于本人是使用 Docker 部署的,备份文件在宿主机中对应位置为 /home/pbversion/Gitlab/data/backups
三、使用恢复命令恢复数据
# 停止相关数据连接服务
gitlab-ctlstop unicorn
gitlab-ctl stop sidekiq
# 从XXXXXXXXX编号备份中恢复
gitlab-rake gitlab:backup:restore BACKUP=XXXXXXXXX
# 启动 Gitlab
sudo gitlab-ctl start
不错不错,我喜欢看 https://www.237fa.com/
怎么收藏这篇文章?
想想你的文章写的特别好https://www.jiwenlaw.com/