對于自建 MySQL , 需要先開啟 Binlog 寫入功能,配置 binlog-format 為 ROW 模式,開啟Mysql binlog日志步驟如下:
[root@node2 ~]# mysql -u root -p123456mysql> show variables like "log_%";
在/etc/my.cnf文件中[mysqld]下寫入以下內容:
(相關資料圖)
[mysqld]# 隨機指定一個不能和其他集群中機器重名的字符串,配置 MySQL replaction 需要定#義,不要和 canal 的 slaveId 重復server-id=123 #配置binlog日志目錄,配置后會自動開啟binlog日志,并寫入該目錄log-bin=/var/lib/mysql/mysql-bin# 選擇 ROW 模式binlog-format=ROW
MySQL binlog-format有三種模式:Row、Statement 和 Mixed 。
Row:不記錄sql語句上下文相關信息,僅保存哪條記錄被修改。優(yōu)點: binlog中可以不記錄執(zhí)行的sql語句的上下文相關的信息,僅需要記錄那一條記錄被修改成什么了。所以row level的日志內容會非常清楚的記錄下每一行數(shù)據(jù)修改的細節(jié)。
缺點:所有的執(zhí)行的語句當記錄到日志中的時候,都將以每行記錄的修改來記錄,這樣可能會產生大量的日志內容,比如一條update語句,修改多條記錄,則binlog中每一條修改都會有記錄,這樣造成binlog日志量會很大,特別是當執(zhí)行alter table之類的語句的時候,由于表結構修改,每條記錄都發(fā)生改變,那么該表每一條記錄都會記錄到日志中。
Statement(默認):每一條會修改數(shù)據(jù)的sql都會記錄在binlog中。這種模式下,slave在復制的時候sql進程會解析成和原來master端執(zhí)行過的相同的sql來再次執(zhí)行。
優(yōu)點:不需要記錄每一行的變化,減少了binlog日志量,節(jié)約了IO,提高性能。
缺點:由于只記錄語句,所以,在statement level下 已經發(fā)現(xiàn)了有不少情況會造成MySQL的復制出現(xiàn)問題,主要是修改數(shù)據(jù)的時候使用了某些定的函數(shù)或者功能的時候會出現(xiàn)。 例如:update 語句中含有uuid() ,now() 這種函數(shù)時,Statement模式就會有問題(update t1 set xx = now() where xx = xx)
Mixed: 混合模式在Mixed模式下,MySQL會根據(jù)執(zhí)行的每一條具體的sql語句來區(qū)分對待記錄的日志格式,也就是在Statement和Row之間選擇一種。如果sql語句確實就是update或者delete等修改數(shù)據(jù)的語句,那么還是會記錄所有行的變更。
[root@node2 ~]# service mysql restart[root@node2 ~]# mysql -u root -p123456mysql> show variables like "log_%";
Cannal下載地址如下:Releases · alibaba/canal · GitHub
這里選擇Canal 1.1.4版本下載。
將下載好的Canal安裝包上傳到node3節(jié)點上,解壓
#首先創(chuàng)建目錄 “/software/canal”[root@node3 ~]# mkdir -p /software/canal#將Canal安裝包解壓到創(chuàng)建的canal目錄中[root@node3 ~]# tar -zxvf /software/canal.deployer-1.1.4.tar.gz -C /software/canal/
關鍵詞:
質檢
推薦