環(huán)球微速訊:大數(shù)據(jù)Canal(四):Canal HA原理及安裝
Canal HA原理及安裝
一、??????????????Canal HA原理
Canal一般用于實(shí)時(shí)同步數(shù)據(jù)場(chǎng)景,那么對(duì)于實(shí)時(shí)場(chǎng)景HA顯得尤為重要,Canal支持HA搭建,canal的HA分為兩部分,canal server和canal client分別有對(duì)應(yīng)的HA實(shí)現(xiàn)。大數(shù)據(jù)中使用Canal同步數(shù)據(jù)一般同步到Kafka中,這里Kafka相當(dāng)于是Canal Client,Kafka集群自帶HA屬性,所以這里我們只關(guān)注Canal Server HA。Canal Server HA主要是為了減少對(duì)mysql dump的請(qǐng)求,不同server上的instance(不同server上的相同instance)要求同一時(shí)間只能有一個(gè)處于running,其他的處于standby狀態(tài)(standby是instance的狀態(tài)),Canal Server HA原理如下:
Canal HA 保證步驟如下:
【資料圖】
二、??????????????Canal HA 搭建
1、機(jī)器準(zhǔn)備
運(yùn)行Canal的機(jī)器:node3,node4
zookeeper地址:node3:2181,node4:2181,node5:2181
mysql地址:node2:3306
2、在node3,node4上單獨(dú)部署配置Canal
將Canal安裝包上傳到node3,node4,并解壓到“/software/canal”目錄下,修改“/software/canal/conf”下的canal.properties文件,加上zookeeper配置
#指定zookeeper集群地址canal.zkServers = node3:2181,node4:2181,node5:2181#配置spring的xml配置文件canal.instance.global.spring.xml = classpath:spring/default-instance.xml#canal將數(shù)據(jù)寫入Kafka,可配:tcp, kafka, RocketMQ,tcp就是使用canal代碼接收canal.serverMode = kafka#配置canal寫入Kafka地址canal.mq.servers = node1:9092,node2:9092,node3:9092
進(jìn)入“/software/canal/conf/example”目錄,修改“instance.properties”文件:
#另外一臺(tái)機(jī)器改成123457,保證slaveId不重復(fù)即可canal.instance.mysql.slaveId=123456#配置mysql master 節(jié)點(diǎn)及端口canal.instance.master.address=node2:3306#配置連接mysql的用戶名和密碼,就是前面復(fù)制權(quán)限的用戶名和密碼canal.instance.dbUsername=canalcanal.instance.dbPassword=canal#配置Canal將數(shù)據(jù)導(dǎo)入到Kafka topiccanal.mq.topic=canal_topic
注意:兩臺(tái)機(jī)器上的instance目錄的名字需要保證完全一致,HA模式是依賴于instance name進(jìn)行管理,同時(shí)必須都選擇default-instance.xml配置,此配置中才有關(guān)于zookeeper的設(shè)置信息。
3、啟動(dòng)兩臺(tái)機(jī)器的Canal
#在node3上啟動(dòng)Canal[root@node3 ~]# cd /software/canal/bin[root@node3 bin]# ./startup.sh#在node4上啟動(dòng)Canal[root@node4 ~]# cd /software/canal/bin[root@node4 bin]# ./startup.sh
啟動(dòng)完成后,可以查看zookeeper中對(duì)應(yīng)的路徑信息:
三、Canal HA 測(cè)試
默認(rèn)搭建好的Canal HA 后可以通過查看Zookeeper中的“/otter/canal/destinations/examples/running”來查看Active的Canal節(jié)點(diǎn):
測(cè)試Canal HA 如下:
1、向Mysql中“testdb.person”表中寫入數(shù)據(jù)
mysql> insert into person values (4,"s1",21),(5,"s2",22),(6,"s3",23);
可以觀察到Kafka canal_topic中有監(jiān)控到的數(shù)據(jù)如下:
{"data":[{"id":"4","name":"s1","age":"21"},{"id":"5","name":"s2","age":"22"},{"id":"6","name":"s3","age":"23"}],"database":"testdb","es":1618849974000,"id":2,"isDdl":false,"mysqlType":{"id":"int","name":"varchar(255)","age":"int"},"old":null,"pkNames":null,"sql":"","sqlType":{"id":4,"name":12,"age":4},"table":"person","ts":1618849975203,"type":"INSERT"}
2、關(guān)閉active Canal Server節(jié)點(diǎn),繼續(xù)向Mysql表中寫入數(shù)據(jù)
關(guān)閉node3 Canal Server:
[root@node3 ~]# cd /software/canal/bin[root@node3 bin]# ./stop.sh
查看zookeeper “/otter/canal/destinations/examples/running”路徑Active的Canal節(jié)點(diǎn):
繼續(xù)向MySQL中“testdb.person”表中寫入數(shù)據(jù):
mysql> insert into person values (7,"x1",24),(8,"x2",25),(9,"x3",26);
可以觀察寫入到Kafka “canal_topic”中數(shù)據(jù)如下:
{"data":[{"id":"7","name":"x1","age":"24"},{"id":"8","name":"x2","age":"25"},{"id":"9","name":"x3","age":"26"}],"database":"testdb","es":1618850233000,"id":2,"isDdl":false,"mysqlType":{"id":"int","name":"varchar(255)","age":"int"},"old":null,"pkNames":null,"sql":"","sqlType":{"id":4,"name":12,"age":4},"table":"person","ts":1618850234136,"type":"INSERT"}
經(jīng)過以上測(cè)試,Canal HA 生效。
注意:經(jīng)過測(cè)試Canal HA 在使用zookeeper存儲(chǔ)binlog position時(shí),當(dāng)有一個(gè)Canal Server重新啟動(dòng)并切換成Active節(jié)點(diǎn)時(shí),每次都會(huì)重復(fù)讀取最后一條數(shù)據(jù)。使用非HA 本地存儲(chǔ)binlog position時(shí),沒有此問題。
標(biāo)簽:
- 01 全球觀點(diǎn):企穩(wěn)回升!一組數(shù)字了解1—2月國(guó)民經(jīng)濟(jì)運(yùn)行情況
- 02 特斯拉將終止與比亞迪的合作?雙方均回應(yīng)消息不實(shí),但還引猜想
- 03 天天微動(dòng)態(tài)丨殺瘋的汽車圈 雪佛蘭全國(guó)范圍補(bǔ)貼7萬 奔馳降11萬來蹭熱度?
- 04 【聚看點(diǎn)】燃油車集體“大甩賣”,是誰(shuí)讓合資車走下了“高臺(tái)”?
- 05 每日速看!【韓系動(dòng)向920】起亞EV9量產(chǎn)車公開,純電時(shí)代,誰(shuí)說起亞不行了!
- 06 每日熱門:大眾汽車集團(tuán)取得穩(wěn)健財(cái)務(wù)表現(xiàn)為關(guān)鍵市場(chǎng)盈利增長(zhǎng)奠定堅(jiān)實(shí)基礎(chǔ)
- 07 2月僅售117臺(tái),標(biāo)致508L為何賣不動(dòng),或許是這4點(diǎn)原因
- 08 解讀長(zhǎng)安CS75 PLUS智電iDD,設(shè)計(jì)張揚(yáng),帶“電”打動(dòng)消費(fèi)者?
- 09 工人日?qǐng)?bào)e網(wǎng)評(píng)|“迷藥”潛伏于電商平臺(tái),嚇人一身冷汗
- 010 每日精選:預(yù)計(jì)二季度上市,吉利銀河L7開啟搶先預(yù)訂