当前位置:   article > 正文

kafka canal mysql_Canal+Kafka实现MySql与Redis数据一致性

redis kafka 数据一致性

在生产环境中,经常会遇到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文件:

@

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号