假设现有两个机房,须要作到数据同步。mysql
如下是架构图(实际架构图根据现有机房架构和实际会比下图复杂,但总体思路不变):sql
Mycat、Canal、Otter是关键的三项技术:数据库
Mycat:数据库分库分表中间件,能够管理一个mysql集群,屏蔽了mysql集群,对外假装成mysql server,用户无感知mysql集群。架构
Canal:阿里巴巴开源产品,能够读取mysql二进制日志文件,并解析成想要的数据。google
Otter:阿里巴巴开源产品,配合Canal能够作到读取二进制文件,解析出增量数据sql,而后执行sql到指定链接。日志
流程:server
一、用户插入一条数据到mycat中间件
二、mycat解析sql,分配sql到指定mysql数据库同步
三、mysql(假设M1接收到数据)数据库接收数据,根据主从配置,写出二进制日志。产品
四、mysql(M2)读取二进制日志同步数据,mysql(S)读取二进制日志同步数据,并写出二进制日志
五、Canal读取二进制日志,解析成sql
六、Otter接到sql,获取链接,在机房B的mycat上执行sql
七、Otter收到sql执行回执,执行完毕。
注:
本文给予思路及具体技术方案,具体技术的应用及使用,请自行google。