环境信息
canal version mysql version
问题描述
由于业务需要,server端要订阅两个mysql实例,但是canal-adapter-sync-es里一个yml就是需要跨库查询。但是一个yml里面只能填一个destination,能填两个吗
原提问者GitHub用户bestzhao
可以使用 YAML 的 merge 方法将两个 destination 配置合并为一个,然后将合并后的配置写入 canal-adapter-sync-es 中。
以下是一个示例 YAML 文件:
yaml
bash cat config1.yml | while read line; do
destination=$(echo $line | awk -F '-' '{print $1}')
cat $line >> $destination
done | awk '{print "\n"}1' | sort -u > merged_config 然后,可以将合并后的配置写入 canal-adapter-sync-es 中:
bash
不建议在一个yml文件里面同时配置两个destination,因为它们的配置可能会有所不同,例如MySQL的账号密码、binlog位置等等。而且,如果两个destination的数据源不同,可能需要连接不同的Elasticsearch集群,这也需要在yml文件里面进行配置。因此,建议分别为两个destination配置不同的yml文件。如果需要跨库查询,可以在canal-adapter-sync-es代码中实现跨库查询逻辑,例如使用多个JdbcTemplate连接不同的MySQL实例,然后将查询结果合并到同一个Elasticsearch索引中。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。