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

1,canal和otter因爲是java開發的,運行在windows和linux上均可以 java

2,爲了使用otter必需要canal的支持,otter做爲canal的消費方,固然也能夠單獨使用canal,若是你有消費mysql binlog的需求 node

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

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

centos5,安裝aria2的解決辦法: web

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特性構成讀鏡像來提高性能 spring

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

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

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

相關文章
相關標籤/搜索