返回首页

关于折磨小美美网友如何看?

时间:2023-02-11 来源:原创/投稿/转载作者:管理员点击:

  随着业务的增多,数据体量的越来越大。SQLServer的单库单表,已不能满足大量数据的存储,多维度的数据查询及检索等需求。使用MySQL分库分表和ElasticSearch存储业务数据,可以很好的解决上述需求。而数据进行异构存储后,随之而来的就是数据同步的一系列问题:

  实时索引同步服务:基于canal解析MySQL的binlog数据,服务订阅消息,实时消费数据,封装存储至mapping表、ElasticSearch等数据源。

  实时索引补偿服务:通过遍历事务记录表,对失败消息进行实时补偿操作,以保证数据的可靠性、稳定性。

  数据同步比对服务:此服务用于保障source数据和target数据的最终一致性,分为存量同步和增量同步。

  分布式协调监控:基于注册至zookeeper的分片作业,进行作业的协调与监控,达到实时监控作业健康状态。

  PDataX系统数据存量同步,是通过扫描库表的方式,将source数据源同步至target数据数据源。数据源可以是SQLServer、MySQL、Oracle等,目标数据源可以是MySQL单库单表、MySQL分库分表、MySQL重构关系表、ES索引等。

  由于业务数据的暴增,需分库分表至MySQL数据库中,业务应用进行双写操作,PDataX扫描SQLServer表,进行源表和目标表的数据比对,用于校验数据的最终一致性。

  PDataX支持scan表、消费binlog消息等方式。支持多数据源并行高效作业。支持定制化分库分表作业。

  PDataX通过消费source数据源binlog消息,按照单表索引、聚合索引、mapping等策略,分片消费数据,实时存储至target数据源,保证数据的及时性。

  全部消费作业执行事件均记录事务。异常执行事件,通过实时补偿服务进行补偿操作,保证数据的完整性。

  PDataX系统支持作业定制化协调分配,不同的作业任务可以动态分配到不同物理服务节点。同时可以实时监控不同节点的健康状态。

  第一台服务器上线触发主服务器选举。主服务器一旦下线,则重新触发选举,选举过程中阻塞,只有主服务器选举完成,才会执行其他任务。

  定时任务触发时,如需重新分片,则通过主服务器分片,分片过程中阻塞,分片结束后才可执行任务。如分片过程中主服务器下线,则先选举主服务器,再分片。

  通过上一项说明可知,为了维持作业运行时的稳定性,运行过程中只会标记分片状态,不会重新分片。分片仅可能发生在下次任务触发前。

  实现失效转移功能,在某台服务器执行完毕后主动抓取未分配的分片,并且在某台服务器下线后主动寻找可用的服务器执行任务。

  PDataX系统一定程度上减轻了DBA在大量数据同步迁移过程中痛点,保障了业务数据双写的最终一致性,减少数据不一致导致的业务损失,同时为海量数据多维度检索提供便捷查询。但是,PDataX系统还处于不断完善和发展中,后续我们会在容错性、便捷性、高性能和实时监控等各方面持续优化。

【责任编辑:管理员】
随机推荐 更多>>