浪擎双活容灾克服Goldengate丢失数据的缺陷
摘要:
浪擎AgileMirror镜像系统是数据库级别的实时复制容灾产品,实现双活容灾,支持SQLServer数据库、Oracle数据库、文件系统等应用系统的容灾;支持主流操作系统;支持单机、双机高可用等环境。镜像系统具备自动化全量复制、实时增量复制、数据库容错、监控、报
浪擎AgileMirror镜像系统是数据库级别的实时复制容灾产品,实现
双活容灾,支持SQLServer数据库、Oracle数据库、文件系统等应用系统的容灾;支持主流操作系统;支持单机、双机高可用等环境。镜像系统具备自动化全量复制、实时增量复制、数据库容错、监控、报警、切换、回切这些功能。但数据同步功能较弱,如不具备异构数据库复制、数据抽取等功能。
Oracle GoldenGate是一款极为优秀的数据同步软件,支持主流的数据库,甚至支持异构数据库的数据同步。但其容灾功能非常弱或不具备。并且,不适合在应用程序调整比较频繁的应用场境中使用,如频繁的数据库DDL操作,很容易导致两端数据不一致,从而失去容灾意义。
浪擎双活容灾就克服了Oracle Goldengate数据不一致的风险。
一、浪擎AgileMirror镜像系统
镜像系统不依赖DataGaurd、LogMinor、DBCC LOG等数据库自带的日志工具来实现数据复制,完全依靠自身研发的数据库实时捕获引擎ACA和数据组装两大核心技术来实现全量复制和实时增量复制。容灾端数据库处于在线运行状态,具备最高的可靠性,且用户可以随时查询业务数据来检验容灾结果。这是双活容灾最大的优势。
1.实时增量复制
镜像系统的事务日志实时捕获模块实时监控生产数据库的redo事务日志文件或归档日志文件,捕获其变化数据;传输控制模块从变化数据缓存池中取出数据传输至容灾服务器;容灾服务器将变化数据保存至容灾端的缓冲池中;组装模块根据Oracle数据库的特性将变化数据拼装成可恢复事务;装载线程将组装好的事务恢复到容灾数据库。
容灾Oracle数据库处于运行状态,处于只读状态,可读可查询。
2.无需停机的、自动的追逐式全量复制
在实时增量复制之前,需要保障生产、容灾数据库之间的数据相同,才能进行后续实时增量复制。在完全无需停止业务数据库的条件下,极快的将源数据库全量复制或迁移到目标容灾服务器。
追逐式复制原理∑= ∑存量+ ∑变化:复制存量数据与数据库对象到容灾数据库;复制在第一步复制期间变化的事务;将第二步的复制结果保存到容灾数据库。
3.传输断点续传能力
镜像系统能够提供网络失败、数据库失败、主机失败的断点续传能力。镜像系统把变化数据保存在缓冲池中,Oracle镜像的传输控制模块记录当前传输成功的数据块RBA,当故障修复后自动传输下一条RBA。这样的机制使得当复制链路中的任何一台数据库服务器出现故障暂时不可用,或发生网络中断等事故,并在故障被修复后,镜像系统都能自动的恢复数据复制。
4.快速的容灾接管
两端数据库都处于可用状态,因而可实现快速的接管,接管时间基本等于应用系统切换连接数据库的时间。在容灾方案中没有比这种接管更快的方法。
浪擎提供手动或自动切换至容灾端备用系统的手段。手动接管时,只需将备用Oracle只读状态改为读写状态即可。
5.CDP数据容错功能
镜像系统提供持续数据保护能力CDP。镜像系统的CDP技术能够保存任一数据块级别的数据更改,或保存任一数据库事务,并提供记录着所有历史数据状态的动态恢复日志,用灵活的“任意时间点(any-point-in-time)”或“任意事务(any-transaction)”恢复方式取代了传统的指定数据库状态恢复到过去的某个时间点的“Point-in-time”恢复方式,为Oracle数据库提供了更全面的保护。
镜像系统提供基于任意时间点的恢复手段,或基于数据库事务SCN的恢复手段。
6.构建生产、查询相分离的业务环境
Oracle数据库允许同一数据库创建两个运行实例,一个实例用于容灾,一个实例用于查询。利用这个原理,镜像系统可在容灾服务器或第三台服务器上建立一个与生产数据库保持数据同步的查询数据库实例,在这种配置环境下,在线事务处理可以获得很好的性能,而查询统计处理可在不影响正常业务的情况下进行。通过这种独特的配置策略可以非常好地解决在线事务处理和查询统计处理之间的竞争问题,不管查询统计系统会消耗多大的系统资源,生产系统的响应速度不会受到影响。
镜像系统构建的查询数据库处于备用只读状态,不支持写操作。
二、Oracle GoldenGate
Oracle GoldenGate是一种基于日志的结构化数据复制方式,它通过解析源数据库在线日志或归档日志获得数据的增删改变化(数据量只有日志的四分之一左右),再将这些变化应用到目标数据库,实现源数据库与目标数据库同步、双活。
比较项 |
浪擎镜像系统 |
GoldenGate |
技术原理 |
复制原理 |
捕获Redo Log、归档日志变化,将变化日志拼装成数据集保存到备用数据库 |
捕获Redo Log、归档日志变化,解析日志成数据库SQL语句,然后执行该SQL语句保存数据 |
目标数据库状态 |
能读、可查询 |
处于读、写状态 |
对生产数据库的影响 |
全量复制,是否需停止业务系统 |
追逐式全量复制技术,业务系统无需停机 |
需要业务系统停机,时间视数据量、I/O读写速度而定 |
复制频率 |
实时,秒级别,延时极小 |
数据量较大时延时较大 |
复制DDL操作 |
都支持,但如添加表空间DDL操作需视物理环境而定 |
有部分不支持 |
数据类型 |
全部支持 |
有字段类型不支持 |
需要数据库配置 |
仅需开启archive log |
需开启archive log;需开启SUPPLEMENTAL 附加日志 |
是否需要表具有主键 |
无需主键设置 |
需要设置主键才能复制 |
对容灾数据库的影响 |
容灾数据库设置 |
无需设置 |
复制期间,需关闭主、外键关系,关闭触发器、级联等对象 |
产品功能 |
可使用功能 |
全量复制、增量复制、容错、监控、报警、切换、回切 |
仅增量复制 |
应用方式 |
支持一对一、一对多 |
仅支持一对一 |
复制出错处理 |
出错自动处理,如停止时间长了可手动触发全量复制基准 |
完全需要DBA来手工处理 |
数据容错功能 |
可恢复到任意时间点,恢复时间跨度需视存储空间而定 |
无容错功能 |
故障切换处理 |
与mCenter配合可一键切换,或延时自动切换 |
完全需要DBA来手工处理 |
数据回切(将备库数据恢复到主库) |
Web界面提供数据回切,一键回切 |
完全需要DBA来手工处理 |
主备数据库版本 |
需一致 |
无需一致 |
主备数据库异构 |
不支持 |
支持 |
管理操作方式 |
全部基于WEB |
命令行方式 |
四、Oracle GoldenGate丢失数据的原因分析
Oracle GoldenGate依赖精细化的日志分析和数据操作,极易导致两端数据不一致。GoldenGate需解析每条日志记录来获取应用程序提交的数据和部分数据库DDL操作,丢弃部分数据库系统自身保存的数据和大部分的DDL操作,需关闭容灾端数据库对象之间的关系和设置,才能将分析出来的数据按照生产端的事务顺序保存到容灾端数据库。如果丢失了需要的DDL操作,或具备没有主键的表,或容灾数据库的触发器没有关闭,则将导致Oracle GoldenGate丢失数据。因此,Oracle GoldenGate不适合在应用程序频繁调整的应用场境中使用。
Oracle GoldenGate受制于其自身的复制原理而无法实现主备数据库结构关系一致,如在复制期间需关闭触发器、主外键关系等数据库对象,因此在容灾切换时需要恢复容灾数据库结构关系才能运行业务应用。
浪擎镜像系统不做精细化日志分析和数据操作,仅分析日志记录的SCN以及组装顺序,支持所有的数据类型和DDL操作,两端数据库保持一致的结构关系。因此,不存在两端数据不一致的问题,且故障切换更快速。