【canal1.1.5】mysql8主从数据库实时增量同步

本文详细介绍了MySQL主从复制的工作原理,并重点讲解了开源项目Canal的使用,包括其部署、配置和问题排查。在MySQL中开启binlog,创建Canal用户并授权,然后配置Canal-deployer和Canal-adapter,实现数据的实时同步。在过程中遇到了caching_sha2_password认证失败的问题,通过修改用户认证方式解决。最后,文章提供了测试步骤和可能遇到的问题,确保主从数据库同步的正确性。

简介

阿里巴巴旗下的一款开源项目,纯java开发, 基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了mysql
在这里插入图片描述
mysql主从复制原理:

  1. master将改变记录到二进制日志(binary log)中
  2. slave将master的binary log events拷贝到它的中继日志(relay log)
  3. slave重做中继日志中的事件,将改变反映它自己的数据

canal原理:

  1. canal模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送dump协议
  2. mysql master收到dump请求,开始推送binary log给slave(也就是canal)
  3. canal解析binary log对象(原始为byte流)

准备

  1. mysql主数据库:地址、账密、建表
  2. mysql从数据库:地址、账密、建表
  3. canal-developer下载:服务器,wget https://github.com/alibaba/canal/releases/download/canal-1.1.5/canal.deployer-1.1.5.tar.gz
  4. canal-adapter下载:客户端,wget https://github.com/alibaba/canal/releases/download/canal-1.1.5/canal.adapter-1.1.5.tar.gz

mysql修改

  1. 开启binlog功能,vi /etc/my.cnf增加以下代码
log_bin=mysql-bin
binlog_format=ROW
# 服务编号,与其它节点不冲突就可以
server-id=1
# 每次执行操作都与磁盘进行同步
sync-binlog=1

在这里插入图片描述

  1. 重启mysql,systemctl restart mysqld
  2. 查看是否开启
[root@CompoCloud ~]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 71
Server version: 8.0.23 MySQL Community Server - GPL

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin       | ON    |
+---------------+-------+
1 row in set (0.01 sec)

mysql> show variables like 'binlog_format';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | ROW   |
+---------------+-------+
1 row in set (0.01 sec)
  1. 创建mysql canal用户并授权
mysql> create user canal identified by 'Canal@123';
Query OK, 0 rows affected (1.02 sec)

mysql> grant select, replication slave, replication client on *.* to 'canal'@'%' ;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.02 sec)

注意测试是否该账密是否能成功连接,保证账密无误

canal-deployer安装配置

  1. 解压,tar -zxvf canal.deployer-1.1.5.tar.gz -C /opt/canal/canal-deployer
  2. 修改canal-deployer/canal.properties,去掉canal.instance.parser.parallelBufferSize前的注释

采坑:没有修改此处导致日志报错数据库连接不成功

# parallel parser config
canal.instance.parser.parallel = true
## concurrent thread number, default 60% available processors, suggest not to exceed Runtime.getRuntime().availableProcessors()
canal.instance.parser.parallelThreadSize = 16
## disruptor ringbuffer size, must be power of 2
canal.instance.parser.parallelBufferSize = 256

  1. 修改canal-deployer/conf/example/instance.properties
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值