平台人生
作者平台人生·2016-11-18 10:57
软件开发工程师·平台人生

数据复制技术介绍

字数 3288阅读 6515评论 0赞 3

作者:王荔

信息化时代,信息数据是企业的命脉,制定业务连续性技术方案首先需要解决的是数据问题,客户数据、交易数据、生产数据一旦全部或部分丢失、泄露、遭到破坏等,对企业的打击是致命性的。

本文从数据复制的角度探讨实现数据保护的常用技术手段和方案比较,下文将首先介绍数据的复制技术。

数据从生成到持久化保存,期间主要经过应用、中间件、数据库、操作系统、存储或者磁盘驱动、服务器硬件、网络、存储交换机到存储;在传统的数据备份恢复基础上,通过数据复制技术提供多数据副本,保证副本数据的可用性从而实现数据保护;从技术层面看,主要的切入点包括:

1) 中间件和应用层:简单的说就是中间件或者应用层面的双写,根据业务需求,通过应用架构设计实现数据主本和副本的更新;根据需要进行强一致性、弱一致性、最终一致性设计,来保证主本和副本之间的一致性、完整性、时效性;应用双写的好处是可以根据业务需求来自行定制、自主可控性高;面临的技术难点是应用设计复杂,根据特定应用场景定制,普遍推广性差;不适用于高频更新、且一致性要求高的场景

2) 数据库层:不管是开放的数据库还是大机的数据库,都提供相关的数据复制软件,实现数据库数据的物理复制和逻辑复制;主要优点是效率高、网络带宽占用少、同时可利用软件自身的检测功能,增加数据坏块的检验,提高数据的可用性;主要不足是只针对数据库数据,不能提供应用数据的复制

3) 主机操作系统、存储层:基于系统底层物理卷、数据块,通过存储硬件、备份恢复、存储虚拟化等技术实现数据复制,与上层的应用和逻辑无关,主要优点是支持所有类型的数据,面临的主要问题是数据可用性校验,如数据库坏块的校验,极端情况下可能面临数据坏块问题

下面针对主流、成熟的数据复制、保护技术进行简单介绍。

(一) 主机操作系统、存储层的数据复制

操作系统和存储层的数据复制,主要包括:

1) 磁盘镜像技术:以存储为基础、独立于应用和数据库、与服务器硬件无关,如EMC SRDF、日立的Hitachi TrueCopy,支持应用数据和数据库数据复制

2) 操作系统层基于卷管理的数据复制技术:利用操作系统的卷镜像功能,针对逻辑卷和文件系统做数据复制,如Veritas的Storage Foundation、IBM的HACMP/XD等;支持应用数据复制和数据库数据复制

3) 存储层的存储虚拟化技术:运行在服务器和存储阵列之间,将延展的集群、数据存储、一致性智能分布式缓存进行整合,实现跨主机、跨集群、跨数据中心的访问和数据共享;如EMC的VPlex、Fusion Storage、Vmware的VSAN、Oracle的ASM等

4) 优化的备份恢复技术及网络数据存储集中管理技术:通过分级索引、镜像、快照、去重、全备重组等技术,提升备份和恢复效率;配合网络数据存储管理软件,通过专业的数据存储管理技术,结合相应的硬件和存储设备,对数据备份进行集中管理,从而实现自动化的备份、文件归档、数据分级存储以及灾难恢复等

操作系统和存储层的数据复制,最大的好处是同时支持应用和数据库数据的复制和备份,对上面的应用和数据库来讲,配置简单、透明;主要不足:针对数据库的数据,无法提供数据坏块的校验和恢复功能。

(二) 数据库层的数据复制

基于数据库软件的复制技术包括物理复制和逻辑复制两种方式,如Oracle Data Guard/Active Data Guard,提供物理复制和逻辑复制;Oracle的Godengate、IBM的CDC、Q_Rep、Quest的SharePlex等,提供逻辑复制功能;仅针对数据库数据,不支持应用数据的复制;提供同步和异常两种复制模式。

数据库复制技术主要优势是副本数据可以是”活“的,可随时提供使用功能,提高数据的可用性。

1) 逻辑复制,利用数据库的重做日志、归档日志,将主本所在站点的日志传输到副本所在站点,通过重做SQL的方式实现数据复制。逻辑复制只提供异步复制,主副本数据的最终一致性,无法保证实时一致性。逻辑复制的主要优势:

  • a) 提供多种灵活的复制模式和拓扑结构,如单向复制、双向复制、集中复制、多层级联复制、广播复制等,支持多种层次的数据分布
  • b) 基于DDL/DML的操作,可以是全库复制、部分数据复制,在数据抽取、应用过程中支持数据的映射、过滤、转换,并可以调用自定义脚本实现定制需求
  • c) 支持异构环境;支持断点续传,不影响系统连续运行
  • d) 高性能,对生产系统影响小;事务完整性;复制冲突检测和解决

2) 物理复制:与逻辑复制方式不同,不是基于SQL Apply操作来完成复制,而是通过Redo日志或者归档日志在副本站点的同步或者异步持久化写、Redo Apply来实现复制功能,同时副本站点的数据可以提供只读功能:

  • a) 物理复制的典型代表是Oracle的 Data Guard/Active Data Guard,MySQL数据库Replication等
  • b) Oracle Data Guard/Active Data Guard支持同步和异步复制,主要运行模式包括最大保护、最大可用和最大性能;MySQL数据库的Replication支持同步、半同步、异步模式,提供基于SQL、基于改变的Row、混合格式、基于事物的几种复制选择。

OracleData Guard/Active Data Guard的最大优势全库复制,不用担心使用逻辑复制时SQL操作的限制和约束;另外,副本数据所在节点能提供只读功能,同时提供复制过程中物理数据坏块的检测和修复,保证数据的可用性;主要不足是平台关联,不支持异构平台和不同数据库版本之间的复制,复制灵活性不如逻辑复制。

(三) 中间件和应用层的数据复制

独立于底层的操作系统、数据库、存储,应用可以根据需求实现双写或者多写,从而实现主本和多个数据副本之间的数据复制功能。这种由应用实现的技术,可以在中间件或者应用平台层面进行封装和实现,对上面的应用透明,也可以在应用层面实现;主要好处是可根据需求定制、可实现应用和数据库层面的复制,自主可控;主要不足是目前市场上没有成熟、适合传统IT企业大规模推广使用的中间件产品;如果完全由应用封装平台或者应用来实现,代码的复杂程度提高,增加了应用的维护成本。

通过中间件和应用层面的双写实现数据复制,主本和副本之间根据需求可以是强一致性、弱一致性、最终一致性,不同的需求决定了不同的解决方案,示例如下:

1) 强一致性

主本和副本的更新在同一个事务中完成,通过2PC的分布式事务控制来保证数据的强一致性,如标准的JTA协议;如果应用自行设计,可以考虑先更新副本、再更新主本,如果副本失败,则事务直接返回失败,如果是副本成功、主本失败,则设置主本重试次数,尝试数次不成功之后,副本执行回滚操作,事务返回失败;强一致性的操作有点类似前面介绍的同步模式复杂,在事务层面严格保证ACID特性,数据的主本和副本之间耦合性增加,性能受副本所在站点的性能、网络带宽、网络延时的影响;同时在事务的控制方面增加了应用的复杂度(即使使用中间件产品中自带的分布式事务功能),在某些异常情况下会出现可疑事务,必要时需要人工干预

2) 弱一致性

系统并不保证主副本数据之间的实时一致性,不承诺具体到多久之后在副本可以读到最新的数据

3) 最终一致性

弱一致性的特定形成,在主本数据后续更新的前提下,副本最终与上一次主本最新的值保持一致;在没有故障发生的前提下,主副本之间的时延主要受通讯延时、系统负载、和复制副本的个数影响。

不管是最终一致性还是弱一致性,在事务层面实际上都是打破的ACID的要求,取代的是BASE(Basically Available,Soft State,Eventually Consistent)(基本业务可用、柔性状态、最终一致性),主本和副本之间通过异步消息来传递事务信息,异常情况下,通过多次重试的幂等性来实现一致性。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

3

添加新评论0 条评论

Ctrl+Enter 发表

本文隶属于专栏

作者其他文章

相关文章

相关问题

相关资料

X社区推广