gitlab备份与恢复

 目录

一、修改数据存储位置:

二、修改备份存储位置:

三、每日整体备份

四、备份保存30天

五、自动备份

         六、备份恢复

七、备份文件的忽略


    前面有提到CentOS 下搭建Gitlab+Gitlab-runner,配置邮件提醒_xiaodaiwang的博客-CSDN博客,现在一起看看如何进行备份,诉求:1.每日整体备份;2.备份保存30天;3.备份数据恢复测试;

一、修改数据存储位置:

1、创建数据存储目录:

mkdir -p /data/gitlab-data

2、修改配置文件,插入位置信息:

vim /etc/gitlab/gitlab.rb

git_data_dirs({
“default” => {
“path” => “/data/gitlab-data”
}
})

gitlab备份与恢复_第1张图片

3、将旧的数据拷贝到新的数据目录下:

 rsync -av /var/opt/gitlab/git-data/repositories /data/gitlab-data/

 4、停止gitlab服务,加载配置

gitlab-ctl stop
gitlab-ctl reconfigure

5、加载完成后启动gitlab服务会看到/data/gitlab-data/下多了一个 repositories目录

gitlab-ctl start

二、修改备份存储位置:

1、创建备份存储位置:

mkdir -p /data/gitlab-backups

2、修改配置文件,插入位置信息:

vim /etc/gitlab/gitlab.rb

gitlab_rails['backup_path'] = "/data/gitlab-backups"

3、停止gitlab服务,加载配置

gitlab-ctl stop
gitlab-ctl reconfigure

三、每日整体备份

1、通过gitlab-rake命令备份gitlab

gitlab备份时需要保持运行状态,需要使用sudo权限,命令执行完毕后会在设置好的备份目录下生成备份文件,执行命令(GitLab 12.1之后版本):gitlab-backup create

或者

执行命令(GitLab 12.1及之前版本):gitlab-rake gitlab:backup:create

gitlab-backup create

 gitlab备份与恢复_第2张图片

 。。。

gitlab备份与恢复_第3张图片

/etc/gitlab/gitlab.rb 配置文件须备份
/var/opt/gitlab/nginx/conf nginx配置文件
/etc/postfix/main.cfpostfix 邮件配置备份
红字部分表示 gitlab.rb 和 gitlab-secrets.json 两个文件包含敏感信息。未被备份到备份文件中。需要手动备份。

四、备份保存30天

 修改配置文件 /etc/gitlab/gitlab.rb

gitlab_rails['manage_backup_path'] = true
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"

gitlab_rails['backup_archive_permissions'] = 0644   //生成的备份文件权限

gitlab_rails['backup_keep_time'] = 2592000      //默认备份保留天数为7天(604800秒,这里是30天)

更改完成后重载配置文件

gitlab-ctl reconfigure

五、自动备份

结合crontab实施自动定时备份,比如每天1点备份一次,关于crontab的介绍,可参考crontab定时执行命令_xiaodaiwang的博客-CSDN博客

写cron脚本文件,命名为gitlab_bak.cron

vim gitlab_bak.cron

0 1 * * * gitlab-backup create

添加定时任务。执行命令

crontab /root/gitlab_bak.cron >~/log

 "crontab -l" 查看定时任务是否成功或者检测/var/spool/cron下是否生成对应cron脚本

结果程序会每天凌晨1点执行一次备份命令

 第二天,查看是否进行了备份:

gitlab备份与恢复_第4张图片

最终脚本说明:

修改了crontab 内容,增加了备份脚本,备份脚本里写清执行备份,拷贝配置文件到文件夹,将文件夹增加压缩密码并压缩,将压缩后将备份文件拷贝到备份存储服务器中,

vim gitlab-bak.sh

#!/bin/sh

 gitlab-backup create  
cd /var/opt/gitlab/backups/


mkdir gitlab_$(date +%Y%m%d)

find . -name '*.tar' -ctime -1 -exec cp  {}  /var/opt/gitlab/backups/gitlab_$(date +%Y%m%d)/ \;

cp /etc/gitlab/gitlab.rb /var/opt/gitlab/backups/gitlab_$(date +%Y%m%d)
cp /var/opt/gitlab/nginx/conf /var/opt/gitlab/backups/gitlab_$(date +%Y%m%d)
cp /etc/postfix/main.cfpostfix /var/opt/gitlab/backups/gitlab_$(date +%Y%m%d)
cp /etc/gitlab/gitlab-secrets.json /var/opt/gitlab/backups/gitlab_$(date +%Y%m%d)
zip -rP password  gitlab_$(date +%Y%m%d).zip gitlab_$(date +%Y%m%d)/

cp  gitlab_$(date +%Y%m%d).zip /backup_wuhan/gitlab/

 命令中使用了-exec 参数 后跟的是command命令,它的终止是以;(分号)来结束,所以这句话命令后面的分号是必不可少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠 “” 就是我们常说的转义符。

六、备份恢复

将备份文件拷贝到待恢复测试的服务器上,注意:GitLab恢复数据的时候需要满足版本一致,即进行恢复的GitLab的版本和备份数据时的GitLab的版本一致。

1、安装git

2、安装gitlab

3、修改配置文件

4、启动gitab服务

5、停止与连接 数据库有关的进程

sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq

6、备份恢复

gitlab-rake gitlab:backup:restore BACKUP=/var/opt/gitlab/backups/1665366086_2022_10_10_15.4.0_gitlab_backup.tar

 gitlab备份与恢复_第5张图片

 。。。

gitlab备份与恢复_第6张图片

浏览器登录恢复前账号,测试可行。

对于 Gitlab-ce数据还原时发生PostgreSQL异常,可参考解决。Gitlab-ce数据还原时发生PostgreSQL异常_hu_wenjie的博客-CSDN博客

七、备份文件的忽略

全量备份时考虑到有些内容不需要备份,否则备份文件过大,拷贝起来比较缓慢,筛选信息,首先看一下备份文件说明:

db        //数据库备份:主要为PostgreSQL数据库数据内容

uploads                //附件数据备份

repositories                //Git仓库数据备份

builds                //CI 作业输入日志等数据备份

artifacts                //CI 作业工件数据备份(artifacts用于指定在job 成功或失败 时应附加                                  到作业的文件和目录的列表。)

lfs                //LFS对象数据备份

registry                //容器镜像备份

pages                //GitLab Pages content,页面内容数据备份

使用SKIP选项(指定的内容不作为备份的对象目录的意思),以忽略artifacts为例,

gitlab-backup create SKIP=artifacts

 gitlab备份与恢复_第7张图片

。。。

gitlab备份与恢复_第8张图片

你可能感兴趣的:(GitlabCI,crontab,gitlab)