Canal+Mysql+RocketMq实现数据库表记录信息同步

一  前言:

我们都知道一个系统最重要的是数据,而数据是保存在数据库里,但是很多时候不单止要保存在数据库中,还要同步保存到Elastic Search、HBase、Redis等等,那么我们将如何把数据同步到其他的存储引擎中呢?

传统的同步手段无非是通过业务逻辑中代码的调用,但是这样业务和数据同步功能存在不小的耦合性,所以觉得这种方式不是很优雅,后期扩展性也不是很强,这时突然了解到阿里开源的框架Canal,它可以很方便地同步数据库的增量数据到其他的存储应用

官网提供的示意图:

 二  搭建Mysql服务器

当前的 canal 支持源端 MySQL 版本包括 5.1.x , 5.5.x , 5.6.x , 5.7.x , 8.0.x

1.Mysql安装完成后创建一个用户并赋予权限

eg:

-- 使用命令登录:mysql -u root -p
-- 创建用户 用户名:canal 密码:123456
create user 'canal'@'%' identified by '123456';
-- 授权 *.*表示所有库
grant SELECT, REPLICATION SLAVE, REPLICATION CLIENT on *.* to 'canal'@'%' identified by 'Canal@123456';

2。用户创建完成后更改Mysql配置文件信息(配置文件为my.ini),配置的目的是为了打开binlog模式

[mysqld]
# 打开binlog
log-bin=mysql-bin
# 选择ROW(行)模式
binlog-format=ROW
# 配置MySQL replaction需要定义,不要和canal的slaveId重复
server_id=1

3.配置完成后重启Mysql服务查看binlog模式是否已经开启

show VARIABLES like 'log_bin'

 4.查看binlog日志文件

SHOW BINARY LOGS

至此Mysql安装以及相关配置操作结束

 三 搭建canal

1.安装canal

官网下载页面进行下载:https://github.com/alibaba/canal/releases

我下载的是1.1.4版本

 2.解压文件

 3.配置canal.properties ( 路径:conf//canal.properties

#设置服务模式为RocketMq
canal.serverMode = RocketMQ

#修改默认的读取文件  默认设置为h2-tsdb.xml
canal.instance.tsdb.spring.xml = classpath:spring/tsdb/mysql-tsdb.xml

#配置Mq信息
canal.mq.servers = 127.0.0.1:9876
canal.mq.producerGroup = canal-producer

4.配置instance.properties ( 路径:conf/example/instance.properties

#配置数据库地址
canal.instance.master.address=127.0.0.1:3306

#p配置数据库用户名和登录密码
canal.instance.dbUsername=root
canal.instance.dbPassword=20210219

#指定监听数据库以及匹配规则
canal.instance.defaultDatabaseName = storage 
canal.instance.filter.regex=storage\\..*

#配置Mq topicName
canal.mq.topic=canal-producer

5.配置完成后启动canal服务

这里用的是win10系统,所以在bin目录下找到startup.bat启动:

tips: 启动会报错 解决方法如下:

将红框内容删除即可

 至此canal相关配置结束

四 搭建RocketMQ

1.下载RocketMQ文件  地址:http://rocketmq.apache.org/release_notes/release-notes-4.9.0/

2.解压文件 

3.打开bin目录执行 start mqnamesrv.cmd  命令启动 NAMESERVER

4.继续在bin目录下执行start mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnable=true命令启动BROKER

tips: 启动RocketMQ服务需要Jdk环境变量配置正确,否则将无法正常启动

五 搭建RocketMQ可视化控制台

1.下载RocketMQ控制台文件  地址:https://github.com/apache/rocketmq-externals

2.解压文件

3.进入rocketmq-console

4.进入rocketmq-console的src/main/resources/ 修改application.properties

#配置rocketmq.config.namesrvAddr属性的值,即nameserver的服务地址
rocketmq.config.namesrvAddr=127.0.0.1:9876

5.保存修改后的配置文件,返回rocketmq-console目录

#使用maven打包命令打包
mvn clean package -Dmaven.test.skip=true

tips:打包操作需要Maven环境变量配置正确,否则将打包失败

6.打包完成后进入target目录执行命令

java -jar rocketmq-console-ng-2.0.0.jar

7.运行成功后在浏览器中输入ip:8080即可看到控制台界面

 至此RocketMQ可视化控制台搭建完成

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值