Canal & Otter 的一些注意事項和最佳實踐

1,canal和otter由於是java開發的,運行在windows和linux上都可以

2,爲了使用otter必須要canal的支持,otter作爲canal的消費方,當然也可以單獨使用canal,如果你有消費mysql binlog的需求

3,canal有幾種運行方式,生產環境中推薦使用zookeeper的持久化方式,對應的spring配置文件爲:default-instance.xml

4,運行otter需要aria2的支持,windows和linux都有對應的版本

centos5,安裝aria2的解決辦法:

wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
rpm -Uvh rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
yum -y install aria2

5,canal在otter中只支持嵌入的方式,通過管理界面配置就好,不需要再手動控制canal,canal是通過線程的方式運行在node節點

6,canal用的zookeeper和node-manager用的zookeeper可以用同一個,數據不會衝突,但是至少要3臺機器做集羣來HA,也可以利用zookeeper的observer特性構成讀鏡像來提升性能

7,otter只支持ROW模式的數據同步,其他兩種模式不支持

8,源庫只支持mysql,目標庫支持mysql和oracle

9,同步的表必須要有主鍵,無主鍵表update會是一個全表掃描,效率比較差),就是全字段匹配,如果出現重複記錄的話,同步會導致數據錯亂

10,支持部分ddl同步  (支持create table / drop table / alter table / truncate table / rename table / create index / drop index,其他類型的暫不支持,比如grant,create user,trigger等等),同時ddl語句不支持冪等性操作,所以出現重複同步時,會導致同步掛起,可通過配置高級參數:跳過ddl異常,來解決這個問題.  

11,不支持帶外鍵的記錄同步.  (數據載入算法會打算事務,進行並行處理,會導致外鍵約束無法滿足)

12,數據庫上trigger配置慎重.  (比如源庫,有一張A表配置了trigger,將A表上的變化記錄到B表中,而B表也需要同步。如果目標庫也有這trigger,在同步時會插入一次A表,2次B表,因爲A表的同步插入也會觸發trigger插入一次B表,所以有2次B表同步.)

13,2個manager,可以部署2個manager,manager之間本身沒有通信,而是通過zk和數據庫,配置node的時候需要知道manager,可以指定其中一個即可,數據會反應到數據庫和zk中,但是當這個manager掛了,新配置的node信息就不能反饋到另外一個manager上,所以最佳實踐是指定所有的manage

14,https的支持,otter用的是jetty,修改下jetty.xml,改成https的方式就好,同時要修改otter.properties中的otter.domainName參數,誰知道生成的菜單變成了類似https/auto_keeper_clusters_list.htm,由於菜單是公用的,找到navigation.vm,修改url鏈接就好了,然而在登錄的時候又粗線問題了,後臺驗證成功後,跳轉的url連接又不對,後來發現otter用的是webx的框架,找到了uris.xml,找到serverURI節點,把前面的http://去掉就可以了

15,禁止匿名訪問,本來是想通過filter的方式來實現,但是發現session中怎麼也取不到登錄後的信息,發現webx框架自己實現了session,已經無解了,通過查看manager的配置文件發現了webx.xml這個好東西,發現urlAnalyze節點裏配置了權限相關,愉快的解決了

需要的軟件及腳本下載:

http://pan.baidu.com/s/1o6s14Ie



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章