开发者社区> 问答> 正文

关于canal和mysql主备的问题

现在有种情况,比如主库一共要插入100W条,插入到50W的时候 ,canal挂了。然后主库插入到70W的时候,主库也挂了,之前我配置了canal的备库信息,把canal启动,canal自动连到了备库上,这时候开始抽取的时间点是50W的位置还是70W的位置?

原提问者GitHub用户ZSH9053

展开
收起
古拉古拉 2023-05-08 13:42:10 133 0
2 条回答
写回答
取消 提交回答
  • canal的位点记录是以事务为边界,切换到备库是50w的位置。 ps. 如果主库异常crash后导致备库binlog丢失,这个canal也同样拿不到丢失的数据

    原回答者GitHub用户agapple

    2023-05-09 17:46:35
    赞同 展开评论 打赏
  • 随心分享,欢迎友善交流讨论:)

    在Canal的主备切换场景中,如果Canal挂了,备库自动接替Canal的工作,但是由于备库在Canal挂掉时的数据没有同步完全,因此启动备库后,Canal会从上次同步完成的位置开始同步数据。

    在您的情况下,Canal挂掉时,主库已经插入了70W条数据,备库的数据同步进度可能只到了50W或者其他的位置。当您启动备库时,Canal会从上次同步完成的位置开始同步数据,并且不会立即从主库的70W位置开始同步。因此,您需要注意数据同步的进度,并且确保数据没有丢失或者重复同步。

    为了避免这种情况的发生,建议您在Canal挂掉时尽快恢复Canal,以便能够及时同步数据。同时,还可以考虑使用Canal的高可用方案,例如Canal Server的集群模式,以保证Canal的高可用性和可靠性。

    2023-05-08 13:44:56
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
One Box: 解读事务与分析一体化数据库 HybridDB for MySQL 立即下载
One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载
如何支撑HTAP场景-HybridDB for MySQL系统架构和技术演进 立即下载

相关镜像