canal增量同步数据到RocketMQ消息队列

本文档详细介绍了如何配置和使用Canal与RocketMQ进行MySQL数据的实时同步。首先从GitHub下载并安装Canal,然后配置Canal以使用RocketMQ作为消息中间件,接着设置MySQL的binlog格式和server_id。创建canal用户并授权,建立测试数据库和表,插入数据。最后,启动RocketMQ和Canal,并验证数据同步是否成功。
摘要由CSDN通过智能技术生成

1.下载安装canal

下载地址:https://github.com/alibaba/canal/releases

2.解压下载后的canal,其目录结为:

3.编辑/conf/canal.properties目录下的配置文件,选择消息中间件为RocketMQ

#设置服务模式为RocketMQ
canal.serverMode = rocketMQ
##################################################
######### 		    RocketMQ	     #############
##################################################
rocketmq.producer.group = test
rocketmq.enable.message.trace = false
rocketmq.customized.trace.topic =canal_test
rocketmq.namespace =
rocketmq.namesrv.addr = 127.0.0.1:9876
rocketmq.retry.times.when.send.failed = 0
rocketmq.vip.channel.enabled = false
rocketmq.tag = cannal_tag

4编辑conf/example目录下的instance.properties的配置文件

## mysql serverId,注意不要和mysqlId中的重复
canal.instance.mysql.slaveId=1234
##实例主机的地址
canal.instance.master.address=127.0.0.1:3306
# username/password
canal.instance.dbUsername=canal
canal.instance.dbPassword=canal
canal.instance.connectionCharset = UTF-8
# mq config和canal.properties中的保持一致
canal.mq.topic=canal_test

5.mysql目录结构,重点配置my.ini的binlog

 6.binlog的配置为:

#bin-log相关的配置
#1.开启 binlog
log-bin=mysql-bin 
#2.选择 ROW 模式
binlog-format=ROW 
#3.配置 MySQL replaction 需要定义,不要和 canal 的 slaveId 重复
server_id=1 

7.在数据库中查看相关的binlog有没有生效

 7查看binlog_fomt

 9,创建canal用户并且让MySQL为其授权

create user canal@'%' IDENTIFIED by 'canal';
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT,SUPER ON *.* TO 'canal'@'%';
FLUSH PRIVILEGES;

10.准备要同步的数据库及表

CREATE DATABASE IF NOT EXISTS gmall
CREATE TABLE `canal_test` (
  `体温` varchar(255) DEFAULT NULL,
  `身高` varchar(255) DEFAULT NULL,
  `体重` varchar(255) DEFAULT NULL,
  `文章` varchar(255) DEFAULT NULL,
  `日期` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

INSERT INTO `canal_test`(`体温`, `身高`, `体重`, `文章`, `日期`) VALUES ('36.5', '1.70', '180', '4', '2021-06-01');
INSERT INTO `canal_test`(`体温`, `身高`, `体重`, `文章`, `日期`) VALUES ('36.4', '1.70', '160', '8', '2021-06-02');
INSERT INTO `canal_test`(`体温`, `身高`, `体重`, `文章`, `日期`) VALUES ('36.1', '1.90', '134', '1', '2021-06-03');
INSERT INTO `canal_test`(`体温`, `身高`, `体重`, `文章`, `日期`) VALUES ('37.3', '1.70', '110', '14', '2021-06-04');
INSERT INTO `canal_test`(`体温`, `身高`, `体重`, `文章`, `日期`) VALUES ('35.7', '1.70', '133', '0', '2021-06-05');
INSERT INTO `canal_test`(`体温`, `身高`, `体重`, `文章`, `日期`) VALUES ('36.8', '1.90', '200', '6', '2021-06-06');
INSERT INTO `canal_test`(`体温`, `身高`, `体重`, `文章`, `日期`) VALUES ('37.5', '1.70', '132', '25', '2021-06-07');
INSERT INTO `canal_test`(`体温`, `身高`, `体重`, `文章`, `日期`) VALUES ('35.7', '1.70', '160', '2', '2021-06-08');
INSERT INTO `canal_test`(`体温`, `身高`, `体重`, `文章`, `日期`) VALUES ('36.3', '1.80', '131.4', '9', '2021-06-09');
INSERT INTO `canal_test`(`体温`, `身高`, `体重`, `文章`, `日期`) VALUES ('37.3', '1.70', '98.8', '4', '2021-06-10');
INSERT INTO `canal_test`(`体温`, `身高`, `体重`, `文章`, `日期`) VALUES ('37.3', '1.70', '65.8', '4', '2021-06-10');

11.上述内容都准备完后可以启动RocketMQ和canal

RocketMQ windos启动命令:
1.启动rocketmq
start mqnamesrv.cmd
2.启动brocker
start mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnable=true

canal启动比较简单,windows下找到解压文文件中的bin/startup.bat 即可启动

12 修改数据库中的数据然后查MQ消息队列中的消息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值