背景
备份gitlab大多采用gitlab-rake系统自带的命令进行全量导出并传输至新服务器进行全量恢复,针对数据较大(60G完成备份及恢复大概2小时11分,机器性能8核16G,高性能盘,ssd盘可能较快)备份及恢复gitlab代码库耗时较长
备份方式
每次全量备份整个gitlab应用及配置文件(包含代码库)
备份内容
可查找列出清单
find / -name "*gitlab*"
image.png
很多,经过整理,如果配置文件采用默认的,主要关注前4个目录,最后两个钩子文件夹,主要是做的全局钩子限定,无特殊配置,无此目录:
image.png
一次全量备份,60G数据,耗时10分钟左右
image.png
一次全量恢复,60G数据,耗时7分钟左右,恢复job已清理,暂不提供。
恢复完成,在恢复服务器直接执行脚本,可直接启动
启动脚本
#!/bin/bash
#执行gitlab恢复,先进行配置文件软链接
ln -s /opt/gitlab/embedded/etc/90-omnibus-gitlab-kernel.sem.conf /etc/sysctl.d/90-omnibus-gitlab-kernel.shmmax.conf
ln -s /opt/gitlab/embedded/etc/90-omnibus-gitlab-kernel.shmall.conf /etc/sysctl.d/90-omnibus-gitlab-kernel.shmall.conf
ln -s /opt/gitlab/embedded/etc/90-omnibus-gitlab-kernel.shmmax.conf /etc/sysctl.d/90-omnibus-gitlab-kernel.sem.conf
ln -s /opt/gitlab/embedded/etc/90-omnibus-gitlab-net.core.somaxconn.conf /etc/sysctl.d/90-omnibus-gitlab-net.core.somaxconn.conf
ln -s /opt/gitlab/bin/gitlab-ctl /usr/bin/gitlab-ctl
ln -s /opt/gitlab/bin/gitlab-psql /usr/bin/gitlab-psql
ln -s /opt/gitlab/bin/gitlab-rails /usr/bin/gitlab-rake
ln -s /opt/gitlab/bin/gitlab-rake /usr/bin/gitlab-rails
ln -s /usr/lib/systemd/system/gitlab-runsvdir.service /etc/systemd/system/basic.target.wants/gitlab-runsvdir.service
#执行runsv启动
systemctl daemon-reload
systemctl start gitlab-runsvdir
#获取当前机器ip,执行gitlab配置
IP=`ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | cut -f1 -d '/'`
echo $IP
#修改etc gitlab.rb 重配ip地址
sed -i "s/gitlab.xxxxx.com.cn/$IP/g" /etc/gitlab/gitlab.rb
gitlab-ctl reconfigure
#执行gitlab重启
gitlab-ctl restart
具体实现方式及操作后续更新
注:gitlab运行后,想要完全清理干净,再重新恢复,执行 清理
find / -name "*gitlab*" | xargs rm -rf
会报错,执行
ps -aux | grep gitlab | cut -c 10-15 | xargs kill -9
再执行清理命令可解决!