Gitlab数据备份与恢复


一、查看版本信息

在数据备份或数据迁移前,应查看对应的系统版本、软件版本等因素,否则可能会导致迁移后数据的不可用。

1.1 系统版本

[root@gitlab ~]# cat /etc/redhat-release 
CentOS Linux release 7.4.1708 (Core) 

1.2 软件版本

[root@gitlab ~]# cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
13.5.1

二、数据备份

在数据备份这里需要注意,当我们在执行备份操作时,为了保证备份数据的一致性,应事先停掉我们的Gitlab服务,如果不停掉的话,可能我们在备份的过程中有其他研发人员进行数据的上传,从而导致备份数据的不一致性和不完整性,甚至出现一些不可预估的错误。

2.1 备份路径

打开/etc/gitlab/gitlab.rb配置文件,查看一个和备份相关的配置项:gitlab_rails['backup_path'] = "/data/gitlab/backups"默认的备份路径为:/var/opt/gitlab/git-data/

[root@gitlab ~]# vim /etc/gitlab/gitlab.rb

在这里插入图片描述

该项定义了默认备份出文件的路径,可以通过修改该配置,并执行 gitlab-ctl reconfigure 或者 gitlab-ctl restart 重启服务生效。

2.2 开始备份

接下来我们通过备份命令进行数据备份,备份后的数据默认存放在该路径下:/var/opt/gitlab/backups/

[root@gitlab ~]# cd /var/opt/gitlab/backups/
[root@gitlab backups]# ls

[root@gitlab backups]# gitlab-rake gitlab:backup:create    # 开始备份(等待..)
[root@gitlab backups]# ls
1604716638_2020_11_07_13.5.1_gitlab_backup.tar     # 备份后的数据包

也可以添加到 crontab 中定时执行:

0 3 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create

可以到/data/gitlab/backups找到备份包,解压查看,会发现备份的还是比较全面的,数据库、repositories、build、upload等分类还是比较清晰的。

在这里插入图片描述

三、数据恢复

3.1 删除数据

为了测试效果,这里我们模拟研发人员不小心删掉了项目的某个文件(当然了这里是可以通过log回滚的,假设这里已经删了很久了)

[zhuxiaojie@database my-rab]$ ls
html  README.md
[zhuxiaojie@database my-rab]$ git rm -r html/   # 删除文件
rm 'html/index.html'
[zhuxiaojie@database my-rab]$ git add .
[zhuxiaojie@database my-rab]$ git commit -m '意外删除html文件'
[dev 0c35330] 意外删除html文件
 1 file changed, 3 deletions(-)
 delete mode 100644 html/index.html
[zhuxiaojie@database my-rab]$ git push sz dev   # 提交代码

这时登录Gitlab去查看html文件是否还存在:

在这里插入图片描述

3.2 数据恢复

(1)停Gitlab服务

[root@gitlab ~]# gitlab-ctl stop unicorn
[root@gitlab ~]# gitlab-ctl stop sidekiq
ok: down: sidekiq: 0s, normally up

当我们在做数据备份和数据迁移时,应先停这两个服务,目的是为了保证数据的一致性。将老服务器/data/gitlab/backups目录下的备份文件拷贝到新服务器上的/data/gitlab/backups。不过这里我们不做数据迁移,而是做数据恢复,所以下面的这一步跳过。

[root@localhost gitlab]# rsync -avz 1604716638_2020_11_07_13.5.1_gitlab_backup.tar 10.20.151.135:/data/gitlab/backups/ 

注意权限:600权限是无权恢复的。 实验环境可改成了777,生产环境建议修改属主属组。

[root@gitlab backups]# pwd
/data/gitlab/backups
[root@gitlab backups]# chmod 777 1604716638_2020_11_07_13.5.1_gitlab_backup.tar

(2)开始恢复数据

[root@gitlab backups]# ls
1604716638_2020_11_07_13.5.1_gitlab_backup.tar
[root@gitlab backups]# gitlab-rake gitlab:backup:restore BACKUP=1604716638_2020_11_07_13.5.1

(3)启动Gitlab服务

[root@gitlab backups]# gitlab-ctl start unicorn
[root@gitlab backups]# gitlab-ctl start sidekiq
ok: run: sidekiq: (pid 9457) 1s

# 或:
[root@gitlab backups]# gitlab-ctl restart

四、恢复验证

启动Gitlab后,就可以群Gitlab管理平台上去看看之前研发人员误操作删除的html文件是否已恢复。

在这里插入图片描述<点击跳转至开头>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云计算-Security

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值