Canal数据库同步必备工具 - 怎样搭建集群、对接MySQL以及对接KafKa ...

打印 上一主题 下一主题

主题 837|帖子 837|积分 2521

Canal 根本使用

   功能:主要用于数据库同步。
  保举参考官方:
  

  • 本地 安装:https://github.com/alibaba/canal/wiki/QuickStart 【学习接纳】
  • 基于Docker 安装:https://github.com/alibaba/canal/wiki/Docker-QuickStart
  

1. 准备工作


  • 确保 MySQL 已启用 Binlog :
  1. # 确保你已经在 MySQL 中正确配置并启用了二进制日志(Binlog)。可以通过以下命令检查:
  2. SHOW VARIABLES LIKE 'log_bin';
  3. SHOW VARIABLES LIKE 'binlog_format';
  4. SHOW VARIABLES LIKE 'server_id';
  5. # log_bin: 应为 ON
  6. # binlog_format: 推荐设置为 ROW
  7. # server_id: 必须唯一(对于多实例)
复制代码
  注意:如果MySQL是Docker配置的,可以去对一个的容器卷配置一个 default.cnf :、
  

  • -v /itholmes/mysql/conf:/etc/mysql/conf.d : 在这个下面创建一个 default.cnf ,这样MySQL启动的时间,也会默认加载该配置中的内容。配置内容,如下:
  1. [mysqld]
  2. log-bin=mysql-bin # 开启 binlog
  3. binlog-format=ROW # 选择 ROW 模式
  4. server_id=1 # 配置 MySQL replaction 需要定义,不要和 canal 的 slaveId 重复
  5. bind-address = 0.0.0.0
复制代码

  • 创建 Canal 用户并授予权限:


  • Canal 必要一个专用的 MySQL 用户,而且必要对数据库的 Replication 权限。
  1. CREATE USER canal IDENTIFIED BY 'canal';
  2. GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
  3. -- GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ;
  4. FLUSH PRIVILEGES;
复制代码
2. 下载安装部署 Canal

  1. # 下载 canal, 访问 release 页面 , 选择需要的包下载, 如以 1.1.7 版本为例
  2. wget https://github.com/alibaba/canal/releases/download/canal-1.1.7/canal.deployer-1.1.7.tar.gz
  3. wget https://github.com/alibaba/canal/releases/download/canal-1.1.7/canal.admin-1.1.7.tar.gz
  4. # wget https://github.com/alibaba/canal/releases/download/canal-1.1.7/canal.adapter-1.1.7.tar.gz
  5. # 创建本地 canal目录
  6. mkdir /usr/local/canal
  7. # 解压缩
  8. 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


  • 解压 canal admin
  1. tar -zxvf canal.admin-1.1.7.tar.gz -C canal_admin
复制代码

  • 修改配置文件
  1. vim application.yml
复制代码


  • 初始化 admin_manager 数据库:(在 conf 目次【 /opt/canal/canal_admin/conf】下面 :有个 admin_manager )
  1. mysql -uroot -p -h数据库的ip
  2. # 导入初始化SQL
  3. source conf/canal_manager.sql
复制代码

  • 进入 bin 目次下,启动 canal admin 服务
  1. ./startup.sh
复制代码

  • 访问 http://center-server:8089/ ,查看 UI 页面。


  • 默认,管理员账号为:admin / 123456
4. 配置 Canal Admin


  • 新建集群。


  • 必要 zookeeper 地点。


  • 修改主配置:


  • canal.properties 载入模板:

模板配置,修改如下:
  1. # IP为admin服务地址
  2. canal.admin.manager = center-server:8089
  3. # zookeeper配置,集群用逗号隔开,不部署canal集群可以省略
  4. canal.zkServers = center-server:2181
  5. # 发送方式 tcp, kafka, rocketMQ, rabbitMQ
  6. canal.serverMode = kafka
  7. # kafka配置,集群用逗号隔开
  8. kafka.bootstrap.servers = center-server:9092
复制代码
保存即可。
5. 部署 Canal Deploy 服务


  • 安装 Canal Deploy 服务
  1. tar -zxvf canal.deployer-1.1.7.tar.gz -C canal_deploy
复制代码

  • 修改 canal_local.properties 配置:
  1. vim canal_local.properties
复制代码


  • 进入 bin 目次,进行启动:
  1. ./startup.sh
  2. local
复制代码

  • 管理页面就应该多了个 Server 服务。

6. 配置 监控实例 (instance)


  • 新建 instance 实例。


  • 载入模板:

修改配置如下:
  1. #作为数据库slave的id,单独部署canal.deployer一定不要重复,通过admin配置方式好像不用
  2. canal.instance.mysql.slaveId=1235
  3. #数据库地址
  4. canal.instance.master.address=center-server:3306
  5. # username/password
  6. canal.instance.dbUsername=canal
  7. canal.instance.dbPassword=canal
  8. # table regex监听的表名,这个配置比较重要。此配置的意思是监听testcanal库下的stu表,topic为 testcanal_stu。
  9. canal.instance.filter.regex=testcanal\\.stu
  10. # mq 默认 发送的topic名字 ,如果固定topic,就配置到这个就好,不用配置下面的动态
  11. canal.mq.topic=example
  12. # 如需动态topic则配置dynamicTopic
  13. canal.mq.dynamicTopic=.*\\..*
  14. # canal.mq.partition表示数据写到kafka中哪个分片中,此时数据量不大 是只放到0分区里
  15. canal.mq.partition=0
  16. #如果数据量大则需要配置分区数与 表名hash计算分区。官方说:会有热点表分区过大问题
  17. #canal.mq.partitionsNum=3
  18. #canal.mq.partitionHash=.*\\..*
复制代码
7. 搭建 KafKa 和 Kafdrop

见:Github - xupengboo - Docker单节点运维部署命令.md
   学习为主,保举,官方部署 kafka:https://kafka.apache.org/quickstart

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

来自云龙湖轮廓分明的月亮

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表