canal+otter数据同步和MySQL主从复制有哪些不同?

新入职的公司在使用canal和otter做数据同步,我之前没有用过这两个中间件,只知道MySQL主从复制。在我看来,MySQL的主从复制不就是一种数据同步吗?canal+otter的数据同步和MySQL的主从复制有什么不同?为什么要用它们?

阅读 5.9k
3 个回答

原理

canal+otter同步的本质原理和MySQL主从复制是相同的。

MySQL主从复制时从服务器有两个线程:

  1. I/O Thread,负责接收主服务器的BinLog并写入本地RelayLog
  2. SQL Thread,负责读取RelayLog进行SQL重放
  1. canal相当于I/O Thread
  2. otter相当于SQL Thread

区别

  1. canal+otter方案可以不落盘,不产生磁盘I/O
  2. canal+otter可以对数据进行干预,插入其他逻辑,比如同步ElasticSearch

canal+otter 你可以同步到 oracle/mysql,还可以再同步过程中插入你自己的逻辑,比如过滤,或者转存其他存储;但 mysql 主从复制,你只能复制到 mysql,啥也干不了

canal+otter的话可以实现数据同步到对端非mysql数据源类型的数据库。使用mysql主从复制的话只能是mysql之间的主从复制。
canal的话相当于模拟了一个slave,然后将数据解读出来可以按照自己的需要同步到想要的数据库里面。
还有一个产品CloudCanal的话也是可以完成canal类似的功能,产品化比canal的话要做的更好。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题