Mysql数据库双向同步技术⽅案
Mysql数据库双向同步技术⽅案
项⽬背景:
⽬前使⽤的数据库的结构,⽐较复杂,混乱,在加上前期产品设计的业务复杂度⾼,公司⽬前扩张较快,现有的数据库结构不能够⽀持后期的功能业务扩张,⼜加上公司的技术框架结构,是由PHP、JAVA等语⾔开发开发,像WMS系统,CRM系统等,是由PHP开发,OMS系统,**数据分析系统, 所以技术选型以及架构⽐较紊乱,现在已经没办法维护,bug⼜多,所以要做数据库重构的,同时还要做到和旧数据兼容的问题,并且需要做到新⽼系统可以进⾏双向切换。
此时就涉及到数据库之间双向同步问题
技术选型:
阿⾥E-MapReduce(Hadoop集)
阿⾥E-MapReduce(Kafka集)css文本右对齐
数据采集 : Canal 、Flume 、 Logtail
消息中间介 : Kafka
帝国cms生成app计算引擎 : Sparksql、SparkStreaming
数据库 : Mysql
技术架构图:
执⾏步骤
准备⼯作:
确定需要同步的表名,确定新表和旧表之间的映射关系。以及数据的解析规则和同步时的⽣成规则
步骤:
1.⼀次尽可能的确定需要同步的表名,不建议,就因为⼀个⼩需求就需要增加需要同步的表数据,今天加⼀个,明天加⼀个,因为集⼀旦出现问题,不好维护,你可以理解为没法维护。不可能保证excetlyonce。
最好⼀次性确定需求,避免今天改明天优化的情况。需要与产品沟通好,莫不要因为今天修修,明天改改,后天优化优化,⽽导致数据结构紊乱,技术层⾯本来简单的问题,⽽造成逻辑复杂。mysql是什么系统
2. 建议进⾏增量同步数据,如果想在第⼀次运⾏的时候进⾏⼀个全量同步,需要修改很多配置,并且配置的参数是有问题的,并且要保证集的IO,两个Mysql的IO,以及⽹络的通畅,因为⾛的是内⽹,但是同步的还不⼀定是全量数据,跟BInLog什么时候开通的有关系。
但是不建议这样做,因为数据量太⼤,⼤概有⼏⼗G,这⼏⼗G的数据都需要通过⽹络进⾏传输,容易造成⽹络阻塞。
3.购买Kafka集,并连同⽹络。
4.做好同步数据的测试代码。
5.上传jar包进⾏测试 可⾏性的Demo测试
重点问题:
1. 新添加了哪些字段,新添加的字段,对于⽼表应该怎么处理,怎么同步。
2. 例如订单编号,或者客户标识可能是使⽤的新的计算规则产⽣的,怎么进⾏匹配解析同步。
3. 数据同步,如果是没有主键的话 on duplicate key update 这个语法 没有主键是否更新 , 待测试 。
4. 旧表数据可能进⾏拆分,拆分规则是啥? 将数据拆分到哪些表中。
dubbo分布式架构实战每个表的更新规则:有待完续。。。
表字段的映射关系:有待完续。。。php命名空间的访问
表和表之间的关系:有待完续。。。
同步规则:有待完续。。。
更新规则:有待完续。。。
java trim更新未待完续 。 。。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论