当前安装版本1.1.5版本
1、修改canal中任何文件前,必须关闭运行中canal,命令:bin/stop.sh
因为运行时,一直产生文件存储,所以必须关闭;
2、开启运行canal,命令:bin/start.sh
如果上一次正常关闭,直接开启
如果上一次非正常关闭,必须先删除 meta.dat、h2.mv.db 文件,还有更新bin-log文件编号、具体位置节点、是的canal能够监听到,因为再次开启时,会有数据冲突;
正常关闭canal,meta.dat会有记录
开始配置
1、给mysql开启支持bin-log日志;
修改my.cnf,命令:sudo vim /etc/my.cnf
在[mysql_id]下添加
server-id=1
log-bin=mysql-bin
binlog_format=row
2、重启 MySQL 使配置生效
sudo systemctl restart mysqld
3、检查bin-log日志是否开启
show variables like 'log_bin';
插入一条语句查询bin-log对应大小是否变化
show binary logs;
INSERT INTO user_info VALUES('1002332','zhangsan','male');
show binary logs;
对比两次bin-log日志大小是否变化了,如果变化了,则开启bin-log日志服务;
创建表
CREATE TABLE user_info(
`id` VARCHAR(255),
`name` VARCHAR(255),
`sex` VARCHAR(255)
);
3、给mysql中创建新用户并授权
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%' IDENTIFIED BY 'canal' ;
注意,此语句:授权,如果没有此用户,会自动创建该用户;
展示用户权力,命令:show grants for '用户名'@'主机名';
注意:主机名就是给用户授权时所写主机名;
为什么创建用户名且密码都为canal呢?因为canal服务端配置文件就用了账号canal、密码canal用来监控mysql,以获取bin-log日志;
刷新权限;
flush PRIVILEGES;
4、解压安装canal包,略过
5、修改canal.properties文件
若使用tcp模式,则canal.properties文件不用修改
若如果使用kafka模式,修改canal.properties中
修改1 改为kafka
# tcp, kafka, rocketMQ, rabbitMQ
canal.serverMode = kafka
修改2 指定kafka消费对所在ip地址,注意canal内置一套kafka,很可能ip就是一个,主要变化端口即可;
##################################################
######### Kafka #############
##################################################
kafka.bootstrap.servers = 127.0.0.1:9092
6、修改examp文件下instance.properties文件
如tcp模式
# position info 此处修改三处
#mysql所在服务中ip:端口
canal.instance.master.address=192.168.171.148:3306
#bin-log日志对应编号,命令:show binary logs; 查询一下
新认知:bin-log日志达到一定大小后,会自动创建新的日志,编号自动累计,此时配置编号是旧的没关系,会有指针寻找到最新位置;
canal.instance.master.journal.name=mysql-bin.000001
#对应bin-log日志位置节点,命令:show master status; 查询最新节点位置,多点击几次,刷新至稳定位置节点,也就是当前bin-log日志大小,也就某个指针节点,让canal能找到位置即可;
canal.instance.master.position=2755
# username/password 修改授权mysql账号密码,用根用户也行;
canal.instance.dbUsername=canal
canal.instance.dbPassword=canal
若为kafka模式
除了以上修改外,还要修改下面topic主题;
# mq config
#指定对应消费节点
canal.mq.topic=example
在logs文件中,成功指标;
canal.log日志中显示canal开启运行成功
meta.log日志中显示连接canal运行并监控对应msql中bin-log日志,表示监控成功;
example.log日志显示客户端消费canal推出来的消息状态;
mysql8.0 创建用户 GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO ‘canal‘@‘%‘ IDENTIFIE 报错_GOD_WAR的博客-CSDN博客