https://github.com/alibaba/otter/wiki
提供了docker镜像,
做此记录时
ortter版本是 4.2.17
canal版本1.1.2
注
canal版本1.1.2 低版本数据库没有binlog_checksum会导致不能同步
参照:https://github.com/alibaba/otter/issues/674
做此记录时新版本的canal还未发布
自己打包的canal主干代码,修改otter的pom.xml解决了
一些使用备忘的记录
1.打包需要安装maven
2.编译时有的jar包在maven库中没有,lib下面有install.sh,可以执行本地安装
注
lib/jtester-1.1.8.pom 中的jmockit版本修改了,好像时为了单元测试,打包时不需要做单元测试,所以需要改回原来的0.999.4,否则maven下载不成功
参照:https://github.com/alibaba/otter/commit/cf4a5c9090fd2af168784a4991f46d6554023c37
3.docker镜像构建脚本 docker/build.sh
4.启动脚本 docker/run.sh
5.默认登陆用户 admin:admin
6.源库需要开启binlog
/etc/my.cnf文件,[mysqld]下追加以下参数
server-id=181211
log_bin=mysql-bin
binlog_format=ROW
expire_logs_days=30
character-set-server=utf8
重启数据库 service mysql restart
7.数据源版本为5.1.73,虽然会正常同步数据,但是频繁出SocketTimeoutException时,
参考:https://github.com/alibaba/otter/issues/677
用数据库自带的定时事件解决可参考以下脚本
CREATE TABLE `otter_connection_keep` ( `id` INT NOT NULL, `update_date` DATETIME NULL, PRIMARY KEY (`id`)); INSERT INTO `otter_connection_keep` (`id`) VALUES ('1'); drop event if exists otter_connection_keep; create event otter_connection_keep on schedule every 20 SECOND do UPDATE otter_connection_keep SET update_date = now() WHERE `id`='1'; SET GLOBAL event_scheduler = 1; -- 开启事件调度器,关闭设0,或修改/etc/my.cnf文件,[mysqld]下追加 event_scheduler=1 show variables like '%event_scheduler%'; show events; -- 查看当前库 select * from mysql.event; -- 查看所有事件,可通过body查看事件内容 show processlist;
8.监控用邮件服务配置在
otter-otter-4.2.17/manager/deployer/src/main/resources/otter.properties
9.docker 启动日志查看
docker logs otter-all