暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

说说CDM的实现原理

白鳝的洞穴 2020-03-19
8480
昨天老白的文章里提到了CDM这个可能有些人觉得比较陌生的名词,那么今天我们就来谈谈CDM吧。
如果你有一个20TB的数据库坏了,想要从磁带备份系统中进行恢复,大概需要多长时间呢?可能有些DBA有点概念,整个恢复过程包括数据文件恢复,归档日志恢复,实例恢复等一系列操作(加入说恢复所需要的数据库环境和存储都立马可以获得,否则这部分工作也需要1个小时甚至几个小时来完成),恐怕不是一天能完成的了,老白遇到过一次数据库恢复,大约13TB的库,在恢复过程中没有任何误操作,大概花了30个小时,这个系统停摆的时间大约时37小时。当然如果你的磁带机比较强劲,这个时间可能还能缩短几个小时。无论如何,这种恢复都是以天为单位的,如果出问题的是核心系统,对企业用户量来说是很难承受的。
于是乎,如果有一种备份一体机,无论你的数据库有多大,都可以在30分钟内恢复你的业务,是不是很让人心动呢?提供这种恢复技术的一体机就是CDM。最早推出CDM产品的是美国公司ACTIFIO,这家成立于2009年的以备份恢复为主营业务的独角兽公司推出的CDM产品是一个在数据应用领域具有革命性的产品,CDM是Copy Data Management(拷贝数据管理)的简写,从字面意义上讲就是拷贝数据管理,事实上CDM产品要做的也就是字面上的这个意思,而这个洋玩意到了天朝上国,用途发生了一些变化,这个问题我们后面慢慢聊。首先我们来看看拷贝数据管理的现实意义。下面的图来自于安特飞公司的宣传资料:

在一个企业里,生产数据会产生许多拷贝,比如备份,容灾,开发,测试,合规性审计,分析等,传统的方式是把数据复制到其他地方去,这在前些年企业还承受得起,因为数据的总量是有限的,随着数据量的增长,这种数据复制的方式其成本越来越高,于是拷贝数据管理系统就应运而生了,它的目的是要降低拷贝数据管理的成本。怎么来实现呢?

拷贝数据管理首先对数据备份进行了改良,传统的数据备份是把生产数据以磁带格式存储在磁带上,需要恢复的时候再还原成原始的裸格式数据还原到恢复的位置。而拷贝数据管理的数据不再存储在磁带上,直接存储到X86服务器的磁盘上,存储格式也不再是磁带格式,而是原来的裸格式。增量数据也是如此,总之在CDM一体机里,确保所有的数据都是以裸格式拷贝过来的。因此当需要用这些数据恢复系统的时候,不再需要RESOTRE这个过程,直接可以在服务器上挂载这些裸格式文件,就可以实现恢复了。这种方式实现了数据的快速恢复。
如果仅仅是这样,CDM就不能称之为CDM了,除了快速恢复外,CDM还可以让这些备份数据发挥更大的作用,如果你的团队需要建一个测试库,用于软件新版本的测试,那么没问题,你可以很快的创建一个数据的快照,然后用这个备份数据拉起数据库进行读写操作,此时不会影响增量备份的进行,当测试结束后,删除相关快照就OK了。其他的使用场景也是如此,这样当我们对这些数据有一些临时性的访问需求的时候,不再需要从生产库去抽取数据,也不需要使用备份数据区另外恢复一套了,找台服务器,挂载数据,拉起数据库就可以用了,一切在30分钟内搞定,无论多大的数据库。当然CDM不仅仅针对数据库,还可以支持各种其他的数据,包括虚拟机、文件系统、云平台等。
听起来似乎不错,CDM强大的功能,似乎可以解决我们企业中的一切特点,正是因为这个特性,CDM在天朝也是发展迅速,不少国内的做数据保护的公司都很快推出了各自的CDM产品。老白是2016年开始接触CDM产品的,这些年也对这个产品做了一些研究。CDM产品是一种技术原理十分简单,但是要做好却是十分不易的产品。其基本原理就是将CDM服务器的磁盘远程挂载到生产服务器上,通过生产服务器的工具将数据增量复制到这些远程磁盘上,挂载的方式可以是多样的,可以通过SAN网络挂载,也可以通过ISCSI/NFS等进行挂载。定期将磁盘远程挂载,然后将数据的增量复制到这些磁盘上,然后释放这些磁盘。
以ORACLE数据库为例,需要在数据库服务器端将CDM服务器的盘远程挂载过来,然后使用RMAN COPY命令将数据文件拷贝到CDM服务器上,这个操作只需要做一次,后续就可以定期使用RMAN增量COPY的命令去复制增量了。所以说CDM备份数据只需要一次全量,后面就可以使用增量了。不过仅仅依靠每天做几次增量拷贝是不够的,如果某个时间点生产数据库坏了而增量拷贝是几个小时前的怎么办呢?CDM服务器还会定期将数据库的归档日志拷贝过来,如果需要的话,可以通过RECOVER database来前滚数据。
看到这里,有些DBA可能就会有这样的感觉,如果CDM就只是这点能耐,那搭一个ADG是不是就能实现了呢?事实上,老白第一次接触CDM产品的时候也是有这个感觉的,如果CDM真的只有这点能耐,那么还是ADG更靠谱一些,ADG唯一做不到的是,其他的应用需要读写方式打开备库来使用。
事实上,CDM的重点是在后面的M,COPY DATA只是为了实现M采用的基础技术而已,备份恢复并不是CDM的核心,数据的综合管理与利用才是CDM的本源。只是CDM产品到了天朝,用途发生了变化,M的能力并没有得到重视,CDM反而成了备份一体机的代名词。
既然我们只是把CDM当成一个备份一体机,那么我们就再从备份一体机的角度来谈谈CDM吧。在这个领域,CDM与ADG不同的地方是,如果我们的生产库是小型机,如果要做ADG,我们必须用小型机做备机,这个成本比较高,而CDM不需要,CDM备份服务器使用普通的X86服务器就可以了,在这个场景下,CDM对比ADG是有优势的。
如果我们的生产环境是X86服务器,那么CDM相对ADG,除了备份集可以被读写方式打开使用外,CDM相对ADG就没有其他的优势了。
在性能方面,如果CDM的磁盘通过SAN网络带内方式挂载,则数据复制时候可能会对生产系统产生影响,而如果采用带外方式,ISCSI/NFS等方式挂载,那么其性能会有较大的下降,另外CDM服务器中存储的性能可能和生产环境的存储系统存在一定的差距,因此CDM恢复后的系统也仅仅能够作为临时性使用,而不能作为长期使用的存储,这一点大家也是需要注意的。
另外一点,CDM采用的是侵入式备份的方式,需要把CDM服务器的磁盘挂载为生产库的文件系统或者ASM磁盘组,然后使用生产库的rman工具去拷贝数据,这个过程是会对生产库产生一定的影响的。老白这些年也遇到过一些用户使用CDM产品,导致业务高峰时生产库宕机的问题,主要也是一些国产的CDM产品的成熟度不足,MOUNT/UMOUNT ASM磁盘组的时候出现了异常,导致ASM实例宕机导致的。为了解决类似的问题,甚至有一些国产的CDM产品挂载了远程磁盘组后就不再UMOUNT。实际上如果不UMOUNT这些磁盘组,那么CDM的备份数据被其他系统共享利用也就谈不上了,这就违背了CDM产品的初衷了。
由于篇幅的问题,老白就不再继续展开讨论CDM了,最后总结一下,如果仅仅把CDM产品作为一个备份工具使用,那么如果你是X86环境,还是继续使用ADG好了,把ADG上的闪回打开,CDM的大多数功能基本上都具备了,而且从性能上看,ADG可能还优于CDM挂载。如果企业真的想做拷贝数据管理,那么你需要重新审视企业的数据复制架构,利用CDM来节约你的数据拷贝管理成本。如果是被忽悠说CDM是CDP的升级技术,那就太冤枉了,CDP的含义是持续数据保护,此CD非彼CD也。

最后修改时间:2020-03-19 12:46:32
文章转载自 白鳝的洞穴,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论