步骤1、生成本地备份
1.1 通过gitlab-rake命令备份gitlab
gitlab提供的备份命令为gitlab-rake,备份命令使用如下:
gitlab-rake gitlab:backup:create
该命令会备份gitlab仓库、数据库、用户、用户组、用户密钥、权限等信息。
备份完成后备份文件会出现在
/var/opt/gitlab/backups/
1.2 定时备份gitlab
如果要使gitlab自动进行备份的话,我们可以通过crontab命令来实现自动备份。强烈建议使用系统crontab命令,而不是用户crontab。
以实现每天凌晨4点进行一次自动备份为例,系统的crontab配置如下:
crontab -e
0 4 * * * root /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1
然后重启crontab服务,如下:
systemctl restart crond
1.3设置备份保留时长
[root@ecs-5286 data]# cat gitlab/config/gitlab.rb | grep backup
###! Docs: https://docs.gitlab.com/omnibus/settings/backups.html
# gitlab_rails[‘manage_backup_path’] = true
# gitlab_rails[‘backup_path’] = “/var/opt/gitlab/backups”
###! Docs: https://docs.gitlab.com/ce/raketasks/backup_restore.html#backup-archive-permissions
# gitlab_rails[‘backup_archive_permissions’] = 0644
# gitlab_rails[‘backup_pg_schema’] = ‘public’
###! The duration in seconds to keep backups before they are allowed to be deleted
gitlab_rails[‘backup_keep_time’] = 604800
//备份保留7天
1.4 通过脚本定时执行备份任务
[root@gitlab backups]# cat git_bak.sh
#!/usr/bin/bash
/usr/bin/gitlab-rake gitlab:backup:create CRON=1
crontab -l
0 4 * * * /var/opt/gitlab/backups/git_bak.sh
1.5 备份至其他服务器
步骤2、备份数据恢复
要验证gitlab备份的有效性,我们可以把该备份文件复制到已经安装好gitlab服务器的/var/opt/gitlab/backups/目录下。然后进行数据恢复,最后访问并查看其数据完整性即可。
通过gitlab备份文件可以恢复gitlab所有的信息,包括仓库、数据库、用户、用户组、用户密钥、权限等信息。
ps:新服务器上的gitlab的版本号必须与创建备份时的gitlab版本号相同。
gitlab数据恢复比较简单,具体步骤如下:
2.1 停止相关数据连接服务
在gitlab服务器上停止相关数据连接服务,命令如下:
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
2.2 恢复gitlab仓库
现在我们要从1537261122_2018_09_18_9.2.5这个备份编号中,恢复数据,命令如下:
gitlab-rake gitlab:backup:restore BACKUP=1537261122_2018_09_18_9.2.5
如果出现多个done的信息,说明整个gitlab数据就已经正常恢复完毕。
2.3 启动gitlab服务
恢复完毕以后,我们现在来启动gitlab,使用以下命令:
gitlab-ctl start
强烈建议:重启该新服务器。