大致过程:
演示说明:
- 搭建一个数据库同步任务,源数据库ip为:192.168.134.129,目标数据库ip为:192.168.134.131。源数据库已开启binlog,并且binlog_format为ROW;
- 数据同步精确到一张表进行测试,测试的表名为test.example,简单包含两个子段,测试过程中才创建;
- 配置完成后,手动在源库插入数据,然后快速在目标库进行查看数据,验证数据是否同步成功。
演示文本:
CREATE TABLE `test`.`example` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(32) COLLATE utf8_bin DEFAULT NULL , PRIMARY KEY (`ID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into test.example(id,name) values(null,'hello');
操作步骤:
- 添加数据库
a. 源库 jdbc:mysql://192.168.134.129:3306
b. 目标库 jdbc:mysql://192.168.134.131:3306 - 添加canal
a. 提供数据库ip信息 - 添加同步表信息
a. 源数据表 test.example
b. 目标数据表 test.example - 添加channel
- 添加pipeline
a. 选择node节点
b. 选择canal - 添加同步映射规则
a. 定义源表和目标表的同步关系 - 启动
- 测试数据
几点注意:
- 对应node机器选择时,建议遵循:S/E节点选择node需尽可能离源数据库近,T/L节点选择node则离目标数据库近。如果无法提供双节点,则选择离目标数据库近的node节点相对合适。
- canal中配置解析的数据库ip需要和映射关系中源表对应的数据库ip一致。ps:映射关系进行匹配的时候是基于表名,虽然数据库ip不匹配也会是有效。
演示环境(借用一下官方的图)
注:如果图片看不清,可以右键在新标签页中打开图片
一、 添加数据库
a. 源库 jdbc:mysql://192.168.134.129:3306
b. 目标库 jdbc:mysql://192.168.134.131:3306
二、添加canal
提供数据库ip信息
三、添加同步表信息
a. 源数据表 test.example
b. 目标数据表 test.example
四、添加channel
五、添加pipeline
点击Channel管理列表刚添加的Channel的名字。
a. 选择node节点
b. 选择canal
六、添加同步映射规则
点击Pipeline管理列表刚添加的Pipeline的名字。
a. 定义源表和目标表的同步关系