看了历史的几个问答,retl库必须和源库在同一个实例 ,然后再插入相关数据。但是一般的生产库会分散在多个实例上面,也就是生产库每个实例都需要新建一个retl库 然后启动了channal再插入数据。这样对生产库入侵太大了,有没有更好的方式。如果用位点来做,那么更悲剧了。需要把所有的库先记录位点,然后备份到目标库,然后在cannal设置位点,然后再启动。。。
请问是否有更好的方式,或者下个版本是否考虑优化下初始化的方式
原提问者GitHub用户 boboChina
这应该是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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。