一般意义上,备份指的是数据备份或系统备份,容灾指的是不在同一机房的数据备份或应用系统备份。备份采用备份软件技术实现,而容灾通过复制或镜像软件实现,两者的根本区别在于:
(1)容灾主要针对突发灾难,如电力、洪水,地震等不可控异常因素,因此容灾备份中心与主中心间必须保证一定的安全距离;而数据备份可在同一数据中心进行。
(2)容灾系统不仅保护数据,更重要的目的在于保证业务的连续性;而数据备份系统只保护数据的安全性。
(3)容灾保证数据的完整性;备份则一般恢复出备份时间点以前的数据。
(4)容灾是在线过程;备份是离线过程。
(5)容灾系统中,两地的数据是实时一致的;备份的数据则具有一定的时效性。
(6)故障情况下,容灾系统的切换时间是几秒钟至几分钟;而备份系统的恢复时间可能几小时到几十小时。
本文主要从数据备份角度来介绍目前可用的实施方案。关于容灾方案请关注https://km.woa.com/group/40319/articles/show/516112
不可抗力因素,如地震、洪水等。
密钥泄漏,覆盖或删除对象资源,例如密钥泄漏到github,黑客入侵,恶意勒索。
人为主观因素恶意删除或修改,例如广为流传的“删库跑路”。
人为客观因素误删除数据,更多的一般为业务间对数据认识的不对称,造成误删。
开启对应存储桶的版本控制选项
COS控制台---选中指定存储桶---容错容灾管理---版本控制---开启版本控制
版本控制无需其他资源,在当前桶开启版本控制功能即可。
开启版本控制后,无需对上传和访问逻辑增加特殊代码,仅需要对删除对象和冗余数据做及时清理,已控制存储成本。
以.NET SDK为例
单对象删除增加SetVersionId,可删除指定版本
对于对象或前缀集合,可通过ListBucketVersions来查询历史版本信息
控制台展示对象版本信息
业务无需切换。
控制台停用版本控制(注:多版本开启后不可关闭,只可暂停)
对桶内的数据实现了多版本冗余,可避免覆盖同文件,误删除,等常见的数据损失操作,但无法防止恶意带版本号删除,生命周期删除等主动式删除行为。
属于安全级别中等的防护措施。
成本主要依赖于业务侧多版本的保存周期,可配合生命周期进行版本清理。
多版本清理周期内为:上传流量总量==存储对象增量。
多版本清理周期外为:存储原对象存量。
删除后不可访问,通过版本恢复后可访问。
资源存储量:1倍<X<=1倍+上传增量
位置:COS控制台--bucket-容错容灾管理--存储桶复制
根据业务需求,选择目标存储类型。
如果为两地多活,建议目标存储类型设置为标准存储或低频存储。
如果为两地主备,建议目标存储类型为归档存储或深度归档存储。
配置完成后,增量数据即可自动同步。存量数据需要进行手动复制,可选用MSP产品进行操作。
创建两个bucket会得到两个bucket默认域名。业务侧可通过配置方式,自主实现切换域名访问动作。
CosXmlConfig config = new CosXmlConfig.Builder()
.SetRegion("ap-beijing")
//.SetRegion("ap-chongqing")
// 设置默认的地域为北京,备份地域为重庆, COS 地域的简称请参照 https://cloud.tencent.com/document/product/436/6224
.Build();
string bucket = "beijing-master-12539XXXXX";
//string bucket = "nanjing-backup-12539XXXXX";
注:如果是深度归档或归档类型对象,需进行回热后才可以访问。
参考文档:对象存储 POST Object restore-API 文档-文档中心-站长素材网
注:调试代码过程中,建议使用多个子帐号AK管理不同园区的存储桶,子账号间bucket授权不要有交集,防止因某个子帐号信息泄漏导致备份存储桶的连带影响。
调试成功后可发布,不影响现网访问。
跨园区存储桶复制功能是一种可靠性极高的容灾方案,可避免单园区级的故障影响,及时切换备份桶,持续提供服务。
可避免:跨园区备份方案可避免代码bug带来的单园区故障,可避免园区级攻击导致的服务切换中存在的短时影响,可避免单机故障时自动剔除策略生效时的短暂影响。
不可避免:默认域名的根域名被运营商恶意限制的影响,如需优化,可以使用自定义域名绑定bucket作为主域名使用,也可以使用bucket-appid.cos.【园区】.tencentcos.cn域名作为备份域名使用,最大程度防止运营商的误操作行为。
例如北京园区源桶为100GB标准存储,月价格为0.15元*100=15元;目标南京园区存储桶为100GB归档存储,月价格为0.03元*100=3元。
例如:源存储桶每月上传量为50GB。月增加额为50*0.5元=25元。
全增量主备的同步策略,可防止误删除和恶意删除事件,从备份存储桶内恢复目标文件。
多源开启删除标记的相互同步策略,可防止单园区级别故障导致的服务不可用,同时也可控制成本。
资源存储量:1倍<X<=1倍+源站多版本增量+目标桶上传多版本增量-生命周期自动清除量
● COSFS工具(必备)
● CVM(必备)
● CFS实例(二选一)
● CBS实例(二选一)
● 挂载COS接入点
以centos为例,安装依赖环境
sudo yum install libxml2-devel libcurl-devel -y
配置账号密钥信息并授权
echo <BucketName-APPID>:<SecretId>:<SecretKey> > /etc/passwd-cosfs
chmod 640 /etc/passwd-cosfs
创建挂载接入点目录
mkdir /data-cos/
挂载接入点
cosfs <BucketName-APPID> <MountPoint> -ourl=http://cos.<Region>.myqcloud.com -odbglevel=info -oallow_other
● 挂载CFS接入点
以centos为例,安装依赖环境
sudo yum install nfs-utils
创建挂载接入点目录
mkdir /data-cfs/
挂载接入点
sudo mount -t nfs -o vers=4.0,noresvport <挂载点 IP>:/ <待挂载目录>
● 挂载CBS接入点
创建CBS实例及控制台操作磁盘挂载略
初始化云硬盘
mkfs.ext4 /dev/vdb
创建云硬盘接入点目录
mkdir /data-disk/
挂载接入点
mount /dev/vdb /data-disk
挂载后效果,执行df -h
## 需求:
每天凌晨3点做一次备份
将备份命令写入一个脚本中
## 任务:
1.每天备份文件名要求格式:DB2022-08-02.tar.gz
2.在执行计划任务时,不要输出任务信息
# 1.先写脚本
#!/bin/bash
## 设置目录的变量名
bak_dir="/data-cos/DBBak"
## 创建目录
mkdir -p $bak_dir
cd $bak_dir
## 实现包名加日期需求
tar zcf ./DB$(date +%F).tar.gz ./dbbak
## 实现压缩包复制至异构存储设备:CFS和数据盘
cp ./DB$(date +%F).tar.gz /data-cfs/
cp ./DB$(date +%F).tar.gz /data-disk/
## 删除临时文件
rm -f ./DB$(date +%F).tar.gz
# 2.编写定时任务
(1)先每分钟测试,查看是否成功,成功后再写入需求
[root@localhost ~]# crontab -e
0 3 * * * /bin/sh ~/backup_etc.sh &>/dev/null
# +---------------- minute 分钟(0 - 59)
# | +------------- hour 小时(0 - 23)
# | | +---------- day 日期(1 - 31)
# | | | +------- month 月份(1 - 12)
# | | | | +---- week 星期(0 - 7) (星期天=0 or 7)
# | | | | |
# * * * * * 要运行的命令
测试执行成功后可以看到压缩并输出到指定存储设备目录
属于旁路备份,不涉及业务
不涉及回滚
CFS实例存储成本,北京园区 0 - 10TiB 0.35元/GiB/月
CBS实例存储成本,高性能云硬盘 北京园区刊例价0.35 元/GB/月
全/增量备份策略,可防止误删除和恶意删除事件,从备份存储设备内恢复目标文件。异构设备可根据业务规则自行清理过期文件控制成本。
资源存储量:1倍<X<=1倍+异构设备存储-异构设备删除过期存储资源
● CVM实例
● 无服务器函数实例
● CMQ
这里以用ossimport工具为例,定时900秒轮询拉取COS数据并上传至OSS。
工具相关配置
//开启轮询任务
isIncremental=true
//轮询任务的间隔时间
incrementalModeInterval=900
//源桶信息
srcAccessKey=XXX
srcSecretKey=XXX
//源桶类型
srcType=cos
//源桶地域信息
srcDomain=gz
//源桶名称
srcBucket=wainsungz
//目标账号信息
destAccessKey=XXX
destSecretKey=XXX
//目标桶的域名
destDomain=http://oss-cn-beijing.aliyuncs.com
//目标桶名称
destBucket=sunweibjtest
//COS桶的特殊配置 ,appid
appId=125398xxxx
启动后,ossimport会生成一个task,开始批量进行复制
属于旁路备份,不涉及对现网改动
旁路逻辑,可自主选择回滚
CVM配置迁移工具
OSS保存冗余存储量
全/增量备份策略,可防止误删除和恶意删除事件,从备份存储设备内恢复目标文件。友商云可有效的控制主账号级别权限。CDN回源可配置跨云多活。
资源存储量:1倍<X<=1倍+目标目录的上传增量-备份桶资源清理量