开发者社区> 问答> 正文

自由门数据的疑惑

看了历史的几个问答,retl库必须和源库在同一个实例 ,然后再插入相关数据。但是一般的生产库会分散在多个实例上面,也就是生产库每个实例都需要新建一个retl库 然后启动了channal再插入数据。这样对生产库入侵太大了,有没有更好的方式。如果用位点来做,那么更悲剧了。需要把所有的库先记录位点,然后备份到目标库,然后在cannal设置位点,然后再启动。。。

请问是否有更好的方式,或者下个版本是否考虑优化下初始化的方式

原提问者GitHub用户 boboChina

展开
收起
大圣东游 2023-06-21 16:34:04 73 0
1 条回答
写回答
取消 提交回答
  • 这应该是otter的设计者做了比较、权衡后的结果吧: 1)默认情况下监听retl库,当retl.retl_buffer变更时根据记录中的库名.表名+主键来查询数据并进行同步,其实这个过程由a(查询后把库名.表名+主键信息插入retl.retl_buffer)、b(binlog的retl.retl_buffer解析)、c(反查retl_buffer记录中的库名.表名+主键)、d(得到数据后进行同步)这些步骤组成。 2)普通同步过程就是只有binlog日志解析、数据同步。

    如果要想实现分离,那么在a、c两个步骤的操作就变得很复杂了,a步骤就不是一个sql语句那么简单了,而且c步骤还得建立新的db链接来进行查询。

    原回答者GitHub用户luoyaogui

    2023-06-21 17:42:35
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

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