数据分析

数据库同步的现状

2020-08-20  本文已影响0人  ShootHzj

前言

​ 我一直对数据库之间的实时同步有着浓厚的兴趣,也想自己构筑一个数据库同步系统。主要原因是一直觉得随着系统的发展,系统中的数据难免需要异构。也正是Martin在《Nosql 精粹》中说的,如何选择数据库,取决于你想要如何查询数据。下文我们以Source代指源数据库,Sink代指目标数据库。

​ 一个理想的数据库同步系统,可以做到对任何表格(无主键限制)对应数据同步,一条不多,一条不少。但正如我在 https://www.jianshu.com/p/7defaa460543 文章中提到的,针对无主键,无业务约束的数据,我有一个悲伤的结论,分布式场景下,针对无主键,无业务约束的数据,谁也难言绝对的端到端一次。

​ 在实际使用中,想要做到这一点,除非将Source和Sink进行全量对比,在有大数据量的情况下,很难做到实时同步。比较可行的方案是先用至少一次的语义同步数据到Sink,然后再定期对比数据,修正数据。类似大数据处理中的lamda架构。

​ 我现在想构筑的是一个,在有主键,或者至少有联合主键,业务约束的场景下(或者数据库底层有ID),能够做到一条不多,一条不少的系统。

开源工具简述

​ 这些天了解到,开源的工具能用的有: DataX,Flume等,我还没有仔细分析,我现在只仔细看了看DataX,后面对其他组件有认识理解再刷新。

​ 仅仅针对DataX而言,至少在商用生产环境,该组件在高可用离开箱即用还有一些距离,这方面做的比较好的开源软件有,Pulsar,Flink等,做到了宕机可以自愈, 单进程宕机不影响集群工作。聊聊dataX的集群部署方案,且不论工作进程宕机后,worker之间能否互相接力。一旦datax_admin故障,就只能人工处理了。

​ 我觉得,开源组件距离生产环境高可用,还是有一些距离.

理想的整个流程分为增量同步和全量同步

数据库全量同步流程概述

两种常见的方式:

Mysql-全量Dump

将Mysql的Dump文件导入工具

Mysql-全量扫描

全量扫描Mysql中的数据

数据库增量同步流程概述

参考 https://blog.csdn.net/mochou111/article/details/80995156
四种方式

上一篇下一篇

猜你喜欢

热点阅读