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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gitlab基于阿里云OSS自动备份与恢复相关的知识,希望对你有一定的参考价值。

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

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

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

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

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

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

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

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

参考自以下链接:

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

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

混合云存储组合拳:基于云存储网关与混合云备份的OSS数据备份方案

前言
阿里云对象存储(OSS)用户众多。很多用户因为业务或者合规性需求,需要对OSS内的数据做备份,无论是线上备份,还是线下备份。用户可以选择使用OSS的开放API,按照业务需求,做数据的备份,也可以选择OSS已有的服务进行数据备份,比如OSS的跨域复制。但是,前一种方式,存在易用性和备份效率问题;后一种方式,只是将数据存双份或者多份,无法有效规避原始数据出问题后,被复制的那份数据也出问题的风险。本文介绍的基于云存储网关和混合云备份的OSS数据备份方案,不仅能保证OSS数据按策略的多版本备份,而且配置简单,性能好,效率高,成本低。

基于云存储网关和混合云备份的OSS备份
以下是基于混合云产品的OSS备份方案架构图。首先,通过一台云存储网关将OSS bucket中的文件反向同步至网关缓存中;在一台ECS上挂载云存储网关的目录,并安装混合云备份agent;最后,配置混合云备份策略和任务即可方便地将存储网关中的文件多版本的备份在云灾备库中。

技术分享图片

基于混合云产品的OSS备份架构图

  • 实施与配置

首先,用户需要登陆阿里云控制台,开通云存储网关服务 。此处需要注意一点:出于备份性能和效率的考虑,云存储网关和之后的混合云备份的区域应该跟备份源端OSS所在的区域一致。

这里我们创建一个性能型的云存储网关,保证OSS数据同步到云存储网关,以及后续云存储网关上的数据备份到灾备库的带宽和性能有保障。当然,用户完全可以根据OSS内的数据总大小和增速,文件数目,单个文件的大小来决定选用哪种类型的云存储网关。

技术分享图片
创建云存储网关

创建完成之后,进入网关的管理配置页面,进行简单的三步配置:缓存设置,云资源设置和挂载目录设置。

技术分享图片

云存储网关管理页面

缓存设置是将网关的缓存配置生效的过程。点击创建,选择可用的缓存盘即可完成创建。

技术分享图片

缓存设置

云资源设置是将OSS bucket与云存储网关连接的过程。用户只需要选择同步的bucket名称即可。云存储网关支持SSL加密连接OSS,保证数据传输的安全。

技术分享图片

云资源设置

目录设置是对客户端提供挂载目录的过程。云存储网关支持NFS和CIFS两种通用的NAS协议。这里我们配置NFS挂载目录。需要注意的一个配置项是‘反向同步’。因为我们需要将OSS bucket内的文件同步至云存储网关上,因此,反向同步需要选择‘是’。另外,‘模式’保持默认的‘缓存模式’。这样云存储网关只保留热数据及冷数据的元数据。而同步模式则是缓存盘大小和云上OSS的文件总大小保持一致。注意到高级设置中有‘方向同步时间间隔’一项,它的作用是让网关每隔多久去OSS拉去最新的文件,并同步到网关上。放在整个方案中考虑,该选项无需设置的很短,因为之后的混合云备份是按照小时或者天级别来定义周期性备份的,所以比较合理的设置是让云存储网关以小时级去反向同步OSS的数据。

技术分享图片

NFS目录配置

至此,云存储网关上的配置就全部结束了。接下来,需要申请一台ECS来挂载云存储网关提供的NFS目录。这里申请一台内网带宽高的ECS与高性能网关的带宽匹配。之后,就可以去开通混合云备份了。开通之后,选择好区域之后,也只需要简单的三步即可:创建备份库,下载安装备份agent和备份策略和任务的配置。

创建备份库,十分简单:给备份仓库取名字,确定备份类型和下载客户端和证书。

技术分享图片

创建备份仓库

技术分享图片

选择备份类型

技术分享图片

添加客户端

技术分享图片

下载客户端和证书

将下载完成的客户端软件上传至之前申请的Linux ECS上,解压并安装。

技术分享图片
技术分享图片

上传并安装备份客户端

安装完成之后,在浏览器上打开这个URL:http://<云主机公网IP>:8011。之后,会弹出备份客户端的注册页面。需要用户输入之前下载的证书(注册和连接备份源和备份仓库的钥匙),AK认证信息和客户端登陆密码。因为备份的整个链路都在阿里云网内,所以网络类型需要选择‘专有网络(VPC)’。

技术分享图片

备份客户端注册页面

注册成功之后,用户就能看到客户端备份页面。该页面是用户创建备份和恢复数据的入口。在备份之前,记得要将云存储网关的NFS目录挂载在这台ECS上。再回到备份客户端页面,可以先创建一个计划备份(立即备份是只备份一次,计划备份是按策略周期性的备份)。创建计划备份需要先创建一个备份策略。这里定义一个每天下午5点半开始的备份策略。备份数据会在备份库中保存2年的时间。

技术分享图片

创建备份策略

接下来就是创建备份了。将ECS的挂载目录输入到源地址中,选择‘计划备份’和之前创建的备份策略,提交即可。

技术分享图片

创建计划备份

提交之后,就看到了备份任务。看详情的话,就知道上次备份的状况和下次备份的时间。

技术分享图片

计划备份详情

当时间到了之后,备份就会被自动触发。可以看到备份任务正在扫描文件总数和数据总量,并实时地显示备份速度。

技术分享图片

执行中的计划备份任务

下图是备份过程中的一些统计。需要指出的是状态中的进度百分比会出现抖动,有时候会低于之前的进度。这是因为在统计备份进度的时候,是根据已备份的数据占总计备份文件的比例。因为云存储网关在不停地反向同步OSS的文件,这样就会在扫描文件的时候,出现备份文件的性能跟扫描文件性能交替的情况,导致用户看到的进度不是一直递增的。有些时候会出现进度变成了100%,但实际上,云存储网关马上又会同步很多新文件给备份服务去备份,进度又会变成90%多。

技术分享图片

扫描完成后的计划备份任务

技术分享图片

OSS上的文件数和存储空间统计

在备份进行中,还可以去云存储网关的监控页面查看缓存和网络吞吐性能。从下图可以看出来,网关从下午5点钟的时候就一致在持续从OSS中读取文件到被备份的ECS所读取。

技术分享图片

云存储网关性能图

等待备份完成,可以看到这次备份的文件总数,和上面OSS控制台看到的文件数目是一致的。另外,就是用户最为关心备份性能,44.88MB/s。通过文件总大小和总数计算出,文件的平均大小为6.8MB左右,属于中等偏下的文件规格。考虑到很多目录结构很深,这样的备份性能是十分不错的。另外,因为云存储网关反向同步写磁盘和备份服务读磁盘,对于200G的缓存盘而言,也接近瓶颈了。如果用户的备份数据量比较多,单个文件更大,并且还想提高备份性能,可以增加缓存盘的容量。这种场景下,几百MB/s的备份性能也是可以达到的。

技术分享图片

备份完成

还可以去控制台的混合云备份页面查看控制台上的备份仓库信息。可以看到进行了1次备份,也成功了。关键的信息是右侧的原始数据和实际占比。可以看到经过混合云备份后的数据,实际占用是1.31TB,小于原始数据的大小,因为混合云备份在将备份数据写到备份库的时候,对数据做了重删压缩。

技术分享图片

备份库信息

总结
云存储网关和混合云备份服务搭配的OSS备份方案是一款云原生的OSS备份方案,可以在阿里云控制台一站搞定。整个方案不仅可以满足OSS用户对于备份性能和多版本的要求,而且非常有性价比。云存储网关目前处于开放公测阶段,是免费的。混合云备份服务是按照备份客户端数目和去重压缩后的备份库容量收费,既可以按需购买,也可以购买资源包,灵活且用户友好。

另外,所有用户都会关心备份的数据一致性和数据安全。在整条备份链路中,云存储网关反向同步OSS数据到缓存盘的时候,会有数据一致性校验;在备份服务读取缓存盘数据,再写到备份库的时候,也有一致性校验。并且,整条备份链路是数据加密的。当数据写到备份库的时候,备份库的三副本技术也确保了用户数据万无一失。

最后,当用户需要恢复数据的时候,混合云备份服务可以细粒度到按文件恢复到指定目录,结合云存储网关的跨VPC访问的特性,可以做到数据恢复和分发的灵活性。

以上是关于gitlab基于阿里云OSS自动备份与恢复的主要内容,如果未能解决你的问题,请参考以下文章

Gitlab的备份与恢复

阿里云云中沙箱自助实验-从Gitlab数据库被删看数据备份的重要性!

Linux(CentOS7)设置自动备份数据库到阿里云OSS

如何将数据库备份到阿里云的OSS上

阿里云OSS对象存储内容增量备份到本地

gitlab 自动备份与清理