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