gitlab备份和恢复
前言
Gitlab的备份任务将会创建一个包含数据库,所有仓库和所有附件的存档文件,将仓库从一个服务器迁移到另一个服务器的最佳方法是通过备份还原。需要注意一点,备份的存档文件只能恢复到与其创建的Gitlab完全相同的版本和类型(CE/EE)。
本文基于Omnibus软件包安装Gitlab 11.4.5版本。
一、创建Gitlab系统备份
了解下创建一个备份文件,将会备份哪些内容
- Database(数据库)
- Attachments(附件)
- Git repositories data(Git仓库数据)
- CI/CD job output logs(CI/CD作业输出日志)
- CI/CD job artifacts(CI/CD作业生成的附件)
- LFS objects
- Container Registry images
- GitLab Pages content
注意:GitLab不备份任何配置文件,SSL证书或系统文件
1.备份配置文件
- /etc/gitlab/gitlab-secrets.json
- /etc/gitlab/gitlab.rb
2.执行备份命令
[root@179 ~]#gitlab-rake gitlab:backup:create
a.备份命令还有一些其他参数选项来实现指定操作,这里不做详述,请参考官方文档《backup-options》
以下是执行命令后的输出效果图
b.查看备份产生的tar包文件
[root@179 ~]#cd /var/opt/gitlab/backups
进入到该路径下
3.自定义备份目录路径
a.修改/etc/gitlab/gitlab.rb配置文件,设置以下几个字段
gitlab_rails['manage_backup_path'] = true gitlab_rails['backup_path'] = "/data/gitlab/backups" //gitlab备份目录 gitlab_rails['backup_archive_permissions'] = 0644 //生成的备份文件权限 gitlab_rails['backup_keep_time'] = 604800 //备份保留天数为7天(即604800秒)
b.设置该文件夹的拥有者和群组为 git.root
[root@179 ~]# mkdir -p /data/gitlab/backups [root@179 ~]# chown -R git.git /data/gitlab/backups [root@179 ~]# chmod -R 777 /data/gitlab/backups
c.重载Gitlab配置文件,使上述修改生效
[root@179 ~]#gitlab-ctl reconfigure
4.配置自动定时备份
[root@179 ~]crontab -e
如下图,编辑区添加以下行来安排每天凌晨2点的备份:
0 2 * * * /opt/gitlab/bin/gitlab-backup create
注意:环境变量CRON=1的作用是如果没有任何错误发生时, 抑制备份脚本的所有进度输出
执行crontab -l查询一下,定时任务是否添加成功