本文由ilanniweb微信公众号提供友情赞助,首发于烂泥行天下
jenkins技术分享QQ群:571981257
目前公司使用的是gitlab进行代码仓库的管理,为了更好的管理代码仓库,我们需要对gitlab的所有数据进行备份,然后通过备份文件恢复gitlab,并验证备份的有效性。
一、 备份gitlab
gitlab的备份比较简单,我们直接使用gitlab本身提供的命令进行备份即可。
1.1 通过gitlab-rake命令备份gitlab
gitlab提供的备份命令为gitlab-rake,备份命令使用如下;
gitlab-rake gitlab:backup:create
该命令会备份gitlab仓库、数据库、用户、用户组、用户密钥、权限等信息。
通过上图,我们可以很明显的看出备份后的文件是1522918586_2018_04_05_10.6.2_gitlab_backup.tar。
注意:该备份文件的名称中1522918586_2018_04_05_10.6.2是此次备份的编号。该编号我们会在后续恢复gitlab数据使用到。
以上备份命令的执行会牵涉到以下文件:
ll /opt/gitlab/embedded/service/gitlab-rails/lib/backup/
默认备份后的文件存在/var/opt/gitlab/backups/目录下,如下:
ls -al /var/opt/gitlab/backups/
如果要修改gitlab备份文件存储的路径的话,我们可以修改gitlab.rb文件。如下:
vim /etc/gitlab/gitlab.rb
gitlab_rails['backup_path'] = "/data/gitlab/backups"
然后执行gitlab-ctl reconfigure命令重载配置文件即可。如下:
gitlab-ctl reconfigure
1.2 定时备份gitlab
如果要使gitlab自动进行备份的话,我们可以通过crontab命令来实现自动备份。
以实现每天凌晨4点进行一次自动备份为例,系统的crontab配置如下:
vim /etc/crontab
0 4 * * * root /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1
然后重启crontab服务,如下:
systemctl restart crond
1.3 保留部分备份文件
随着时间的推移gitlab备份文件越来越多,服务器的磁盘空间也不够大。
此时我们就要删除部分旧的备份文件,gitlab也提供了删除旧的备份文件功能。该功能在gitlab的配置文件中,进行配置即可。
在此以保留7天之前的备份文件为例,如下:
vim /etc/gitlab/gitlab.rb
gitlab_rails['backup_keep_time'] = 604800
其中backup_keep_time是以秒为单位进行计算的,然后执行命令gitlab-ctl reconfigure即可。
二、gitlab仓库恢复
要验证gitlab备份的有效性,我们可以把该备份文件复制到已经安装好gitlab服务器的/var/opt/gitlab/backups/目录下。然后进行数据恢复,最后访问并查看其数据完整性即可。
通过gitlab备份文件可以恢复gitlab所有的信息,包括仓库、数据库、用户、用户组、用户密钥、权限等信息。
注意:新服务器上的gitlab的版本号必须与创建备份时的gitlab版本号相同。
gitlab数据恢复比较简单,具体步骤如下:
2.1 停止相关数据连接服务
在gitlab服务器上停止相关数据连接服务,命令如下:
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
2.2 恢复gitlab仓库
现在我们要从1522918586_2018_04_05_10.6.2这个备份编号中,恢复数据,命令如下:
gitlab-rake gitlab:backup:restore BACKUP=1522918586_2018_04_05_10.6.2
看到以上信息,说明整个gitlab数据就已经正常恢复完毕。
2.3 启动gitlab服务
恢复完毕以后,我们现在来启动gitlab,使用以下命令:
sudo gitlab-ctl start
强烈建议:重启该新服务器。
2.4 验证gitlab完整性
通过上图,我们可以很明显的看出gitlab的数据确实已经完全恢复,数据没有缺失。
至此,有关gitlab的备份与恢复介绍与操作结束。