Otter同步配置
标签: Otter
开启mysql日志
Otter要求源数据库开启mysql的binlog写入功能,建议配置binlog模式为row。
查询mysql的binlog模式:show global variables like '%binlog_format%';
编辑/etc/my.conf,修改参数如下:
[myslqd]
log-bin=mysql-bin #添加这一行就ok
binlog_format=ROW #选择row模式
server_id=1 #配置mysql replaction需要定义,不能和canal的slaveId重复
canal的原理是模拟自己为mysql slave,所以这里一定需要做为mysql slave的相关权限.
CREATE USER canal IDENTIFIED BY ‘canal’;
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON . TO ‘canal’@’%’;
– GRANT ALL PRIVILEGES ON . TO ‘canal’@’%’ ;
FLUSH PRIVILEGES;
针对已有的账户可直接通过grant添加权限
数据源配置
进入配置管理->数据源配置,添加数据源。源数据库和目标数据库不同时需要都添加进来。
canal配置
进入配置管理->canal配置,添加canal
数据表配置
进入配置管理->数据表配置,添加数据表。需要同时添加源数据表和目标数据表。
单向同步配置
channel配置
进入同步管理,添加channel
添加pipline
进入同步管理,找到上一步创建的channel,点击Channel名字,进入pipline配置
添加pipline
高级设置中可以开启和关闭DDL,默认为开启,DDL异常建议跳过
DDL仅支持相同库名的DDL同步,不同库名配置时会出现异常
添加映射关系
进入pipline配置,找到上一步创建的pipline,点击pipline名字,进入映射关系列表
添加映射关系
点击下一步,可以配置源表和目标表之间列的映射关系,如果表字段名完全相同,可以直接点击保存。
启用channel
回到channel列表,找到刚刚配置完成的channel,点击启用。
启用后运行状态变为运行。
测试数据
至此单项同步的配置已经完成,可以对源数据表进行数据操作,测试同步结果。
双向同步
配置channel
使用单向同步时配置的channel,开启channel的数据一致性
配置pipline
新增一个canal,同一数据库可以配置多个canal
在单向同步时配置的channel中新增一个pipline
原有的pipline配置为主节点,可以开启DDL,新增的pipline配置为子节点,关闭DDL,DDL异常都选择跳过
映射配置
配置方法相同,和上一步配置的映射源表和目标表相反即可
出现的问题
2017-10-26 11:21:20.090 [destination = 192.168.5.127 , address = /192.168.5.127:3306 , EventParser] ERROR c.a.otter.canal.parse.inbound.mysql.MysqlEventParser - dump address /192.168.5.127:3306 has an error, retrying. caused by
java.lang.NullPointerException: null
at com.alibaba.otter.canal.parse.inbound.mysql.MysqlConnection.loadBinlogChecksum(MysqlConnection.java:284) ~[canal.parse-1.0.23.jar:na]
at com.alibaba.otter.canal.parse.inbound.mysql.MysqlConnection.dump(MysqlConnection.java:113) ~[canal.parse-1.0.23.jar:na]
at com.alibaba.otter.canal.parse.inbound.AbstractEventParser$3.run(AbstractEventParser.java:209) ~[canal.parse-1.0.23.jar:na]
at java.lang.Thread.run(Thread.java:745) [na:1.7.0_80]
参考这个问题数据不能同步,把版本换成的v4.2.12,或等新的4.2.15版本