接着上次来说,这次主要说一些数据的备份与还原,只要备份备的好不用扛着高铁练酷跑。gitlab主要备份分两种,一种是gitlab的配置文件,一种是数据文件(代码)配置文件备份一般只有更改配置的时候在进行手动备份,但是数据文件一定要勤备份,至少一天一次备份。宁可多备份十份绝不少备份一份的原则。
配置文件备份
一般只需要备份这几个文件即可,如果有特殊的改动记得手动备份
/var/opt/gitlab/nginx/conf #nginx 配置文件
/etc/gitlab/gitlab.rb #gitlab 配置文件
/etc/gitlab/gitlab-secrets.json #key 文件
数据文件备份
默认备份路径
/var/opt/gitlab/backups/ # Gitlab 数据备份目录,需要使用命令备份的
数据备份大概与mysqldump工具备份相同,备份的时候不能停止gitlab,只需要停止写入服务即可
#gitlab-ctl stop unicorn
#gitlab-ctl stop sidekiq
执行备份命令
#gitlab-rake gitlab:backup:create
查看备份文件
root@lianghualin:/var/opt/gitlab/backups# ls -l /var/opt/gitlab/backups/
total 292
-rw------- 1 git git 296960 Jul 24 12:30 1658680253_2022_07_24_14.0.7_gitlab_backup.tar
注意!!!备份完毕后先拷贝到其他主机或者存储上以免主机down机!
启动服务
#gitlab-ctl start
数据文件恢复
首先看一下备份前的文件

然后把index.html代码删除

数据恢复之前首先也需要停止写入服务
# gitlab-ctl stop unicorn
# gitlab-ctl stop sidekiq #恢复数据之前停止服务
开始执行恢复命令
gitlab-rake gitlab:backup:restore BACKUP=备份文件名
gitlab-rake gitlab:backup:restore BACKUP=1658680253_2022_07_24_14.0.7
输入完yes后有5秒反悔时间


恢复完成后刷新一下页面或者重新登录在次查看

确认恢复后启动服务
启动服务
#gitlab-ctl start
备份脚本
#!/bin/bash
BACKUP_DIR="/backup/gitlab_backups/"
FILE_NAME=`ls -lrt /var/opt/gitlab/backups/*_14.0.7_gitlab_backup.tar |tail -n1 |awk -F"backups/" '{print $2}'`
TIME=`date "+%Y-%m-%d-%H-%M-%S"`
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
gitlab-rake gitlab:backup:create
mkdir -p ${BACKUP_DIR}backup_gitlab_${TIME}
if [ -f /var/opt/gitlab/backups/${FILE_NAME} ]; then
mv /var/opt/gitlab/backups/${FILE_NAME} ${BACKUP_DIR}backup_gitlab_${TIME}
scp ${BACKUP_DIR}backup_gitlab_${TIME}/${FILE_NAME} root@10.0.0.120:/tmp/
else
echo "文件不存在" >/tmp/gitlab_bak.log
fi
gitlab-ctl start unicorn
gitlab-ctl start sidekiq
在此声明指定要做好备份工作!