首页 > 系统相关 >Linux 部署: canal (同步mariadb数据发往kafka)

Linux 部署: canal (同步mariadb数据发往kafka)

时间:2023-03-30 15:11:17浏览次数:47  
标签:canal null -- kafka Linux test mariadb

参考文档:https://blog.csdn.net/weixin_55549435/article/details/123309631

目录

1 节点规划

节点 ip deploy
vm1 192.168.122.61 zk + kafka + DB
vm2 192.168.122.62 zk + kafka + canal
vm3 192.168.122.63 zk + kafka

2 部署 mariadb

参考:centos7 安装Mariadb

# 安装
yum install mariadb-server -y

systemctl start mariadb
systemctl enable mariadb

mysql_secure_installation
...

# 配置开启 binlog

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

# 创建 canal 用户
CREATE USER canal IDENTIFIED BY 'canal';  
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
-- GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ;
FLUSH PRIVILEGES;

# 重启
systemctl restart mariadb

# 查看状态
systemctl status mariadb

3 部署 canal

  • 安装软件包
wget https://github.com/alibaba/canal/releases/download/canal-1.1.5/canal.deployer-1.1.5.tar.gz
tar -zxvf canal.deployer-1.1.5.tar.gz -C /usr/local/
  • 预先配置 kafka
# 在任意 kafka 节点
# 创建 topic: local-test
kafka-topics.sh --create --zookeeper vm1:2181,vm2:2181,vm3:2181/kafka --replication-factor 1 --partitions 1 -topic local-test

# 启动 consumer 监控该 topic 状态
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic local-test --from-beginning
  • 配置 canal
cd /usr/local/canal

vi conf/example/instance.properties
# 在最下方输入
"""
canal.instance.master.address = vm1:3306
canal.instance.dbUsername = canal
canal.instance.dbPassword = canal
canal.instance.filter.regex = test.*
"""
vi conf/canal.properties
# 在最下方输入
"""
canal.serverMode = kafka
canal.mq.servers = vm1:9092,vm2:9092,vm3:9092
"""
  • 启动 canal

sh bin/startup.sh

  • 查看 canal 状态

jps 或者 ps -ef | grep canal

4 验证

连接DB,在 test 库中创建表,插入数据,观察 kafka consumer 收到的消息

# 连接数据库
$ mysql

# 打开 test 库
use test

# 创建表
create table test(name varchar(20),age int);

# 插入数据
insert into test value("zhangsan",18);

消息如下:

{"data":null,"database":"test","es":1680157102000,"id":1,"isDdl":true,"mysqlType":null,"old":null,"pkNames":null,"sql":"create table test(name varchar(20),age int)","sqlType":null,"table":"test","ts":1680157102978,"type":"CREATE"}
{"data":[{"name":"zhangsan","age":"18"}],"database":"test","es":1680157209000,"id":2,"isDdl":false,"mysqlType":{"name":"varchar(20)","age":"int"},"old":null,"pkNames":null,"sql":"","sqlType":{"name":12,"age":4},"table":"test","ts":1680157209653,"type":"INSERT"}

附录

官方文档:Canal Kafka RocketMQ QuickStart

标签:canal,null,--,kafka,Linux,test,mariadb
From: https://www.cnblogs.com/dewan/p/17272759.html

相关文章

  • Ubuntu22.04Linux安装手册
    Ubuntu22.04系统ISO镜像下载https://mirrors.aliyun.comLive-server-amd64#服务器isoDesktop-amd64#桌面isoInstallUbuntu22.04使用安装介质启动系统当系统使用......
  • Linux系统下exec函数族简单介绍
    exec()函数的简单介绍exec函数族的作用是根据指定的文件名找到可执行的文件,并用它来取代调用进程的内容,话句话说,就是在调用进程内部执行一个可执行文件。exec函数族的函......
  • linux里 cannot create /www: permission denied
    这个错误信息表明你尝试在根目录下创建一个名为www的目录,但是你没有足够的权限来完成这个操作。在Linux中,根目录(/)拥有系统管理员账户(root)的特殊权限,普通用户默认没有在根......
  • 四个常见的Linux面试问题
    刚毕业要找工作了,只要是你找工作就会有面试这个环节,那么在面试环节中,有哪些注意事项值得我的关注呢?特别是专业技术岗位,这样的岗位询问一般都是在职的工程师,如何在面试环节更......
  • 四个常见的Linux面试问题
    刚毕业要找工作了,只要是你找工作就会有面试这个环节,那么在面试环节中,有哪些注意事项值得我的关注呢?特别是专业技术岗位,这样的岗位询问一般都是在职的工程师,如何在面试环节更......
  • 基于stm32mp157 linux开发板ARM裸机开发教程3:Cortex-A7 架构与工作模式(连载中)
    前言:目前针对ARMCortex-A7裸机开发文档及视频进行了二次升级持续更新中,使其内容更加丰富,讲解更加细致,全文所使用的开发平台均为华清远见FS-MP1A开发板(STM32MP157开发板)针对......
  • Linux命令
    一、Linux目录结构Linux只有一个根目录“/”其他所有文件都在根目录下,文件分层使用‘/’如:在根目录下有个work文件夹,文件夹中有hello.txt文件,则路径表示为:/work/hello.......
  • linux操作--6
    rpm管理rpm是linux中下载包的打包和安装工具,类似于windos下的setup.exerpm-pa(查看系统目前已安装的包)rpm一些常用查询指令rpm-e(卸载rpm包)安装rpm包YUMyum是一......
  • 【性能优化】Linux内存调试工具-pmap
    简介pmap是一款对进程内存占用率进行分析的Linux环境调试工具,他提供了进程的内存映射,可以用于显示一个或多个进程的内存状态。pmap工具使用说明Usage:pmap[options]P......
  • 关于 kafka 的一些经验
    1.kafka高吞吐原因PageCache+顺序写磁盘(读与写)producer请求:Server端的I/O线程统一将请求写到操作系统的PageCache后立即返回,当消息达到一定阈值后,Kafka应......