COS对象存储数据冗余备份方案

2023-03-09 07:13:36 浏览数 (2)

数据安全背景

数据安全容灾与备份

一般意义上,备份指的是数据备份或系统备份,容灾指的是不在同一机房的数据备份或应用系统备份。备份采用备份软件技术实现,而容灾通过复制或镜像软件实现,两者的根本区别在于:

(1)容灾主要针对突发灾难,如电力、洪水,地震等不可控异常因素,因此容灾备份中心与主中心间必须保证一定的安全距离;而数据备份可在同一数据中心进行。

(2)容灾系统不仅保护数据,更重要的目的在于保证业务的连续性;而数据备份系统只保护数据的安全性。

(3)容灾保证数据的完整性;备份则一般恢复出备份时间点以前的数据。

(4)容灾是在线过程;备份是离线过程。

(5)容灾系统中,两地的数据是实时一致的;备份的数据则具有一定的时效性。

(6)故障情况下,容灾系统的切换时间是几秒钟至几分钟;而备份系统的恢复时间可能几小时到几十小时。

本文主要从数据备份角度来介绍目前可用的实施方案。关于容灾方案请关注https://km.woa.com/group/40319/articles/show/516112

适用场景

不可抗力因素,如地震、洪水等。

密钥泄漏,覆盖或删除对象资源,例如密钥泄漏到github,黑客入侵,恶意勒索。

人为主观因素恶意删除或修改,例如广为流传的“删库跑路”。

人为客观因素误删除数据,更多的一般为业务间对数据认识的不对称,造成误删。

版本控制方案

数据安全架构

流程与实施

资源准备

开启对应存储桶的版本控制选项

COS控制台---选中指定存储桶---容错容灾管理---版本控制---开启版本控制

环境搭建

版本控制无需其他资源,在当前桶开启版本控制功能即可。

调试与实施

开启版本控制后,无需对上传和访问逻辑增加特殊代码,仅需要对删除对象和冗余数据做及时清理,已控制存储成本。

以.NET SDK为例

单对象删除增加SetVersionId,可删除指定版本

对于对象或前缀集合,可通过ListBucketVersions来查询历史版本信息

控制台展示对象版本信息

现网切换

业务无需切换。

回滚方案

控制台停用版本控制(注:多版本开启后不可关闭,只可暂停)

容灾收益

对桶内的数据实现了多版本冗余,可避免覆盖同文件,误删除,等常见的数据损失操作,但无法防止恶意带版本号删除,生命周期删除等主动式删除行为。

属于安全级别中等的防护措施。

改造成本

成本主要依赖于业务侧多版本的保存周期,可配合生命周期进行版本清理。

多版本清理周期内为:上传流量总量==存储对象增量。

多版本清理周期外为:存储原对象存量。

资源可用性

删除后不可访问,通过版本恢复后可访问。

资源冗余性

资源存储量:1倍<X<=1倍 上传增量

跨园区备份方案

跨园区复制流程架构图

流程与实施

资源准备

  1. 准备跨园区两个存储桶,并同步开启版本控制功能。
  1. 在源bucket设置跨园区复制设置

位置:COS控制台--bucket-容错容灾管理--存储桶复制

根据业务需求,选择目标存储类型。

如果为两地多活,建议目标存储类型设置为标准存储或低频存储。

如果为两地主备,建议目标存储类型为归档存储或深度归档存储。

配置完成后,增量数据即可自动同步。存量数据需要进行手动复制,可选用MSP产品进行操作。

环境搭建

创建两个bucket会得到两个bucket默认域名。业务侧可通过配置方式,自主实现切换域名访问动作。

调试与实施

代码语言:javascript复制
CosXmlConfig config = new CosXmlConfig.Builder()
              .SetRegion("ap-beijing")
              //.SetRegion("ap-chongqing")
              // 设置默认的地域为北京,备份地域为重庆, COS 地域的简称请参照 https://cloud.tencent.com/document/product/436/6224
              .Build();
代码语言:javascript复制
string bucket = "beijing-master-12539XXXXX";
//string bucket = "nanjing-backup-12539XXXXX";

注:如果是深度归档或归档类型对象,需进行回热后才可以访问。

参考文档:对象存储 POST Object restore-API 文档-文档中心-腾讯云

注:调试代码过程中,建议使用多个子帐号AK管理不同园区的存储桶,子账号间bucket授权不要有交集,防止因某个子帐号信息泄漏导致备份存储桶的连带影响。

现网切换

调试成功后可发布,不影响现网访问。

回滚方案

  1. 业务侧代码回滚
  2. 存储桶复制功能暂停或删除

容灾收益

跨园区存储桶复制功能是一种可靠性极高的容灾方案,可避免单园区级的故障影响,及时切换备份桶,持续提供服务。

可避免:跨园区备份方案可避免代码bug带来的单园区故障,可避免园区级攻击导致的服务切换中存在的短时影响,可避免单机故障时自动剔除策略生效时的短暂影响。

不可避免:默认域名的根域名被运营商恶意限制的影响,如需优化,可以使用自定义域名绑定bucket作为主域名使用,也可以使用bucket-appid.cos.【园区】.tencentcos.cn域名作为备份域名使用,最大程度防止运营商的误操作行为。

改造成本

  1. 存储费用:开启删除同步策略后,为源bucket存储量*目标存储类型单价,

例如北京园区源桶为100GB标准存储,月价格为0.15元*100=15元;目标南京园区存储桶为100GB归档存储,月价格为0.03元*100=3元。

  1. 跨地域流量费用:为每日增量数据流量费用。

例如:源存储桶每月上传量为50GB。月增加额为50*0.5元=25元。

资源可用性

全增量主备的同步策略,可防止误删除和恶意删除事件,从备份存储桶内恢复目标文件。

多源开启删除标记的相互同步策略,可防止单园区级别故障导致的服务不可用,同时也可控制成本。

资源冗余性

资源存储量:1倍<X<=1倍 源站多版本增量 目标桶上传多版本增量-生命周期自动清除量

异构备份方案

架构图

流程与实施

资源准备

● COSFS工具(必备)

● CVM(必备)

● CFS实例(二选一)

● CBS实例(二选一)

环境搭建

● 挂载COS接入点

以centos为例,安装依赖环境

代码语言:javascript复制
sudo yum install libxml2-devel libcurl-devel -y

配置账号密钥信息并授权

代码语言:javascript复制
echo <BucketName-APPID>:<SecretId>:<SecretKey> > /etc/passwd-cosfs
chmod 640 /etc/passwd-cosfs

创建挂载接入点目录

代码语言:javascript复制
mkdir /data-cos/

挂载接入点

代码语言:javascript复制
cosfs <BucketName-APPID> <MountPoint> -ourl=http://cos.<Region>.myzijiebao.com -odbglevel=info -oallow_other

● 挂载CFS接入点

以centos为例,安装依赖环境

代码语言:javascript复制
sudo yum install nfs-utils

创建挂载接入点目录

代码语言:javascript复制
mkdir /data-cfs/

挂载接入点

代码语言:javascript复制
sudo mount -t nfs -o vers=4.0,noresvport <挂载点 IP>:/ <待挂载目录>

● 挂载CBS接入点

创建CBS实例及控制台操作磁盘挂载略

初始化云硬盘

代码语言:javascript复制
mkfs.ext4 /dev/vdb

创建云硬盘接入点目录

代码语言:javascript复制
mkdir /data-disk/

挂载接入点

代码语言:javascript复制
mount /dev/vdb /data-disk

挂载后效果,执行df -h

调试与实施

代码语言:javascript复制
## 需求:
每天凌晨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倍 目标目录的上传增量-备份桶资源清理量

0 人点赞