Centos7.9下gitlab16.0.4自动备份及还原

by:垃圾程序员

零:前言

想要实现GitLab自动备份,可以借助GitLab自带的备份脚本以及Linux系统的crontab定时任务功能。

有些同志可能没接触过crontab——Linux系统中自带的一个定时任务管理工具,可以通过它设置系统定期执行某些命令或脚本。在下文相关部分我会再浅浅的说一下配置。

一、自动备份

1.1GitLab备份脚本

GitLab自带了备份脚本,可以通过执行命令gitlab-rake gitlab:backup:create来进行备份。备份文件默认会保存在/var/opt/gitlab/backups目录下。当然这些配置是可以更改的:

打开GitLab的配置文件/etc/gitlab/gitlab.rb

#设置备份文件存放路径

gitlab_rails['backup_path'] = "/mnt/backups"

#设置备份文件的权限

gitlab_rails['backup_archive_permissions'] = 0644

#设置备份文件保留时间(单位为秒),超过该时间的备份文件将被自动清理

gitlab_rails['backup_keep_time'] = 604800

设置完成后别忘了重新加载配置文件

sudo gitlab-ctl reconfigure

重新启动GitLab服务

sudo gitlab-ctl restart

到这一步你已经按照自己的心意配置好了备份脚本的功能,可以试一试手动备份了,友情提示:最好确保你的仓库没有处于交互状态下。

什么?你问我怎么进行手动备份?好吧,请看:

GitLab自带了备份脚本,可以通过执行命令gitlab-rake gitlab:backup:create来进行备份。看这种垃圾文章也不可一目十行,去看看你配置好的路径下有没有备份文件吧。

还有一件事:在备份 GitLab 时,gitlab.rbgitlab-secrets.json 配置文件中包含敏感数据,并未包含在备份文件中,这个就要靠你自己了,在仓库迁移到新服务器的时候一定要做好备份

gitlab.rb 文件包含 GitLab 的配置参数,如端口号、域名、SSL 设置等。

gitlab-secrets.json 文件则包含了一些关键的安全密钥,比如加密用的 token、私钥和公钥等。

1.2定时任务

接下来我们就要借助crontab的力量了,我们既然可以通过执行命令进行备份,那么我们找一个管家,按照咱们的意愿执行命令,这不就可以实现自动备份了吗。crontab就是这个管家。

本文未涉及crontab服务的安装过程,请依照不同系统安装好再继续向下观看!

当然“机无完机”,管家也是有依赖的,crontab定时任务依赖于系统时间,如果系统时间不准确,可能会导致定时任务执行时间不准确。开始搞事之前先确认一下机器的时间吧。

每个用户都有一个crontab文件,它包含了要运行的命令或脚本以及运行这些命令的时间计划,文件通常保存在/var/spool/cron目录中。这样是不是每添加一个定时任务,就需要修改一下这个目录下的文件呢,当然按照我说这句话的语义来判断,你肯定知道了还有别的方法。别搜索了,请看:

  • -u:指定要操作的用户。默认情况下,crontab 命令将会使用当前用户的 crontab 文件。
  • -e:打开指定用户的 crontab 文件以进行编辑。如果文件不存在,则会创建一个新的 crontab 文件。
  • -l:列出指定用户的 crontab 文件中的所有条目。
  • -r:删除指定用户的 crontab 文件。在运行此命令之前,程序会提示你确认是否要删除。
  • -i:当运行 -r 命令时提示用户进行确认。
  • -n:在群集环境中,指定要运行 crontab 的主机。
  • -c:在群集环境中,获取当前运行 crontab 的主机。
  • -s:设置 SELinux 上下文。
  • -x <mask>:启用调试模式,方便调试 crontab 任务。

1.2.1添加备份命令

打开编辑模式

crontab -e

添加命令行

在这可能有个问题,请确认一下 /usr/bin/gitlab-rake符号链接是否存在,如果存在按照下文添加即可。如果不存在,则需要你自行找到“gitlab-rake命令行工具”在哪个路径下,并把下文路径“/usr/bin/gitlab-rake”替换成对应路径。

#每天凌晨 02:00执行备份脚本命令
0 2 * * * /usr/bin/gitlab-rake gitlab-rake gitlab:backup:create

具体来说,0 2 * * * 是 cron 时间格式的一部分,表示分别为 分钟、小时、日期、月份、星期几,你可以根据你的需求修改。在这个例子中,它代表的是:

  • 0:在 0 分钟执行;
  • 2:在 2 点(也就是凌晨两点)执行;
  • *:每个值都匹配,即每个日期、月份及星期都匹配;
  • *:每个值都匹配,即每个月份都匹配;
  • *:每个值都匹配,即每个星期都匹配。

1.2.2查看定时任务

输入命令查看正在运行的定时任务,如果发现了刚才添加的命令就大功告成了。

crontab -l

二、备份还原

2.1停止 GitLab 组件

在还原过程中,需要停止 GitLab 组件以保证数据的一致性。

#负责 Web 请求的流量控制、负载均衡和应用进程管理的组件

sudo gitlab-ctl stop unicorn

#处理异步任务的核心组件,例如发送电子邮件、构建代码等
sudo gitlab-ctl stop sidekiq

2.2还原数据

执行以下命令来还原备份文件,其中 <TIMESTAMP> 表示备份文件的时间戳和版本,备份文件在哪找不用我bb了吧。

sudo gitlab-backup restore BACKUP=<TIMESTAMP>

这是一个备份文件:1687165982_2023_06_19_16.0.4_gitlab_backup.tar。以它为例:

<TIMESTAMP>就应该替换为1687165982_2023_06_19_16.0.4

还原的过程中会输入两次yes,待其跑完流程后,如果是你在一个新的服务器将仓库迁移过去别忘了把gitlab.rbgitlab-secrets.json 配置文件也替换过去。

2.3启动GitLab 服务

执行以下命令启动 GitLab 服务:

sudo gitlab-ctl start

此刻朋友这杯酒最珍贵

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值