Canal 根本使用
功能:主要用于数据库同步。
保举参考官方:
- 本地 安装:https://github.com/alibaba/canal/wiki/QuickStart 【学习接纳】
- 基于Docker 安装:https://github.com/alibaba/canal/wiki/Docker-QuickStart
1. 准备工作
- # 确保你已经在 MySQL 中正确配置并启用了二进制日志(Binlog)。可以通过以下命令检查:
- SHOW VARIABLES LIKE 'log_bin';
- SHOW VARIABLES LIKE 'binlog_format';
- SHOW VARIABLES LIKE 'server_id';
- # log_bin: 应为 ON
- # binlog_format: 推荐设置为 ROW
- # server_id: 必须唯一(对于多实例)
复制代码 注意:如果MySQL是Docker配置的,可以去对一个的容器卷配置一个 default.cnf :、
- -v /itholmes/mysql/conf:/etc/mysql/conf.d : 在这个下面创建一个 default.cnf ,这样MySQL启动的时间,也会默认加载该配置中的内容。配置内容,如下:
- [mysqld]
- log-bin=mysql-bin # 开启 binlog
- binlog-format=ROW # 选择 ROW 模式
- server_id=1 # 配置 MySQL replaction 需要定义,不要和 canal 的 slaveId 重复
- bind-address = 0.0.0.0
复制代码
- Canal 必要一个专用的 MySQL 用户,而且必要对数据库的 Replication 权限。
- CREATE USER canal IDENTIFIED BY 'canal';
- GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
- -- GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ;
- FLUSH PRIVILEGES;
复制代码 2. 下载安装部署 Canal
- # 下载 canal, 访问 release 页面 , 选择需要的包下载, 如以 1.1.7 版本为例
- wget https://github.com/alibaba/canal/releases/download/canal-1.1.7/canal.deployer-1.1.7.tar.gz
- wget https://github.com/alibaba/canal/releases/download/canal-1.1.7/canal.admin-1.1.7.tar.gz
- # wget https://github.com/alibaba/canal/releases/download/canal-1.1.7/canal.adapter-1.1.7.tar.gz
- # 创建本地 canal目录
- mkdir /usr/local/canal
- # 解压缩
- tar -zxvf canal.deployer-1.1.7.tar.gz -C /usr/local/canal
复制代码 文件名功能主要作用实用场景canal.adapter-1.1.7数据同步适配器同步增量数据到目标存储系统。数据集成(如 MySQL → Elasticsearch)。canal.admin-1.1.7管理与监控平台管理和监控 Canal Server 和 Adapter。集中化管理多个 Canal 实例。canal.deployer-1.1.7焦点折务模块捕捉 MySQL 的 binlog 增量数据。CDC 系统的基础模块。canal.example-1.1.7示例与模板快速上手与验证配置。测试和学习使用。 选择组件时,可以根据实际需求:
- 仅做数据捕捉:只必要 canal.deployer。
- 必要同步到目标系统:必要 canal.deployer + canal.adapter。
- 必要管理和监控:增长 canal.admin。
3. 安装 Canal Admin UI
- tar -zxvf canal.admin-1.1.7.tar.gz -C canal_admin
复制代码
- 初始化 admin_manager 数据库:(在 conf 目次【 /opt/canal/canal_admin/conf】下面 :有个 admin_manager )
- mysql -uroot -p -h数据库的ip
- # 导入初始化SQL
- source conf/canal_manager.sql
复制代码
- 进入 bin 目次下,启动 canal admin 服务
- 访问 http://center-server:8089/ ,查看 UI 页面。
4. 配置 Canal Admin
模板配置,修改如下:
- # IP为admin服务地址
- canal.admin.manager = center-server:8089
- # zookeeper配置,集群用逗号隔开,不部署canal集群可以省略
- canal.zkServers = center-server:2181
- # 发送方式 tcp, kafka, rocketMQ, rabbitMQ
- canal.serverMode = kafka
- # kafka配置,集群用逗号隔开
- kafka.bootstrap.servers = center-server:9092
复制代码 保存即可。
5. 部署 Canal Deploy 服务
- tar -zxvf canal.deployer-1.1.7.tar.gz -C canal_deploy
复制代码
- 修改 canal_local.properties 配置:
- vim canal_local.properties
复制代码
6. 配置 监控实例 (instance)
修改配置如下:
- #作为数据库slave的id,单独部署canal.deployer一定不要重复,通过admin配置方式好像不用
- canal.instance.mysql.slaveId=1235
- #数据库地址
- canal.instance.master.address=center-server:3306
- # username/password
- canal.instance.dbUsername=canal
- canal.instance.dbPassword=canal
- # table regex监听的表名,这个配置比较重要。此配置的意思是监听testcanal库下的stu表,topic为 testcanal_stu。
- canal.instance.filter.regex=testcanal\\.stu
- # mq 默认 发送的topic名字 ,如果固定topic,就配置到这个就好,不用配置下面的动态
- canal.mq.topic=example
- # 如需动态topic则配置dynamicTopic
- canal.mq.dynamicTopic=.*\\..*
- # canal.mq.partition表示数据写到kafka中哪个分片中,此时数据量不大 是只放到0分区里
- canal.mq.partition=0
- #如果数据量大则需要配置分区数与 表名hash计算分区。官方说:会有热点表分区过大问题
- #canal.mq.partitionsNum=3
- #canal.mq.partitionHash=.*\\..*
复制代码 7. 搭建 KafKa 和 Kafdrop
见:Github - xupengboo - Docker单节点运维部署命令.md
学习为主,保举,官方部署 kafka:https://kafka.apache.org/quickstart
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |