mysql redis binlog_Mysql通过binlog同步redis

本文介绍了如何使用Canal解析MySQL binlog并将数据实时同步到Redis。首先配置MySQL,包括添加用户和权限,然后详细说明了Canal的配置和启动步骤。接着展示了Java代码实现连接Canal并监听数据变化,根据INSERT、UPDATE、DELETE事件更新Redis中的数据。最后,验证了数据库更改会实时反映到Redis中。
摘要由CSDN通过智能技术生成

实现过程

通过canal解析binlog,canal主要模拟了mysql的Slave向Master发送请求,当mysql有增删改查时则会出发请求将数据发送到canal服务中,canal将数据存放到内存,直到客户端程序(canal服务端和客户端程序都是由java编写,且客户端逻辑由我们借助com.alibaba.otter.canal工具包下的类完成开发)通过发布-订阅这种模式消费canal服务中的数据。

配置mysql

1.在my.ini文件里的【mysqld】下添加如下:

e40f447dafb7

image

重启mysql,注意如果是文件名是my-default.ini要改名成my.ini

2.创建mysql用户,并配置canal权限,进入到mysql程序中,输入下列命令,创建用户,(用户名和密码都是:canal):

CREATE USER canal IDENTIFIED BY 'canal';

GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON数据库名.表名 TO 'canal'@'%';

-- GRANT ALL PRIVILEGES ON数据库名.表名 TO 'canal'@'%' ;

FLUSH PRIVILEGES;

下载并配置启动canal:

2.配置canal:主要配置的文件有两处,canal/conf/example/instance.properties和 canal/conf/canal.properties .下面对这两处做修改:

cd canal/conf/example/目录下对 instance.properties进行修改:

e40f447dafb7

image

cd canal/conf/目录下对 canal.properties 进行修改:

e40f447dafb7

image

3.启动canal:双击/bin/startup.bat文件启动

Java连接canal执行同步操作:

1.在maven项目中中加载canal和redis依赖包:

com.alibaba.otter

canal.client

1.0.12

redis.clients

jedis

2.4.2

2.建立canal客户端,从canal中获取数据,并将数据更新至Redis:

package canal;

import java.net.InetSocketAddress;

import java.util.List;

import com.alibaba.fastjson.JSONObject;

import com.alibaba.otter.canal.client.CanalConnector;

import com.alibaba.otter.canal.protocol.Message;

import com.alibaba.otter.canal.protocol.CanalEntry.Column;

import com.alibaba.otter.canal.protocol.CanalEntry.Entry;

import com.alibaba.otter.canal.protocol.CanalEntry.EntryType;

import com.alibaba.otter.canal.protocol.CanalEntry.EventType;

import com.alibaba.otter.canal.protocol.CanalEntry.RowChange;

import com.alibaba.otter.canal.protocol.CanalEntry.RowData;

import com.alibaba.otter.canal.client.*;

/**

* @Author: daijunchen

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值