美文网首页数据分析
数据库同步的现状

数据库同步的现状

作者: ShootHzj | 来源:发表于2020-08-20 11:08 被阅读0次

    前言

    ​ 我一直对数据库之间的实时同步有着浓厚的兴趣,也想自己构筑一个数据库同步系统。主要原因是一直觉得随着系统的发展,系统中的数据难免需要异构。也正是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故障,就只能人工处理了。

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

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

    数据库全量同步流程概述

    两种常见的方式:

    • 导入MysqlDump文件
    • 全盘扫描表的方式

    Mysql-全量Dump

    将Mysql的Dump文件导入工具

    Mysql-全量扫描

    全量扫描Mysql中的数据

    数据库增量同步流程概述

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

    • 全量对比得出增量数据
    • 基于日志文件读取增量数据
    • 基于建触发器获取增量数据
    • 基于时间字段切分数据

    相关文章

      网友评论

        本文标题:数据库同步的现状

        本文链接:https://www.haomeiwen.com/subject/efjsjktx.html