一 架构设计
简单架构设计
说明:
两个mysql库中均创建有canal/canal的账户;
这里A、B两个mysql库是用来模拟t_dept进行分库分表;
另外,在A、B两种表中都创建有表t_canal.
处理分表分库的场景,主要是要使用配置group-instance.xml。group-instance主要针对需要进行多库合并时,可以将多个物理instance合并为一个逻辑instance,提供客户端访问。
比如产品数据拆分了4个库,每个库会有一个instance,如果不用group,业务上要消费数据时,需要启动4个客户端,分别链接4个instance实例。使用group后,可以在canal server上合并为一个逻辑instance,只需要启动1个客户端,链接这个逻辑instance即可。
二 关键实现流程
2.1 canal.properties配置文件
canal.properties是对应一个canal server的全局配置,保存位置:/usr/local/hadoop/app/canal_group/conf/canal.properties。配置修改内容如下:
canal.id = 1 #唯一标识
canal.ip =192.168.175.20 # client访问canal server的ip地址
canal.port = 11111 # client访问canal server的端口
#canal.instance.global.spring.xml = classpath:spring/file-instance.xml #原来是这个
canal.instance.global.spring.xml = classpath:spring/group-instance.xml #启动这个
#其他配置保持默认即可.
2.2 instance.properties配置文件
使用如下命令复制出两个代表canal instance的文件夹:
cp -R example t_dept;
cp -R example t_canal;
rm -rf example;
调整配置文件/usr/local/hadoop/app/canal/conf/t_dept/instance.properties如下:
#canal.instance.master.address=192.168.175.21:3306 #原来的
canal.instance.master1.address=192.168.175.21:3306 #新增,与group-instance.xml的对应
canal.instance.master2.address=192.168.175.22:3306 #新增,与group-instance.xml的对应
# username/password