黄东旭解析 TiDB 的核心优势
1181
2023-05-21
Canal实现MySQL数据库实时数据同步
简介
1.1 canal介绍
Canal Server能够解析MySQL binlog并订阅数据更改,而Canal Client可以实现将更改广播到任何地方,例如数据库和Apache Kafka。
它具有以下功能:
支持所有平台。 支持由Prometheus提供支持的细粒度系统监控。 支持通过不同方式解析和订阅MySQL binlog,例如通过GTID。 支持高性能,实时数据同步。(详见Performance) Canal Server和Canal Client都支持HA / Scalability,由Apache ZooKeeper提供支持 Docker支持。
缺点:
不支持全量更新,只支持增量更新。
1.2 运作原理
原理很简单:
Canal模拟MySQL的slave的交互协议,伪装成mysql slave,并将转发协议发送到MySQL Master服务器。 MySQL Master接收到转储请求并开始将二进制日志推送到slave(即canal)。 Canal将二进制日志对象解析为自己的数据类型(原始字节流)
如图所示:
准备工作
2.1 下载解压canal-server
通过 github 下载 canal-server release 版本(本次安装文档使用v1.1.4)
解压
tar -zxvf canal.deployer-1.1.4.tar.gz
2.2 下载解压 canal-adapter
通过 github 下载 canal-adapter release 版本(本次安装文档使用v1.1.4)
解压
tar -zxvf canal.adapter-1.1.4.tar.gz
配置 canal-server
3.1 canal-server 配置
解压之后进入 conf文件夹中,修改 canal.properties 根据实际需要来修改(如果不使用kafka或MQ 默认tcp即可)
canal.destinations = prod # 指定instance的名字多个使用逗号分隔
保存之后在conf目录创建 prod 文件夹并将 example文件夹中的 nstance.properties copy 到and_prod中
mkdir ant_prod #创建文件夹 cp example/nstance.properties prod/ # copy 文件
修改 nstance.properties 配置如下:
canal.instance.master.address=127.0.0.1:3306 # 源Mysql地址 canalcanal.instance.dbUsername=canal # 源Mysql账号 canalcanal.instance.dbPassword=canal # 源Mysql密码 canal.instance.connectionCharset=UTF-8 # 与源数据库编码格式一致 canal.instance.defaultDatabaseName=test_database # 默认监听源数据库
3.2 canal-server 启动
进入 canal-server bin 目录 启动
cd canal-server/bin # 进入目录 ./startup.sh & # 后台启动
查看日志,是否启动成功
cd canal-server/logs/ant_prod #进入日志目录
启动成功:
配置 canal-adapter
4.1 canal-adapter 配置
由于Mysql 是8.0 这里需要下载 mysql-connector-java-8.0.20.jar,并将其放入lib中
cp mysql-connector-java-8.0.20.jar /canal-adapter/lib/
解压之后进入 conf文件夹中,修改 application.yml
编辑rdb目录下面表的映射文件,数据库/表 (多个表创建多个映射文件,文件名对应表名)以此类推
dataSourceKey: defaultDS destination: prod outerAdapterKey: mysql1 concurrent: true dbMapping: database: test_database_01 table: test targetTable: test_database_01.test targetPk: id: id mapAll: true
4.1 canal-adapter 启动
进入 canal-adapter/bin 目录 启动
cd canal-adapter/bin # 进入目录 ./startup.sh & # 后台启动
查看日志,是否启动成功
cd canal-adapter/adapter/logs/ #进入日志目录 tail -f adapter.log # 查看日志是否启动成功
测试数据库同步
更新/删除/批量插入/批量更新/批量删除
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。