gitlab备份
官方文档中写的很详细了,这里示例的版本是 10.6 ,只列出了几个比较常用的命令
一、gitlab的备份目录路径设置
rpm包安装的gitlab配置文件是 /etc/gitlab/gitlab.rb
,docker安装的gitlab配置文件是 volume path/config/gitlab.rb
# 自定义备份路径
gitlab_rails['manage_backup_path'] = true
# gitlab备份目录
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
# 生成的备份文件权限
gitlab_rails['backup_archive_permissions'] = 0644
# 备份保留天数为3个月(即90天,这里是7776000秒,单位是秒)
gitlab_rails['backup_keep_time'] = 7776000
修改以上配置需要执行命令 gitlab-ctl reconfigure
生效
二、设置gitlab备份
gitLab 12.2或更高版本执行以下命令进行备份
gitlab-backup create
gitLab 12.1和更早版本执行以下命令进行备份
gitlab-rake gitlab:backup:create CRON=1
环境变量CRON=1的作用是如果没有任何错误发生时, 隐藏备份脚本的所有进度输出
The
CRON=1
environment setting directs the backup script to hide all progress output if there aren’t any errors. This is recommended to reduce cron spam.
如果gitlab是docker安装,则执行以下命令
docker exec -t gitlab /bin/sh -c 'gitlab-rake gitlab:backup:create'
使用以上命令会在 /var/opt/gitlab/backups
目录下(rpm包安装)创建一个名称类似为
1605454369_2020_11_15_10.6.1_gitlab_backup.tar
的压缩包
配合计划任务每天定时备份
00 1 * * * docker exec -t gitlab /bin/bash -c 'gitlab-rake gitlab:backup:create CRON=1'
还需要备份两个文件
# gitlab密钥文件
/etc/gitlab/gitlab-secrets.json
# gitlab配置文件
/etc/gitlab/gitlab.rb
三、gitlab恢复
先停止相关数据连接服务
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
确认数据连接服务已经停止
gitlab-ctl status
恢复gitlab数据,中间需要输入两次 yes,BACKUP后面就是要恢复的备份压缩文件时间名称部分
gitlab的恢复操作会先将当前所有的数据清空,然后再根据备份数据进行恢复
gitlab-rake gitlab:backup:restore BACKUP=1605454369_2020_11_15_10.6.1
恢复完成后启动gitlab
gitlab-ctl start
恢复命令完成后,可以check检查一下恢复情况
gitlab-rake gitlab:check SANITIZE=true