gitlab基于阿里云OSS自动备份与恢复

2019-12-06  本文已影响0人  aq_wzj

注意, 本文中的gitlab是用docker起的https://www.jianshu.com/p/d7f9510b4eee

1. 备份

gitlab的备份默认是放在AWS上,可以通过修改配置文件备份至阿里云OSS

1.1 修改gitlab配置文件

修改/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备份的桶子目录

1.2 生效配置

进入容器执行gitlab-ctl reconfigre让上步的配置生效

1.3 备份

在容器中执行gitlab-rake gitlab:backup:create,等命令成功结束后,到阿里云的OSS桶中检查,就会发现备份文件已经自动上传, 在你设置的备份路径下的1508412719_2017_10_19_10.0.2_gitlab_backup.tar文件

注意gitlab.rbgitlab-secrets.json文件可能会备份失败, 需要手动将这两个文件备份

这两个文件所在目录为/opt/gitlab/etc下面

1.4 定时备份

因为gitlab是用docker启动的, 在所以配置方法如下
# 1. 进入容器
docker exec -it gitlab bash
# 2. 创建备份脚本
vi /root/auto-backup.sh

#!/bin/bash
gitlab-rake gitlab:backup:create

chmod 755 /root/auto-backup.sh
# 3. 退出容器进到宿主机
ctrl +D
# 4. 创建定时任务
crontab -e
#   每天备份一次gitlab
0 0 * * * docker exec gitlab bash /root/auto-backup.sh > /var/log/crontab/gitlab.log 2>&1 &
#  备份完成删除备份文件
*/10 * * * * rm -rf /opt/gitlab/data/backups/*.tar

2. 恢复

2.1 开启新的环境

开启一个新的gitlab环境, 版本必须与之前的备份的版本一样

2.2 备份文件存放到指定目录

  1. 将需要恢复的1508412719_2017_10_19_10.0.2_gitlab_backup.tar文件移到新环境的/var/opt/gitlab/backups/目录下

  2. 再将之前备份的gitlab.rbgitlab-secrets.json文件覆盖新环境下的这两个文件, 所在目录为/etc/gitlab/

  3. 为其设置权限为777, chmod 777 /var/opt/gitlab/backups/1508412719_2017_10_19_10.0.2_gitlab_backup.tar

  4. 恢复命令

gitlab-rake gitlab:backup:restore BACKUP=1508412719_2017_10_19_10.0.2
# 注意此处的BACKUP为备份文件编号,
# 如之前的文件为1508412719_2017_10_19_10.0.2_gitlab_backup.tar
# 则BACKUP为1508412719_2017_10_19_10.0.2

等待片刻后输入两次yes完成恢复

  1. 启动gitlab
gitlab-ctl start

参考自以下链接:

https://www.cnblogs.com/straycats/p/7702271.html

https://www.jianshu.com/p/bb25ff793000

上一篇下一篇

猜你喜欢

热点阅读