备份
GitLab作为公司项目代码的版本管理系统,数据非常重要,必须做好备份。
修改备份目录
GitLab备份的默认目录是 /var/opt/gitlab/backups ,如果想改备份目录,可修改/etc/gitlab/gitlab.rb:
修改配置后,记得:
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服务
方法1、在命令行输入: crontab -e
然后添加相应的任务
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1
wq存盘退出。
方法2、直接编辑/etc/crontab 文件,即vi /etc/crontab,然后添加相应的任务
# 编辑 /etc/crotab
sudo vi /etc/crontab
然后再编辑框内输入相应的任务
# 添加定时任务,每天凌晨两点,执行gitlab备份
0 2 * * * root /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1
备份保留7天
可设置只保留最近7天的备份,编辑配置文件 /etc/gitlab/gitlab.rb
# 数值单位:秒
gitlab_rails['backup_keep_time'] = 604800
重新加载gitlab配置文件 : gitlab-ctl reconfigure
恢复
备份文件:
停止 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