异构数据库双向同步调研

系统升级需将业务承载在MS SQL Server数据库的同时,数据同步到MySQL数据库。  一段时间内,MS SQL Server和MySQL数据库会同时对外提供访问,且在一定时间范围内保持数据完整一致。即实现异构数据库双向同步,且同步具有一定的实时性。

      

     数据库双向实时同步可行性方案:一是使用云平台的数据传输服务DTS;二是自己开发,可采用第三方开源代码。 经过调研,要实现异构数据库双向同步,目前只能自己开发,此过程中可尝试采用SymmetricDS开源工程。

 

     目前支持数据实时双向同步的只有阿里云,腾讯云公测版本只有数据迁移和数据订阅,未发布数据同步功能。青云没有数据传输服务DTS产品。阿里云只支持MySQL的RDS实例,因此第一种方案没有直接可用的双向同步产品。但是MySQL可以搭建在阿里云,可使用其数据订阅服务,订阅数据库增量数据。

     异构数据库双向同步调研,目前提到比较多的有两个开源工程。一是SymmetricDS, java编写的应用,软件可完成不同类型的数据库同步。二是阿里云otter,是数据传输服务DTS的开源代码,但是只支持MySQL、Oracle数据库实例。目前能够满足异构的,也只有SymmetricDS。

 

一、自行开发   

     自行开发数据传输服务,完成原MS SQL Server业务库与My SQL新数据库的实时同步,并支持双向数据库可写。

     基本过程如下,需实现数据库增量数据订阅,并发送到目标数据库,目标数据库回放所有增量记录,以保证与源数据数据完整一致性。在此过程中,有以下方面需着重考虑。

     1、如何实现数据库增量数据订阅

     1)数据查询:设置查询语句或者服务定时查询增量数据

     2)设置触发器,表数据发生变化时,记录增量数据

     3)数据库日志逆向分析:My SQL数据库可使用binlog日志,记录数据库日志。通过日志逆向分析,获取所有数据库增量记录,并回放到目标数据库。

    

     目前SymmetricDS支持1)、2)实现,而阿里云otter采用的是3)中的日志分析方式。阿里云数据传输服务DTS,提供My SQL RDS的增量数据订阅。

     2、监测解决冲突,异常数据处理

     由于数据库双向可写,需监控监测冲突,并做好对应的日志记录。当出现异常数据,例如要求插入的数据,数据库中已经存在;或者更新数据,发现数据记录并不存在,需根据预定义的规则进行相应的处理。

 

二、SymmetricDS

     SymmetricDS是一个完成不同类型数据库之间同步的开源软件。SymmetricDS是一个java应用,一般支持JDBC驱动的数据库都可以使用。

 

     SymmetricDS采用了自动建立触发器以及定时查询数据的方法,来获取增量数据。每一个数据库同步点都被设置为一个节点,节点间数据可通过HTTP或者HTTPS传输,节点可以被配置为主动推送到其他节点组,或者从节点组拉取数据。数据发送严格按照channel设置进行,一个channel由一组相互依赖的表组成。一个节点可以设置多个channel同步数据信息,这样可以做到channel间的数据不会相互耦合。一个channel失败停止,不会影响其他channel的正常同步。

 

    SymmetricDS还有以下特点:

     1、支持扩展,可以与数据库异地部署。

     2、节点间数据可通过HTTP或者HTTPS传输,节点可以被配置为主动推送到其他节点组,或者从节点组拉取数据。同时也允许其他方式的接口。

     3、channel可设置同步超时时间,或者发送后立即删除,以清理同步后的数据。  channel同步方法,可以让表同步间不会相互干扰。

     4、数据完整性错误,可以设置冲突检测和处理。

     5、支持双向同步。

     6、change notification可配置,默认为一分钟。

     7、管理功能是通过JMX来处理。

    

 

三、附件:

《资料查阅笔记》

1、阿里云     

     阿里云目前的数据传输服务DTS,只支持MySQL间的实时同步,无法满足业务需求。但是,MySQL搭建在阿里云,可以采用订阅的方式,获取MySQL的增量数据。增量数据则可以通过其他服务,同步到SQL Server。阿里云同时支持,SQL Server上云迁移。

 

  • A->B->A 即实例A和实例B之间的双向同步架构。

    双向同步

     1)操作只支持双向实例均为MySQL

     2)数据库使用RDS实例

         支持两种数据引擎:MySQL、SQLServer、PostgreSQL

         需迁移数据库到云上

     3)是否可以通过“数据订阅”实现增量数据的实时获取

         此功能是指可以实时获取RDS实例的增量数据。目前,只支持RDS For MySQL实例。

         数据传输只提供JAVA版SDK,一个订阅通道只可以被一个SDK消费。

         订阅的本质是使用了MySQL的binlog日志。

         数据订阅包年1800美元左右。

 

     4)是否支持SQL Server数据迁移

         支持

2、腾讯云:数据传输服务DTS

     腾讯云的数据传输服务DTS目前处于公测阶段,可免费使用。但是不支持实时同步功能,且数据迁移、数据订阅只支持MySQL。

     与阿里云相比,功能少,且无法迁移SQL Server上云,因此还是选择阿里云。

 

     1)与阿里云一样,实时同步功能只支持MySQL实例。但是没有发现实时同步的任何资料,还没有上线。

     2)灾备实例同步,主实例只支持MySQL。

     数据迁移目前支持的数据库无SQL Server、可支持 MySQL 、 Redis、MongoDB、PostgreSQL 和 MariaDB。

     SDK支持JAVA版本

 

 

《参考文章网址》

序号

标题

网址

备注

1

使用SyncNavigator轻松实现数据库异地同步、断点续传、异构同步

https://yq.aliyun.com/sqlarticle/52767

 

2

mysql实时同步到mssql的解决方案

http://www.cnblogs.com/liweis/p/4749961.html

 

3

不同数据库之间的实时同步

https://wenku.baidu.com/view/9fe06e8baef8941ea66e055d.html

 

4

饿了么异地双活数据库实战

https://yq.aliyun.com/articles/313844?utm_content=m_38049

 

5

数据库相关中间件介绍

http://www.cnblogs.com/grefr/p/6087942.html

 

6

阿里云:云上灾备和多活架构

https://m.aliyun.com/doc/document_detail/71881.html

 

7

创建 RDS for MySQL 实例间数据实时同步作业

 

https://help.aliyun.com/document_detail/26633.html?spm=a2c4g.11186623.3.3.I917ju

 

 

8

阿里云数据库

https://www.alibabacloud.com/zh?spm=a2c5t.11065259.1097650.1.2ec1664cPRLmn0

 

 

9

数据传输DTS

https://www.alibabacloud.com/zh/product/data-transmission-service?spm=a2796.7919406.1023987.dzproductd5.51d06ecfXZv7Vh#overview

 

 

10

DTS文档

https://www.alibabacloud.com/help/zh/product/26590.htm?spm=a2796.126074.638660.9.73683c1fJFkoi7

 

 

11

MySQL的binlog日志

 

https://www.cnblogs.com/martinzhang/p/3454358.html

 

 

12

腾讯云-数据传输服务DTS

https://cloud.tencent.com/document/product/571/13708

 

 

13

多源异构数据转换技术

http://topwalk.com/index.php?id=169

 


多源异构数据转换技术(Heterogeneous Data Transform)采用中间件技术,将源数据(如:XML、CSV、TXT,ORACLE、MySQL、DM等)转换为序列化文件进行传输,目的端自动将序列化文件转换为目标格式,实现多源异构数据的转换。

 

14

SymmetricDS 数据库双向同步开源软件入门

http://www.cnblogs.com/jyh317/p/4259635.html

 

15

SymmetricDS官网

https://www.symmetricds.org/

 

 

16

阿里巴巴开源otter

https://github.com/alibaba/otter

 

17

SymmetricDS 异构数据库同步软件部署案例

 

http://www.cnblogs.com/bobozhu/p/3694599.html

 

 

 

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值