Canal(redis与mysql数据一致性)

canal实现原理

1、canal server端会伪装成mysql从节点,去读取mysql主节点binlog文件,实现增量同步

2、canal server端将数据以json格式同步到客户端,MQ消费者消费消息,将数据同步到redis

来源于蚂蚁课堂

环境搭建


配置Mysql服务器

1、配置MySQL的 my.cnf  开启允许基于binlog文件主从同步,在[mysqld]下添加以下配置

log-bin=mysql-bin #添加这一行就ok

binlog-format=ROW #选择row模式

server_id=1 #配置mysql replaction需要定义,不能和canal的slaveId重复

配置该文件后,重启mysql服务器即可

2、添加cannl的账号 或者直接使用自己的root账号

drop user 'canal'@'%';

CREATE USER 'canal'@'%' IDENTIFIED BY'canal';

grant all privileges on *.* to 'canal'@'%'identified by 'canal';

flush privileges;

构建CanalService

1、下载canal

2、修改\conf\example下的instance.properties 配置文件内容

canal.instance.master.address=127.0.0.1:3306

canal.instance.dbUsername=root

canal.instance.dbPassword=****

3、修改example/instance.properties

canal.mq.topic=test-topic

4、修改canal.properties

# tcp, kafka, RocketMQ

canal.serverMode = kafka

canal.mq.servers = 127.0.0.1:9092

5、./startup.sh 启动canal服务器端

注意:

如果canal+kafka+mysql数据同步配置成功后,zookeeper没有自动创建主题。可以将数据库的数据做一下修改,这是因为canal是懒加载的形式创建kafka的主题的,建议可以把数据库的内容做变更下,canal就会出发创建kafka主题。

创建CanalClient

Maven依赖

<dependency>

    <groupId>org.springframework.kafka</groupId>

    <artifactId>spring-kafka</artifactId>

</dependency>

<dependency>

    <groupId>com.alibaba.otter</groupId>

    <artifactId>canal.client</artifactId>

    <version>1.1.0</version>

</dependency>

zookeeper的环境搭建

下载zookeeper压缩包(http://mirrors.hust.edu.cn/apache/zookeeper/stable/

解压

> tar -zxvf zookeeper-3.4.10.tar.gz //解压

> cd zookeeper-3.4.10/conf //切换到配置目录下

> mv zoo_sample.cfg zoo.cfg //更改默认配置文件名称

> vi zoo.cfg //编辑配置文件,自定义dataDir

启动Server

> cd zookeeper-3.4.10/bin //切换到 bin目录

> ./zkServer.sh start //启动

Cli连接

> cd zookeeper-3.4.10/bin //切换到 bin目录

> ./zkCli.sh -server 127.0.0.1:2181

centos7

同mac,注意:如果服务器上有tomcat服务,需要将8080端口释放,不然启动zookeeper会出现

Error contacting service. It is probably not running.

kafka的环境搭建

修改server.properties中的配置  

log.dirs=***********

zookeeper.connect=localhost:2181

启动kafka

cd /Users/zhouhao/soft/kafka/bin

./kafka-server-start.sh ../config/server.properties

后台启动方式

./kafka-server-start.sh -daemon ../config/server.properties

查看所有topic

./kafka-topics.sh --list --zookeeper localhost:2181

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容