开发者社区> 问答> 正文

HA模式 采用H2存储,server切换的时候 消费错误

环境信息

canal version mysql version

问题描述

HA模式的时候,A服务器已经消费了一个星期了,B处于准备状态,当A关闭的时候,B又从配置文件读取到了一个星期前的gtid进行了读取 这个就有问题了

原提问者GitHub用户bestzhao

展开
收起
古拉古拉 2023-05-08 14:55:17 69 0
2 条回答
写回答
取消 提交回答
  • 你说的HA应该是zookeeper模式把,你得确认切换到B时拿到对应zookeeper的配置是否正确? 也确认canal的版本,1.1.0的早期几个版本针对写MQ的有HA的问题

    原回答者GitHub用户agapple

    2023-05-09 18:02:15
    赞同 展开评论 打赏
  • 这种情况可能是由于 H2 数据库的数据没有实时同步,在 server 切换时无法保证数据的一致性。为了解决该问题,可以尝试以下两种方式:

    使用 MySQL 等外部数据库进行存储 目前 Canal 中支持使用 MySQL、Oracle、PostgreSQL 和 SQLServer 等外部数据库进行数据存储。相比 H2 数据库而言,外部数据库具有更好的数据可靠性和一致性,能够更好地保证 HA 模式下的数据同步和切换。 如果您的业务量较大,同时需要保证数据的可靠性和一致性,建议使用外部数据库进行数据存储。

    在 server 切换时手动同步数据 如果您仍然想使用 H2 数据库进行存储,在 server 切换时可以手动同步数据,以保证数据的一致性。具体步骤如下: 在 server 切换前,停止主备 server 上的 Canal 实例; 将主 server 上的 H2 数据库文件复制到备 server 上,并启动备 server; 确认备 server 上的 Canal 实例已正常启动,并开始消费数据; 关闭主 server 上的 H2 数据库,并启动主 server。 在进行 server 切换时,需要确保目标 server 中的 H2 数据库与源 server 中的数据一致,并且 Canal 实例已正常启动。建议在进行 server 切换前,对数据进行备份和测试,以避免因数据不一致导致的异常情况。

    2023-05-08 16:01:59
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载