Mysql数据库双向同步技术方案

                        Mysql数据库双向同步技术方案

项目背景:

目前使用的数据库的结构,比较复杂,混乱,在加上前期产品设计的业务复杂度高,公司目前扩张较快,现有的数据库结构不能够支持后期的功能业务扩张,又加上公司的技术框架结构,是由PHP、JAVA等语言开发开发,像WMS系统,CRM系统等,是由PHP开发,OMS系统,**数据分析系统, 所以技术选型以及架构比较紊乱,现在已经没办法维护,bug又多,所以要做数据库重构的,同时还要做到和旧数据兼容的问题,并且需要做到新老系统可以进行双向切换。

此时就涉及到数据库之间双向同步问题

技术选型:

阿里E-MapReduce(Hadoop集群)

阿里E-MapReduce(Kafka集群)

数据采集 : Canal 、Flume 、 Logtail

消息中间介 : Kafka

计算引擎 : Sparksql、SparkStreaming

数据库 : Mysql

 

技术架构图:

 

 

执行步骤

 

准备工作:

确定需要同步的表名,确定新表和旧表之间的映射关系。以及数据的解析规则和同步时的生成规则

步骤:

1.一次尽可能的确定需要同步的表名,不建议,就因为一个小需求就需要增加需要同步的表数据,今天加一个,明天加一个,因为集群一旦出现问题,不好维护,你可以理解为没法维护。不可能保证excetlyonce。

最好一次性确定需求,避免今天改明天优化的情况。需要与产品沟通好,莫不要因为今天修修,明天改改,后天优化优化,而导致数据结构紊乱,技术层面本来简单的问题,而造成逻辑复杂。

2.  建议进行增量同步数据,如果想在第一次运行的时候进行一个全量同步,需要修改很多配置,并且配置的参数是有问题的,并且要保证集群的IO,两个Mysql的IO,以及网络的通畅,因为走的是内网,但是同步的还不一定是全量数据,跟BInLog什么时候开通的有关系。

但是不建议这样做,因为数据量太大,大概有几十G,这几十G的数据都需要通过网络进行传输,容易造成网络阻塞。

3.购买Kafka集群,并连同网络。

4.做好同步数据的测试代码。

5.上传jar包进行测试  可行性的Demo测试

重点问题:

  1. 新添加了哪些字段,新添加的字段,对于老表应该怎么处理,怎么同步。
  2. 例如订单编号,或者客户标识可能是使用的新的计算规则产生的,怎么进行匹配解析同步。
  3. 数据同步,如果是没有主键的话 on duplicate key update 这个语法 没有主键是否更新 , 待测试 。
  4. 旧表数据可能进行拆分,拆分规则是啥? 将数据拆分到哪些表中。

 

每个表的更新规则:有待完续。。。

表字段的映射关系:有待完续。。。

表和表之间的关系:有待完续。。。

同步规则:有待完续。。。

更新规则:有待完续。。。

 

 

                                                                                                                                                                    更新未待完续   。 。 。

 

 

 

 

猜你喜欢

转载自blog.csdn.net/weixin_45592182/article/details/108494763
今日推荐