gitlab数据备份恢复[docker方式]

说明:

  1. gitlab数据备份的前提条件,恢复版本需要与原备份版本一致
  2. 以docker方式运行时候,启动恢复后若报错login or password rejected,是因为docker -v 环境有问题,docker volume ls 查看挂载,做合理删除
  3. 本文档经测试,完全可用,若出现问题,注意环境的检查
  • 搭建gitlab
# 查看gitlab版本
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
# 下载启动gitlab
sudo docker run --detach   --hostname gitlab.example.com   --publish 443:443 --publish 7980:80 --publish 22:22   --name gitlab   --volume $GITLAB_HOME/config:/etc/gitlab   --volume $GITLAB_HOME/logs:/var/log/gitlab   --volume $GITLAB_HOME/data:/var/opt/gitlab   gitlab/gitlab-ce:11.10.1-ce.0
  • 查看docker日志
docker logs gitlab
# 若出现报错,查看报错信息,做调整,否则后续数据恢复后登陆出现问题,以docker启动方式来看,一般为-v问题
  • copy数据至docker内备份路径下,默认为/var/opt/gitlab/backups
docker cp /home/ctdna/Downloads/1606838545_2020_12_01_11.10.1_gitlab_backup.tar gitlab:/var/opt/gitlab/backups
  • 恢复数据
docker exec -it gitlab sh
cd /var/opt/gitlab/backups
# ls 查看,若仅有一个文件
gitlab-rake gitlab:backup:restore
# ls 若有多个备份文件,不可添加_gitlab_backup.tar后缀,会自动补充
gitlab-rake gitlab:backup:restore BACKUP=1606752150_2020_11_30_11.10.1
  • 可用性检测
gitlab-rake gitlab:check SANITIZE=true
http://192.168.23.98:7980/users/sign_in
# 正常情况下,所有用户可以用已有账号登陆,且项目均存在,备份恢复后的使用应与原一致,若测试出现异常,检查docker日志,备份数据不需要处理和正确性怀疑

重要补充:

  1. docker run -it -v /test:/soft centos /bin/bash
    容器内的/soft目录挂载的是宿主机上的/var/lib/docker/volumes/test1/_data目录
    原来,所谓的相对路径指的是/var/lib/docker/volumes/,与宿主机的当前目录无关.
  2. gitlab数据备份
# 查看命令说明
gitlab-rake -T
gitlab-rake gitlab:backup:create
  1. gitlab数据备份上传至阿里云oss
#! /bin/sh
DATE=`date -d yesterday +%Y_%m_%d`
echo $DATE
cd /srv/gitlab/data/backups/
FILE=`ls | grep $DATE`
echo $FILE
cd /root
./ossutil64 appendfromfile /gitlab/gitlabv2/data/backups/$FILE oss://gitlab-data-backup-ctdna/$FILE