採集數據框架流程
Canal 使用場景
- 阿里otter中間件的一部分:otter是阿里用於進行異地數據庫之間的同步框架,canal是其中一部分。
- 更新緩存
- 抓取業務數據新增變化表,用於製作拉鍊表。
- 抓取業務表的新增變化數據,用於製作實時統計。
canal工作原理
- Master主庫將改變記錄,寫到二進制日誌(binary log)中
- Slave從庫向mysql master發送dump協議,將master主庫的binary log events拷貝到它的中繼日誌(relay log);
- Slave從庫讀取並重做中繼日誌中的事件,將改變的數據同步到自己的數據庫。
canal的工作原理很簡單,就是把自己僞裝成slave,假裝從master複製數據。
MySQL得binLog
MySQL的二進制日誌可以說是MySQL最重要的日誌了,它記錄了所有的DDL和DML(除了數據查詢語句)語句,以事件形式記錄,還包含語句所執行的消耗的時間,MySQL的二進制日誌是事務安全型的。
一般來說開啓二進制日誌大概會有1%的性能損耗 。二進制有兩個最重要的使用場景:
其一:MySQL Replication在Master端開啓binlog,Mster把它的二進制日誌傳遞給slaves來達到master-slave數據一致的目的。
其二:自然就是數據恢復了,通過使用mysqlbinlog工具來使恢復數據。
二進制日誌包括兩類文件:二進制日誌索引文件(文件名後綴爲.index)用於記錄所有的二進制文件,二進制日誌文件(文件名後綴爲.00000*)記錄數據庫所有的DDL和DML(除了數據查詢語句)語句事件。
binLog分類
mysql binlog的格式,那就是有三種,分別是STATEMENT,MIXED,ROW。
在配置文件中可以選擇配置
binlog_format=row
MySQL準備
在mysql的配置文件(Linux: /etc/my.cnf , Windows: \my.ini)下,修改配置(若是沒有my.cnf,則直接新建文件my.cnf將下面五條語句粘貼進去,或者將/usr/share/mysql下得my-default.cnf改名my.cnf複製到/etc/下然後粘貼下面語句
)
在[mysqld] 區塊
設置/添加
[mysqld]
server-id=1
log-bin=mysql-bin
// 分類爲row
binlog_format=row
// binlog寫入位置
binlog-do-db=gmall1122
準備數據
賦權限
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%' IDENTIFIED BY 'canal' ;
重啓MySQL
Canal解壓安裝
tar -zxvf ./canal.deployer-1.1.4.tar.gz -C /opt/module/canal-1.1.4/
修改canal配置
vim conf/canal.properties
vim conf/example/instance.properties