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

相关文章
相关标签/搜索