当前位置: 首页 > 科技观察

容灾架构中数据复制技术详解

时间:2023-03-14 19:04:13 科技观察

1.什么是企业容灾数据复制技术?在企业容灾架构中,所谓数据复制技术,主要是指能够复制结构化数据,保证数据具有双份或多份分散在不同数据中心的技术。这里需要强调两点:①结构化数据:基于结构化数据的数据复制技术。②分布在不同的数据中心:数据副本必须分布在不同的数据中心。至于具体的实现技术,就目前的行业发展来看,可以实现数据复制的技术有很多种。有基于数据库层面的数据复制技术,如Oracle的ActiveDataGurad、IBM的Db2HADR等;基于系统级的数据复制技术,如赛门铁克的vxvm、传统的逻辑卷管理(LVM)、Oracle的自动存储管理(ASM)冗余技术、IBM的GPFS等;有基于存储虚拟化实现的数据复制技术,如EMC的VplexStretchCluster、IBM的SVCSplitCluster、NetAPP的MetroCluster等;还有基于存储底层实现的数据复制技术,如IBM的DS8000PPRC技术、EMC的SRDF技术、HP的CA技术等。每种技术都有其实现的前提条件,以及自身的技术特点和实现效果的不同。2.企业容灾中数据复制技术的分类2.1同步复制和异步复制从RPO维度来划分,从大的方面可以分为同步复制和异步复制。①同步复制:每次写操作都需要在源端和目标端都完成,然后才能处理下一个操作。特点是数据丢失较少,会影响生产系统的性能,除非目标系统在物理上离生产系统更近。②异步复制:在处理下一个操作之前,只需要在源端完成数据写入,而不用等待数据复制到目标系统。特点是复制的数据与源数据存在时间差,但这种复制对生产系统的性能影响不大。所以这里有一个问题“如何定义一个写操作的完成?”一般来说,对存储终端的写是基于存储设备的缓存写,而对数据库的写是基于数据库的事务日志。如果用图来区分同步和异步,区别就是:同步需要等待黑红ACK返回后才能执行下一个IO,而异步只需要等待黑ACK返回就可以执行下一个IOIO。从结果来看,显然等待红色ACK返回需要更多的时间,因为A和B位于不同的数据中心;但等待会带来RPO=0的回报。2.2按实现复制的方式划分根据上图,数据复制的最终结果是在两个磁盘介质上完成相同的IO数据,但是将客户端的单个IO请求镜像成两个IO的源可以有三种不同来源的选择:操作系统级别、数据库级别和存储级别。1)操作系统层面的复制技术:基于LVM、VXVM等逻辑卷镜像,在写入IO时可以将数据同时写到构成同一逻辑卷的物理镜像上,底层数据需要通过SAN协议完成。2)数据库层面的复制技术:一种是类似于操作系统逻辑卷的模式,如ORACLE的ASM,也是一种逻辑卷管理模式,也可以通过多个物理镜像组成一个逻辑卷。复制方式完成数据副本的同时写入。从本质上讲,它与操作系统层面的逻辑卷镜像技术没有什么区别,只不过它更接近于数据库,数据库更理解它。另一种是通过数据库事务日志复制,重新解释另一个备库上的数据修改行为,最终达到数据结果一致的目的。3)存储层面的复制技术:一种是通过存储网关将两个物理存储卷组合成一个逻辑存储卷,通过镜像复制在存储上盘时完成数据的双写。从本质上讲,它与操作系统层面的逻辑卷镜像技术没有区别,只是它是在存储层面实现的。另一种是通过存储介质之间的块复制实现数据复制冗余。究其原理,其实无论从哪个层次实现,这些技术在原理上都可以分为三种:IO双写(操作系统逻辑卷镜像、ASM、存储网关镜像等)事务回放(以OracleADG.etc)数据单元复制(以存储CA和DP技术为代表的存储复制技术)3、系统层如何实现数据复制?3.1通过操作系统逻辑卷镜像进行数据复制对于操作系统层面逻辑卷管理器的LVM模式,将来自不同数据中心的两个底层物理存储卷组合为一个物理镜像(PV),形成一个可用的逻辑存储卷(LV)提供给上层应用程序存储数据。本地物理卷和远程物理卷由存储通过本地SAN环境和跨数据中心SAN环境提供给服务器操作系统层。LV和PV的映射关系在逻辑卷创建的时候就已经定义好了,逻辑页(LP)和物理页(PP)的映射关系也已经完全定义好了。这种复制只能使用同步复制机制。复制的对象是逻辑卷层的变更块。过程是:在逻辑页(LP)中捕获变化的块,同步写入两个物理页(PP),相当于在一台主机上是一样的。将相同的数据写入两个不同的磁盘。只有本地写入完成并确认ACK,并且远程写入也得到ACK确认,才能认为是完成写入。假设远程存储卷写入超时,它将被标记为故障或离线。在remotestoragewrite恢复后,对于LVM,需要手动重新同步,才能达到镜像副本的完全一致。3.2通过数据库逻辑卷镜像进行数据复制对于ASM方式,原理与LVM基本相同。创建DiskGroup时,冗余策略选择Normal,即所有业务数据保证两个镜像。在这种情况下,我们可以将相同数量的磁盘分类到不同的故障组(FailureGroup)中。ASM在修改Oracle数据文件(DataFile)时,以AU为单位进行实时双向写入。只有本地写入完成,并且远端也得到ACK确认,才能算是写入完成。与LVM相比,优势在于两点:ASM会有一个短期的写事务日志记录,有利于恢复离线镜像和恢复数据,但是如果超过这个时间,也需要重新同步,以保证数据的一致性.还有一点就是创建数据文件的时候AU是没有映射的。ASM在写入数据时分配特定的AU。通过指针传递可以完全避免坏块导致的数据写入失败。.3.3通过分布式文件系统文件镜像进行数据复制对于GPFS模型来说,它将两个底层的物理存储卷从不同的站点分配到不同的FailureGroup,然后这些物理存储卷通过文件系统格式转化为分布式文件系统和提供给上层应用以文件的形式写入数据。文件本身会被GPFS文件系统打散,形成几个文件碎片。这些分片在落盘时落入不同FailureGroup的物理盘中,从而保证了底层数据的双副本。这种模式与前两种模式最大的区别是它的数据存储是根据NSD磁盘定义的服务实例的顺序来决定的。一般情况下,我们需要将本站点的服务节点定义为磁盘的主服务节点。也就是说,在写入两张镜像时,分别写入了位于GPFS不同中心的两个服务实例节点。两个服务实例之间也需要私有协议的交互,相当于在数据的双写中多了一个环节。4、数据库层是如何实现数据复制的?4.1通过数据库日志回放方式实现数据复制对于事务日志的复制技术,可以分为绝对同步方式、近似同步方式和异步方式三种。对于OracleDB,客户端的数据更新请求首先要通过日志写入进程(LGWR)从redocache中flush到redolog文件中,然后由数据写入进程周期性的写入到数据文件中。在redolog中,SCN作为数据库唯一的时间戳序列,记录所有数据库更新的顺序,从而保证数据库恢复能够按照正确的顺序进行,保证数据的一致性和完整性。也就是说,在数据库的认知中,只要将事务日志写入重做日志文件,就完成了IO。如图所示,对于一个配置了DataGuard绝对同步模式的数据库,在上述过程中,写入进程(LGWR)无法在本地日志文件中结束,日志传输进程(LNS)会将重做日志传入缓存通过TCP/IP网络传输到灾备站点备库实例的日志接收进程(RFS),备库实例的日志接收进程(RFS)在备库上重新执行数据库更新操作数据库根据接收到的重做日志,然后将ACK发回日志传输进程(LNS),日志传输进程(LNS)通知写进程(LGWR)完成一次完整的IO。这样做可以保证主库和备库的事务更新行为实时一致,最终保证数据的一致性。当然,还有一个前提,就是DataGuard在开始同步复制之前,必须保证备库中的数据在固定的时间点上维护着主库的完整副本,这就需要传统的数据备份技术实现备库的初始数据。复制。因为事务复制的本质是行为复制,所以行为效果的初始数据副本必须一致,才能保证最终两个副本的一致性。如图所示,对于配置了DataGuard异步模式的数据库,日志传输进程(LNS)会通过异步方式将缓存中的重做日志和LGWR归档的重做日志文件传输到灾备站点的备库。TCP/IP网络实例的日志接收进程(RFS),备库实例的日志接收进程(RFS)根据接收到的重做日志,重新对备库执行数据库更新操作,但不更新日志传输进程(LNS)实时ACK反馈,只要PrimaryDB完成了本次数据库的事务更新,就会认为IO结束。但是备库的日志接受进程(RFS)会周期性的向主库进程反馈进度信息。主备库传输管理分离后,主库会主动检测并尝试通过以下两种方式与备库重新建立联系。首先是归档日志进程会定期ping备用数据库。库控制文件记录的最后一个归档点和它自己的归档日志决定了将哪些归档日志推送到备库。二是日志发送进程会在重做日志准备归档的时刻主动ping备库的日志接受进程,将剩余的重做条目发送给备库的接受进程。近似同步模式是指在正常传输条件下与绝对同步模式相同的模式。当网络传输超时时,只要把主库的重做日志放在磁盘上,保证剥离备库重做日志的过程。.5、存储层是如何实现数据复制的?5.1通过存储网关逻辑卷镜像实现数据复制所谓存储网关双写复制技术,就是在物理存储层之上增加一层网关技术,形成存储资源的透明抽象层,即存储虚拟化是连接服务器和存储的一个抽象层,用于实现存储层的虚拟化和高可用镜像,是物理存储的逻辑表示。其主要目的是将物理存储介质抽象为逻辑存储空间,将分散的物理存储管理集成到集中的存储管理中,让存储网关控制镜像写入的策略和方式。IBM、EMC、NETAPP、华为、盈方等公司都有相应的容灾技术解决方案和相应的产品。基于不同的写作原则和策略,每个方案都有一些差异。但抛开细节和原则不谈,分类归纳后有两种模式。模式一,如图,是以EMCVplex为代表的分布式存储卷技术。在存储网关VPLEX上重新定义虚拟存储卷。虚拟卷由分布在两个数据中心1:1映射的物理存储卷组成,以共享方式提供给VPLEX的两个引擎。引擎类似于OracleRAC的原理是共享全局缓存、心跳信息和分布式锁信息。两个引擎可以同时写IO。对于块级的并发写操作,是通过分布式锁和全局缓存机制来完成的。所以这种双写可以在IO层面进行。方式二,如图,是以IBMSVC为代表的虚拟存储卷技术。在存储网关SVC上重新定义虚拟存储卷。虚拟卷由分布在两个数据中心1:1映射的物理存储卷组成,属于同一个IOGroup,以共享方式提供给两个SVC。节点,虽然两个节点都可以写操作,但是对于某个IOGroup,只有一个节点可以进行物理层面的双写操作,从而避免了两个节点在Block层面的并发控制。所以这种双写只能在应用层做,不能在IO层做。当然还有一些类似的架构,在一些细节上更先进,比如NetApp的容灾解决方案MCC架构。粒度双写,VM可在存储网关的物理引擎或节点间漂移重组,使应用粒度写操作的容灾切换更顺畅。5.2通过存储介质块复制实现数据复制对于存储存储底层的块复制技术,其数据复制与上层的应用层、系统层、数据库层完全分离。它主要依靠存储层的两台物理存储设备完成从源设备到目标设备的块复制。如图所示,从组成上看,同类型的物理存储设备只有两个。数据复制与上层无关。它只需要存储层从一侧的物理卷中捕获块更改,并将它们复制到另一侧的物理存储卷中。整个复制行为在源头通过日志文件记录进度并保证故障恢复。根据整个复制过程是否需要等待复制完成的ACK返回,可以分为同步复制和异步复制。复制过程所依赖的传输环境可以是远距离的以太网,也可以是近距离的SAN网络。但是这种数据复制技术与上层几乎是脱节的,基本上很难配合上层的容灾切换。