canal基础

介绍

原理如下图所示: canal原理.png

基本概念

binlog

binlog是mysql的一种二进制日志文件,用来记录数据的变化。

binlog应用场景

  • 读写分离
  • 数据恢复
  • 数据最终一致性
  • 增量索引
  • 可靠消息
  • 缓存一致性
  • 异地多活

binlog模式

binlog模式 说明
Statement模式 binlog中记录的就是我们执行的SQL
Row模式 binlog记录的是每一行记录的每个字段变化前后得到值

MySQL中查看binlog文件

1
mysql> show binary logs;

MySQL中配置binlog的配置项

配置项 说明
max_binlog_size 用于控制一个binlog文件的大小,默认是1G
expire_logs_days 可以控制binlog文件保留天数,默认是0,也就是永久保留
max_binlog_files 用于设置可以保留的binlog文件数量,以便我们更精确的控制binlog文件占用的磁盘空间。
注意:在mysql的percona分支上才有

查看binlog事件

1
mysql> show binlog events in 'mysql-bin.000003';

MySQL主从复制流程

  1. master在每次准备提交事务完成数据更新前,将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log event,简称event)。
  2. slave启动一个I/O线程来读取主库上binary log中的事件,并记录到slave自己的中继日志(relay log)中。
  3. slave还会起动一个SQL线程,该线程从relay log中读取事件并在备库执行,从而实现备库数据的更新。

常见问题

架构图

基本使用

canal基本使用.png
canal基本使用.png

多业务场景

canal多业务场景.png
canal多业务场景.png

运维

安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$ cd /usr/local
$ wget https://github.com/alibaba/canal/releases/download/canal-1.1.3/canal.deployer-1.1.3.tar.gz
$ tar zxvf canal-1.1.3/canal.deployer-1.1.3.tar.gz
$ ln -s canal-1.1.3/canal.deployer-1.1.3 canal
$ cd canal
$ vi conf/example/instance.properties
##### instance.properties内容 #####

###################################
# 启动
sh bin/startup.sh
# 关闭
sh bin/stop.sh
# 查看Server日志
$ more logs/canal/canal.log
# 查看 instance 的日志
$ more logs/example/example.log

Docker QuickStart

参考Docker QuickStart

坚持原创技术分享,您的支持将鼓励我继续创作!
0%