Gitlab数据备份与恢复

Gitlab备份与恢复:

修改gitlab配置文件:
vim /etc/gitlab/gitlab.rb

#指定备份后数据存放的路径、权限、时间配置
gitlab_rails['manage_backup_path'] = true                  #292行      开启备份功能
gitlab_rails['backup_path'] = "/opt/gitlab_backup"         #293行      指定备份的路径
gitlab_rails['backup_archive_permissions'] = 0644          #296行      备份文件的权限
gitlab_rails['backup_keep_time'] = 7776000                 #301行      备份保留时间(保留90天)
 

创建备份目录并授权:
mkdir /opt/gitlab_backup && chown -R git.git /opt/gitlab_backup/

重新生效gitlab配置:
gitlab-ctl reconfigure


手动备份:
gitlab-rake gitlab:backup:create

查看备份:
ll -sh /opt/gitlab_backup/

编写备份脚本,结合crontab实施自动定时备份,比如每天0点、6点、12点、18点各备份一次

编写备份脚本:

cat /opt/gitlab_backup/git_back.sh

#!/usr/bin/bash
/usr/bin/gitlab-rake gitlab:backup:create CRON=1
 

chmod +x /opt/gitlab_backup/git_back.sh

注意:环境变量CRON=1的作用是如果没有任何错误发生时, 抑制备份脚本的所有进度输出

加入定时任务:

crontab -l

0 0,6,12,18 * * * /bin/bash /opt/gitlab_backup/git_back.sh > /dev/null 2>&1
 

删除测试项目:


GItlab只能还原到与备份文件相同的gitlab版本。

在上面gitlab备份之前创建了opstands项目,然后不小心误删了opstands项目,现在就进行gitlab恢复操作

关闭数据库连接服务:
gitlab-ctl stop unicorn && gitlab-ctl stop sidekiq

gitlab-ctl status
run: gitaly: (pid 38652) 472s; run: log: (pid 693) 15213s
run: gitlab-monitor: (pid 38662) 472s; run: log: (pid 692) 15213s
run: gitlab-workhorse: (pid 38665) 471s; run: log: (pid 694) 15213s
run: logrotate: (pid 38673) 471s; run: log: (pid 691) 15213s
run: nginx: (pid 38689) 470s; run: log: (pid 690) 15213s
run: node-exporter: (pid 38695) 470s; run: log: (pid 685) 15214s
run: postgres-exporter: (pid 38702) 470s; run: log: (pid 679) 15214s
run: postgresql: (pid 38707) 469s; run: log: (pid 678) 15214s
run: prometheus: (pid 38715) 469s; run: log: (pid 676) 15214s
run: redis: (pid 38721) 468s; run: log: (pid 680) 15214s
run: redis-exporter: (pid 38728) 468s; run: log: (pid 674) 15214s
down: sidekiq: 43s, normally up; run: log: (pid 682) 15214s
down: unicorn: 48s, normally up; run: log: (pid 688) 15213s
 

现在通过之前的备份文件进行恢复(必须要备份文件放到备份路径下,这里备份路径我自定义的/opt/gitlab_backup,默认的是/var/opt/gitlab/backups

恢复数据:

Gitlab的恢复操作会先将当前所有的数据清空,然后再根据备份数据进行恢复.

在指定备份文件恢复时,gitlab会自动补全后面的文件名,注意。

cd /opt/gitlab_backup
gitlab-rake gitlab:backup:restore BACKUP=1553965778_2019_03_31_10.7.3       ---#文件名会自动补全-(注意)
 

从web界面查看项目是否恢复:

原文地址:https://www.cnblogs.com/cheyunhua/p/13233737.html