【hbz分享】Canal整合Kakfa从0搭建到监听多个mysql server

【hbz分享】Canal整合Kakfa从0搭建到监听多个mysql server

Canal会把自己伪装成从库和mysql做主从同步,Mysql需要开启binlog日志,Canal会监听mysql发生的变化,并把发生变化的类型(INSERT, UPDATE, DELETE),以及对应表名,与变化后得那条数据输入到Kafka中。下面从0开始搭建canal环境,跟着一步一步的走,最终就可以实现监听多个Mysql实例。

第一步:下载Canal

下载地址: https://github.com/alibaba/canal/releases
在这里插入图片描述

下载后解压的文件夹目录如下图所示
在这里插入图片描述

第二步:修改配置文件

进入config文件夹,并打开canal.properties,大部分不用动,需要改如下图这几个地方即可。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
进入example,打开instance.properties配置文件,把下面这段全量替换掉原内容(注意备份一份原内容)

## mysql serverId , v1.0.26+ will autoGen
## v1.0.26版本后会自动生成slaveId,所以可以不用配置
# canal.instance.mysql.slaveId=0

# 数据库地址
canal.instance.master.address=127.0.0.1:3306
# binlog日志名称
canal.instance.master.journal.name=mysql-bin.000008
# mysql主库链接时起始的binlog偏移量
canal.instance.master.position=3431
# mysql主库链接时起始的binlog的时间戳
canal.instance.master.timestamp=
canal.instance.master.gtid=



# username/password
# 在MySQL服务器授权的账号密码
canal.instance.dbUsername=canal
canal.instance.dbPassword=canal
# 字符集
canal.instance.connectionCharset = UTF-8
# enable druid Decrypt database password
canal.instance.enableDruid=false

# table regex .*\\..*表示监听所有表 也可以写具体的表名,用,隔开
# canal.instance.filter.regex=.*\\..*
# canal-test3\.order.*   匹配canal-test3库下,以order开头的表 \是转义字符
# canal-test3.order0     匹配canal-test3库下的order0表
# canal-test3.*          匹配canal-test3库下的所有表
canal.instance.filter.regex=canal.*
# mysql 数据解析表的黑名单,多个表用,隔开
canal.instance.filter.black.regex=
canal.mq.topic=canal-topic
# 分区个数
canal.mq.partitionsNum=1
# 发送到哪个分区的规则
#.*\\..*:id正则匹配,指定所有正则匹配的表对应的hash字段为id
# .*\\..*:$pk$ 正则匹配,指定所有正则匹配的表对应的hash字段为表主键(自动查找)
canal.mq.partitionHash=.*\\..*:id

在这里插入图片描述

第三步:开启Mysql的binlog文件

  1. 创建用户,并配置所有ip可访问
    CREATE USER ‘canal’@’%’ IDENTIFIED WITH mysql_native_password BY ‘canal’;

  2. 赋予该用户权限,ALL=所有权限
    GRANT ALL PRIVILEGES ON . TO ‘canal’@’%’

  3. 进入my.cnf文件。(docker部署的mysql进入容器后,cd etc/mysql 即可到达my,cnf路径下,然后vim my.cnf即可)
    在my.cnf的[mysqld]下添加

log-bin = mysql-bin
binlog-format = ROW
server_id = 1

添加后的样子
在这里插入图片描述
4. 然后重启mysql容器即可

至此,canal监听单个mysql server完毕。

第四步:启动canal

window启动:
在这里插入图片描述
linux启动:
把整个下载下来的canal.deployer-1.1.5放到linux目录,然后进入到bin目录下
输入 【./startup.sh】
在这里插入图片描述

第五步: 效果演示

  1. 启动canal
    在这里插入图片描述
  2. 启动kafka消费者
    在这里插入图片描述
  3. 修改被监听的mysql下的某条记录
    在这里插入图片描述
  4. 看一下kafka消费者的变化
    在这里插入图片描述
    注意:修改完配置文件,要把example文件夹下的meta.dat删除

第六步:如何配置多个实例,监听多个mysql server

  1. 进入conf文件夹,把example多复制几个,改成不同的名
    在这里插入图片描述
  2. 进入到canal.properties配置文件中
    在这里插入图片描述
    每个example配置各自的mysql和kafka的topic即可,当然也可以使用同一个mysql server 和 kafka, 这个看个人

第七步:springboot整合canal

下面这个博主写的不错,可以看下如何通过springboot整合
转载:https://blog.csdn.net/yehongzhi1994/article/details/107880162.

猜你喜欢

转载自blog.csdn.net/a645293829/article/details/122296042