本文主要讲述了如何设计实现高可靠性数据增量同步系统,研究了如何从源数据库中获取增量数据,并根据具体的事务过滤规则进行过滤,最终以数据库事务为单位同步到目标数据库。高可靠性数据增量同步系统的数据同步主要包括四个阶段:日志处理、事务信息存储、事务分析和事务重做。系统的每个阶段都有相应的问题需要解决。在日志处理阶段,解决了Oracle数据库和MYSQL数据库的增量数据捕获问题。通过使用适用的日志处理工具和修改一些源代码,将源数据库的行变信息转换成相同格式的JSON消息,并交付给事务信息存储模块。通过数据同步工具的checkponit机制,确保事务信息完整有序,即使发生事故,数据也不会丢失。
在事务信息存储阶段,解决了事务信息有序存储的问题。通过合理配置消息中间件,保证消息有序,至少成功投递一次,从而保证事务信息有序无丢失。在事务分析阶段,通过将变更信息转换为标准结构的事务对象,解决了同构异质数据库之间数据类型与SQL语法不兼容的问题。利用事务分析技术,可以实现事务过滤规,通过事务前序分析,可以规划出正确的事务并发执行序。通过实现大事务分片功能,避免了分析模块的内存溢出。提高事务分析效率,优化事务对象结构,提高事务分析阶段系统的可靠性。解决了事务重做阶段系统效率瓶颈的问题,通过调度程序控制事务并发提交,大大提高了事务重做效率,减少了数据同步延迟。借助SINE公司的数据引擎,解决了在不同类型的目标数据库中重做事务的问题。
实现基于LogMiner的Oracle数据库日志分析,在LogMiner命令的基础上,利用C#开发Logviewer,分析重点,实现Oracle日志查看、查询、重做、退货等功能。在OGG之外进行Oracle曰志分析的思路和方法。对Oracle数据库的数据同步机制和数据同步工具进行综合分析。
1.从源数据库类型的角度来看,山大地纬公司的一些客户使用Oracle数据库,因此需要支持Oracle数据库作为源数据库。能够支持实时增量同步的数据同步采用热备份的形式,即分析归档日志的方法。可选的技术方案有OGG和自研归档日志提取工具。使用OGG的Extract进程提取增量数据的可靠性,Extract进程部署在数据库主机上,直接使用当地的日志文件,不涉及日志传输,故障的可能性小。自研日志提取程序开发周期长,难度大,不容易说服用户在数据库服务器上部署自研日志提取程序。