redis通过canal实时缓存mysql数据

环境准备

  1. Zookeeper环境
  2. kafka环境
  3. canal环境
    本次主要介绍canal的环境搭建过程, 以及如何通过kafka对数据进行查看

简介

canal 主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费
基于日志增量订阅和消费的业务包括:

  1. 业务 cache 刷新
  2. 带业务逻辑的增量数据处理
  3. 数据库实时备份

canal工作原理

  1. canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送dump 协议
  2. MySQL master 收到 dump 请求,开始推送 binary log 给 slave (即 canal)
  3. canal 解析 binary log 对象(原始为 byte 流)

Alt
详细了解请移步至官方文档:link
以下进入正题部分:

了解配置

对于我们来说主要关心两个配置

  1. canal/config/canal.properties:
    该配置为canal的通用配置(以下只介绍部分配置)
#################################################
######### 		common argument		#############
#################################################
# tcp bind ip
canal.ip =
# register ip to zookeeper
canal.register.ip =
canal.port = 11111
canal.metrics.pull.port = 11112

#配置Zookeeper地址
canal.zkServers = 192.168.25.10:2181
# flush data to zk
canal.zookeeper.flush.period = 1000
canal.withoutNetty = false
# tcp, kafka, RocketMQ
canal.serverMode = kafka
# flush meta cursor/parse position to file
canal.file.data.dir = ${canal.conf.dir}
canal.file.flush.period = 1000
## memory store RingBuffer size, should be Math.pow(2,n)
canal.instance.memory.buffer.size = 16384
## memory store RingBuffer used memory unit size , default 1kb
canal.instance.memory.buffer.memunit = 1024 
## meory store gets mode used MEMSIZE or ITEMSIZE
canal.instance.memory.batch.mode = MEMSIZE
canal.instance.memory.rawEntry = true
##################################################
######### 		     MQ 		     #############
##################################################
#kafka地址
canal.mq.servers = 192.168.25.10:9092
canal.mq.retries = 0
canal.mq.batchSize = 16384
canal.mq.maxRequestSize = 1048576
canal.mq.lingerMs = 100
canal.mq.bufferMemory = 33554432
canal.mq.canalBatchSize = 50
canal.mq.canalGetTimeout = 100
canal.mq.parallelThreadSize = 8
canal.mq.flatMessage = true
canal.mq.compressionType = none
canal.mq.acks = all
  1. canal/example/instance.properties:
    实例配置(部分配置):
#################################################
## mysql serverId , v1.0.26+ will autoGen
canal.instance.mysql.slaveId=12

# enable gtid use true/false
canal.instance.gtidon=false

# position info
canal.instance.master.address=192.168.25.10:3306
canal.instance.master.journal.name=
canal.instance.master.position=
canal.instance.master.timestamp=
canal.instance.master.gtid=


# 数据库用户名和密码以及指定数据库名
canal.instance.dbUsername=root
canal.instance.dbPassword=123456
canal.instance.defaultDatabaseName=crm
canal.instance.connectionCharset = UTF-8
# enable druid Decrypt database password
#canal.instance.enableDruid=false
#canal.instance.pwdPublicKey=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALK4BUxdDltRRE5/zXpVEVPUgunvscYFtEip3pmLlhrWpacX7y7GCMo2/JM6LeHmiiNdH1FWgGCpUfircSwlWKUCAwEAAQ==

# mq config
canal.mq.topic=example
# dynamic topic route by schema or table regex
#canal.mq.dynamicTopic=mytest1.user,mytest2\\..*,.*\\..*
canal.mq.partition=0
# hash partition config
#canal.mq.partitionsNum=3
#canal.mq.partitionHash=test.table:id^name,.*\\..*
#################################################

启动相关命令

  1. 启动zookeeper
	./bin/zkServer.sh  start
  1. 启动kafka
	./bin/kafka-server-start.sh -daemon config/server.properties
  1. 启动canal
	./bin/startup.sh 

验证结果:
进入kafka的customer客户端:

./bin/kafka-console-consumer.sh --bootstrap-server 192.168.25.10:9092 --topic example --from-beginning

给配置数据库中的表添加相关数据, 则通过客户端可以查看相关信息:
在这里插入图片描述
下篇文章介绍如何消费这些数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值