gitlab数据备份-恢复

1.Gitlab备份数据

docker exec gitlab gitlab-rake gitlab:backup:create #备份数据

 

[root@git208 ~]# ls /srv/gitlab/data/backups/ #查看备份数据

 

1.1cron服务的启停

 

/sbin/service crond start 服务启动

/sbin/service crond stop  服务停止

/sbin/service crond restart 服务重新启动

/sbin/service crond reload  服务重新加载配置

或者

systemctl enable crond #计划任务开机启动

systemctl restart crond #重启

systemctl stop crond #停止

 

1.2备份脚本

vi /root/gitlab_backup.sh

 

#/bin/bash

case "$1" in

    start)

            docker exec gitlab gitlab-rake gitlab:backup:create

            ;;

esac

 

1.3编辑任务每天两点备份

crontab -e

0 2 * * * /root/gitlab_backup.sh start

1.4加载计划任务

systemctl reload crond

 

 

2. 项目删除测试

 

危险操作注意备份

 

 

已经删除

 

 

1. 1开始还原测试

 

停止前状态查看

[root@zsl ~]# docker exec gitlab gitlab-ctl status

 

 

 停止数据库相关服务

[root@zsl ~]# docker exec gitlab gitlab-ctl stop unicorn

[root@zsl ~]# docker exec gitlab gitlab-ctl stop sidekiq

 

 

已经停止

[root@zsl ~]# docker exec gitlab gitlab-ctl status

 

[root@git208 ~]# ls /srv/gitlab/data/backups/ #查看备份数据

 

1559360653_2019_06_01_11.1.4_gitlab_backup.tar

恢复操作 #进入docker操作是因为需要输入yes

docker exec -it gitlab /bin/bash

 

gitlab-rake gitlab:backup:restore BACKUP=1559361618_2019_06_01_11.1.4

 

 gitlab-ctl start

 

docker exec gitlab gitlab-ctl status

数据正常恢复

 

命令整理

docker exec gitlab gitlab-rake gitlab:backup:create #备份数据
[root@git208 ~]# ls /srv/gitlab/data/backups/ #查看备份数据
1、cron服务的启停
/sbin/service crond start 服务启动
/sbin/service crond stop  服务停止
/sbin/service crond restart 服务重新启动
/sbin/service crond reload  服务重新加载配置
或者
systemctl enable crond #计划任务开机启动
systemctl restart crond #重启
systemctl stop crond #停止
2.vi /root/gitlab_backup.sh
#! /bin/bash
case "$1" in 
    start)
            docker exec gitlab gitlab-rake gitlab:backup:create
            ;;
esac
3.编辑任务每天两点备份
crontab -e
0 2 * * * /root/gitlab_backup.sh start
5.加载计划任务
systemctl reload crond
2.恢复
GItlab只能还原到与备份文件相同的gitlab版本。
假设在上面gitlab备份之前创建了test项目,然后不小心误删了test项目,现在就进行gitlab恢复操作: 
1)停止相关数据连接服务
docker exec gitlab gitlab-ctl stop unicorn
docker exec gitlab gitlab-ctl stop sidekiq

docker exec gitlab gitlab-ctl status

docker exec gitlab gitlab-rake gitlab:backup:create

1559360653_2019_06_01_11.1.4_gitlab_backup.tar
docker exec gitlab gitlab-ctl start unicorn
docker exec gitlab gitlab-ctl start sidekiq
docker exec gitlab gitlab-rake gitlab:check SANITIZE=true

恢复操作
docker exec -it gitlab /bin/bash
gitlab-rake gitlab:backup:restore BACKUP=1559361618_2019_06_01_11.1.4

docker exec gitlab gitlab-ctl start
docker exec gitlab gitlab-ctl status

[root@code-server backups]# gitlab-ctl stop unicorn
ok: down: unicorn: 0s, normally up
[root@code-server backups]# gitlab-ctl stop sidekiq
ok: down: sidekiq: 1s, normally up
[root@code-server backups]# gitlab-ctl status
Gitlab的恢复操作会先将当前所有的数据清空,然后再根据备份数据进行恢复
[root@code-server backups]# gitlab-rake gitlab:backup:restore BACKUP=1510472027_2017_11_12_9.4.5
最后再次启动Gitlab
[root@code-server backups]# gitlab-ctl start
[root@code-server backups]# gitlab-ctl status
gitlab-rake gitlab:check SANITIZE=true #检查恢复情况
然后稍等一会(如果启动gitlab后,访问出现500,这是因为redis等程序还没完全启动,等一会儿访问就ok了),
再次登录Gitlab,就会发现之前误删除的test项目已经恢复了
参考
https://www.cnblogs.com/kevingrace/p/7821529.html

 

posted @ 2019-06-01 11:01  夜辰雪扬  阅读(231)  评论(0)    收藏  举报