otter数据库同步工具

阅读更多
阿里 数据库同步工具
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


你可能感兴趣的:(otter数据库同步工具)