標籤:
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.rpmrpm -Uvh rpmforge-release-0.5.2-2.el5.rf.x86_64.rpmyum -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://去掉就可以了
需要的軟體及指令碼下載:
http://pan.baidu.com/s/1o6s14Ie
Canal & Otter 的一些注意事項和最佳實務