赞
踩
在生产环境中,经常会遇到MySql与Redis数据不一致的问题。那么如何能够保证MySql与Redis数据一致性的问题呢?话不多说,咱们直接上解决方案。
首先,咱们得先开启MySql的允许基于BinLog文件主从复制。因为Canal的核心原理也是相当于把自己当成MySql的一个从节点,然后去订阅主节点的BinLog日志。
开启BinLog文件配置
1. 配置MySQL的 my.ini/my.cnf 开启允许基于binlog文件主从同步
log-bin=mysql-bin #添加这一行就ok
binlog-format=ROW #选择row模式
server_id=1 #配置mysql replaction需要定义,不能和canal的slaveId重复
配置该文件后,重启mysql服务器即可
show variables like 'log_bin';//查询MySql是否开启了log_bin.没有开启log_bin的值是OFF,开启之后是ON
2. 添加cannl的账号或者直接使用自己的root账号。添加完后一定要检查mysql user 权限为y(SELECT* from `user` where user='canal')
drop user 'canal'@'%';CREATE USER 'canal'@'%' IDENTIFIED BY 'canal';grant all privileges on *.* to 'canal'@'%' identified by 'canal';
flushprivileges;
整合Kafka
1. 由于Kafka依赖Zookeeper,先安装zookeeper
zoo_sample.cfg 修改为 zoo.cfg
修改 zoo.cfg 中的 dataDir=E:\zkkafka\zookeeper-3.4.14\data
新增环境变量:
ZOOKEEPER_HOME: E:\zkkafka\zookeeper-3.4.14 (zookeeper目录)
Path: 在现有的值后面添加";%ZOOKEEPER_HOME%\bin;"
运行zk zkServer.cmd。
1 、编辑zkServer.cmd文件末尾添加pause 。这样运行出错就不会退出,会提示错误信息,方便找到原因。
2.如果报错内容为:-Dzookeeper.log.dir=xxx"' 不是内部或外部命令,也不是可运行的程序 或批处理文件的解决。则建议修改zkServer.cmd文件:
@
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。