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.rb
与gitlab-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 备份文件存放到指定目录
-
将需要恢复的
1508412719_2017_10_19_10.0.2_gitlab_backup.tar
文件移到新环境的/var/opt/gitlab/backups/
目录下 -
再将之前备份的
gitlab.rb
与gitlab-secrets.json
文件覆盖新环境下的这两个文件, 所在目录为/etc/gitlab/
-
为其设置权限为777,
chmod 777 /var/opt/gitlab/backups/1508412719_2017_10_19_10.0.2_gitlab_backup.tar
-
恢复命令
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
完成恢复
- 启动gitlab
gitlab-ctl start
参考自以下链接: