【商城】canal数据库数据实时同步利器

本文详细介绍了Canal的配置与使用,包括配置canal.properties和instance.properties文件,设置数据库连接和权限,以及启动和验证Canal的正确运行。此外,还提供了问题处理的建议,如遇到连接错误,可通过停止应用和Canal,清理Zookeeper数据,然后重启服务。
摘要由CSDN通过智能技术生成

此处将以Alibaba canal([https://github.com/alibaba/canal])为例,说明Canal的使用,Canal作为数据库数据异步实时同步利器,为分库分表条件下数据一致性维护启到重要作用。

流程图

Canal实时异步处理
Canal可以实时异步监听多Master数据库数据变化,并异步将数据同步到给其他应用,这些应用不仅可以使ES集群,也可以是其他相关应用。

配置

以canal 1.1.4版本为例,支持mysql最新版本8.x,解压后分别配置如下

配置canal.properties文件:

(1)canal.zkServers 配置zookeeper集群地址;
(2)canal.ip配置为本机的host实际IP地址;
(3)canal.register.ip配置为本机的host实际IP地址;
(4)canal.destinations配置为数据库分片数,可以通过拷贝其中source目录进行类似配置:

  • 执行命令 cp -r source sharding1
  • canal.destinations=source,sharding1,sharding2,shardingn

(5)网络配置

  • canal.instance.network.receiveBufferSize=65536
  • canal.instance.network.sendBufferSize=65536

(6)配置集群支持

  • canal.instance.global.sprint.xml=casspath:spring/default-instance.xml 其他注释掉

配置intance.properties文件:

分别进入source,sharding1,sharding2文件目录,找到旗下此文件,以下以source文件为例:

  • canal.instance.master.address=master1:3306
  • canal.instance.dbUsername=canal
  • canal.instance.dbPassword=canal

进入sharding1目录,是种配置master的slave权限,配置如下,其他类似:

  • canal.instance.master.address=master2:3306
  • canal.instance.dbUsername=canal
  • canal.instance.dbPassword=canal

注意,配置时候需要提前在master数据库,需创建一个具有slave权限的canal用户,并设置相应的密码canal,如下通过canal账户登录mysql验证是否授slave权限;

  • canal账户已授权
mysql>show grants for canal;
+----------------------------------------------------------------------------------+
| Grants for canal@%                                                               |
+----------------------------------------------------------------------------------+
| GRANT SELECT,REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO `canal`@`%`          |
+----------------------------------------------------------------------------------+
1 row in set (0.00 sec)
  • canal账户未授权
mysql>show grants for canal;
+-----------------------------------------------------------------------------------+
| Grants for canal@%                                                                |
+-----------------------------------------------------------------------------------+
| GRANT RELOAD,PROCESS,FILE,SHOW DATABASES,REPLICATION CLIENT ON *.* TO `canal`@`%` |
| GRANT ALL PRIVILEGES ON `db_name` TO `canal`@`%` WITH GRANT OPTION                |
+-----------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

启动

进入bin目录执行命令,可以在命令里面修改JVM参数。
./startup.sh

验证

使用canal用户或所有权用户登录到master数据库,执行命令
show processlist
如果能够正常常看到Dump进程(command部分),则说明配置成功。

mysql>show processlist;
+----------------------------------------------------------------------------------------------------------------------------------+
| Id   | User  | Host            | db   | command     | Time     | State                                                     | Info|
+----------------------------------------------------------------------------------------------------------------------------------+
| 128x | canal | 192.168..:15752 | NULL | Binlog Dump | 20210123 | Master has send binlog to slave;waiting for more updates | NULL |
+----------------------------------------------------------------------------------------------------------------------------------+

问题处理

如果发现canal和应用之间连接报错等问题,可以采取以下步骤进行处理。
(1)停止连接canal的应用,停止canal中间件;
(2)通过zkCli.sh进入zookeeper控制台,删除deleteall /otter
(3) 重启canal中间件,重启应用服务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Moutai码哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值