Gitlab备份以及恢复

乔克
乔克
发布于 2024-11-15 / 8 阅读
0
0

Gitlab备份以及恢复

本地备份

直接使用 Gitlab 自带的命令即可:

gitlab-rake gitlab:backup:create

默认会将 tar 包备份到 /var/opt/gitlab/backups 目录下。

如果要更改备份目录,可以通过修改配置文件 /etc/gitlab/gitlab.rb 完成。

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

然重载配置文件即可。

gitlab-ctl reconfigure

异地备份

直接通过修改 Gitlab 配置文件备份至阿里的 OSS

修改 /opt/gitlab/etc/gitlab.rb 文件里的内容,如下:

gitlab_rails['backup_upload_connection'] = {

'provider' => 'aliyun',

'aliyun_accesskey_id' => '有权限访问存储桶的用户key',

'aliyun_accesskey_secret' => '有权限访问存储桶的密钥',

'aliyun_oss_endpoint' => 'http://oss-cn-shanghai-internal.aliyuncs.com',

'aliyun_oss_bucket' => 'my-backup',    //OSS名称

'aliyun_oss_location' => 'shanghai'      //oss地域

}

gitlab_rails['backup_upload_remote_directory'] = 'gitlab'    //存储gitlab备份的桶子目录

然后重载配置文件

gitlab-ctl reconfigre

然后就可以使用如下命令进行备份了。

gitlab-rake gitlab:backup:create

通过脚本命令本地备份以及上传阿里 OSS

除了直接备份到阿里 OSS 之外,还可以通过脚本备份到阿里的 OSS。

这中间会使用到阿里的一个工具 ossutil64【1】。

1、下载工具到备份脚本目录
mkdir ~/scripts
cd ~/scripts
wget https://gosspublic.alicdn.com/ossutil/1.7.7/ossutil64
2、配置 ossutils64 命令的配置文件
cat ~/scripts/.ossutilconfig 
[Credentials]
language=CH
endpoint=http://oss-cn-zhangjiakou.aliyuncs.com
accessKeyID=xxxxxx
accessKeySecret=xxxxxxx
bucketname=backup

3、编写 shell 脚本
# Gitlab自动备份脚本


#Gitlab 备份地址
LocalBackDir=/var/opt/gitlab/backups

#备份日志文件
LogFile=./remote_backup.log

#新建备份日志文件
touch $LogFile

echo "-------------------------------------------------------------------------" >> $LogFile

#记录本地生成gitlab备份日志
echo "Gitlab auto backup at local server, start at $(date +"%Y-%m-%d %H:%M:%S")" >>  $LogFile

#执行gitlab本地备份
gitlab-rake gitlab:backup:create >> $LogFile 2>&1

# $?符号显示上一条命令的返回值,如果为0则代表执行成功,其他表示失败
if [ $? -eq 0 ];then
   #追加日志到日志文件
   echo "Gitlab auto backup at local server successed at $(date +"%Y-%m-%d %H:%M:%S")" >> $LogFile
else
   #追加日志到日志文件
   echo "Gitlab auto backup at local server failed at $(date +"%Y-%m-%d %H:%M:%S")" >> $LogFile
fi

#查找本地备份目录修改时间为10分钟以内且后缀为.tar的Gitlab备份文件
Backfile_Send_To_Remote=`find $LocalBackDir -type f  -mmin -10 -name '*.tar' | tail -1` >> $LogFile 2>&1

# 备份到阿里云的oss
cd ~/scripts
./ossutil64 cp ${Backfile_Send_To_Remote} oss://resico-backup/backup/gitlab/ -c ./.ossutilconfig
添加定时备份
0 2 * * * /root/scripts/backup_gitlab.sh

恢复

不论是哪种备份方式,恢复都一样。

1、根据情况看是否需要停服务,数据库不能停
2、将需要恢复的备份文件拷贝到 /var/opt/gitlab/backups/ 目录下
3、设置备份文件的权限为 777
chmod 777 xxxxx
4、执行恢复命令
gitlab-rake gitlab:backup:restore BACKUP=xxxxxx

注意此处的 BACKUP 为备份文件编号, 如之前的文件 1508412719_2017_10_19_10.0.2_gitlab_backup.tar
则 BACKUP 为 1508412719_2017_10_19_10.0.2

5、启动或者重启 Gitlab
# 启动
gitlab-ctl start
# 重启
gitlab-ctl restart

引用

【1】 https://help.aliyun.com/document_detail/50451.html


评论