对当前mysql内部数据改变进行监控,一旦发现它内部数据发生改变话,那么当前canal会把这些信息接收过来并且来完成后续的数据同步工作
阿里旗下的一个开源项目(内部基于java开发) 监控数据库内部数据的改变
mysql开启binlog模式
开启binlog模式后,mysql才会对其内部的添加、修改、删除的这些操作都记录到相关的binlog日志中查看当前mysql是否开启binlog模式(cmd)
命令:SHOW VARIABLES LIKE ‘%log_bin%’如果log_bin的值为OFF是未开启,为ON是已开启。 开启mysql的binlog模式
修改 /etc/my.cnf配置文件
说明: log-bin=mysql-bin #开启日志监控 binlog-format=ROW #监控模式为ROW server_id=1 #配置mysql replaction需要定义,不能和canal的slaveId重复注意: 如果查询mysql的binlog的log_bin是ON的,那就不用设置了
重启mysql,记得要查看下mysql的进程,有可能启动报错或者启动不了 使用cmd进入到mysql
命令:mysql -h192.168.200.128 -uroot -proot创建账号,用于测试使用
测试账号 用户名:canal 密码:canal 账号权限:GRANT SELECT, SUPER, REPLICATION SLAVE, REPLICATION CLIENT ON . TO ‘canal’@’%’
使用root账号创建用户并授予权限
下载canal
https://github.com/alibaba/canal/releases/tag/canal-1.1.3上传解压
上传canal.deployer-1.1.3.tar.gz到Linux,解压到 /usr/local/canal目录下(tar -zxvf canal.deployer-1.1.3.tar.gz )
修改exmaple下的实例配置
修改 /usr/local/canal/conf/example/instance.properties 指定读取位置
命令:show master status查看File字段的binlog文件是否为mysql-bin.000001,如果不是mysql-bin.000001需要重置mysql
命令:rest master查看canal配置文件
修改 /usr/local/canal/conf/example/meta.dat
"journalName":"mysql-bin.000001","position":154,"注意:是重置后的数据
journalName 对应File的mysql-bin.000001 position 对应Position的154注意(不一致可能导致问题)
如果 /usr/local/canal/conf/example的meta.data的"journalName":“mysql-bin.000001”,“position”:154,"配置与数据库不一致可能会导致以下错误 启动服务
/usr/local/canal/bin/startup.sh
查看日志
/usr/local/canal/logs/canal/ 命令:cat canal.log
这样就表示启动成功了,后面没有任何异常,如果报WARN警告不用管。