GITLAB配置定时自动备份
GITLAB备份配置修改:gitlab.rb
gitlab_rails[‘manage_backup_path’]=true
gitlab_rails[‘backup_path’]="/data/gitlab/backups" //gitlab备份目录
gitlab_rails[‘backup_archive_permissions’]=0644 //生成的备份文件权限
gitlab_rails[‘backup_keep_time’] = 7776000 //备份保留天数,秒计算
使用Linux中 crontab 进行定时备份任务
由于gitlab中的镜像容器中,只有最小单元Linux服务,没有相关crontab服务
鉴于Linux宿主机上有自带crontab服务
所以使用宿主机上的crontab 服务进入到容器中执行 备份脚本
crontab -e
0 23 * * * docker exec -d dao_bida-gitlab-migrate_1 /bin/bash gitlab-rake
修改配置后执行命令
gitlab-ctl reconfigure
重新加载配置 gitlab-ctl 。
生成备份文件命令
备份命令
gitlab-rake gitlab:backup:create
该命令会在备份目录(默认:/var/opt/gitlab/backups/)下创建一个tar压缩包xxxxxxxx_gitlab_backup.tar,其中开头的xxxxxx是备份创建的时间戳,这个压缩包包括GitLab整个的完整部分
自动备份
在crontab文件里面,每一行代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,每个字段之间用空格分割,没用的段用*代替,格式如下:
m h dom mon dow user command
其中:
m: 表示分钟,可以是从0到59之间的任何整数。
h:表示小时,可以是从0到23之间的任何整数。
dom:表示日期,可以是从1到31之间的任何整数。
mon:表示月份,可以是从1到12之间的任何整数。
dow:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
user : 表示执行的用户。
command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件(如shell文件)。
实现每天凌晨2点进行一次自动备份:通过crontab使用备份命令实现,需重启cron服务
恢复
备份文件:
停止 unicorn 和 sidekiq ,保证数据库没有新的连接,不会有写数据情况。
停止相关数据连接服务
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
指定恢复文件,会自动去备份目录找。确保备份目录中有这个文件。
指定文件名的格式类似:1590153351_2020_05_22_12.10.6 , 程序会自动在文件名后补上:“_gitlab_backup.tar”
一定要按照这样的格式指定,否则会程序 The backup file does not exist ! 的错误
gitlab-rake gitlab:backup:restore BACKUP=1590153351_2020_05_22_12.10.6
启动Gitlab
gitlab-ctl start