加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

otter使用的坑

(2020-01-11 17:03:40)
标签:

otter

分类: 工作学习
最近使用otter进行数据同步,碰到如下问题:
1. 无法同步 alter table reorganize partition,原因是druid的一个bug,bug的内容和修复方法报告给druid官方了https://github.com/alibaba/druid/issues/3667
    在otter上的修改方法如下:
diff --git a/node/etl/src/main/java/com/alibaba/otter/node/etl/common/db/utils/DdlUtils.java b/node/etl/src/main/java/com/alibaba/otter/node/etl/common/db/utils/DdlUtils.java
index 2f9d2e1..35e1fcb 100644
--- a/node/etl/src/main/java/com/alibaba/otter/node/etl/common/db/utils/DdlUtils.java
+++ b/node/etl/src/main/java/com/alibaba/otter/node/etl/common/db/utils/DdlUtils.java
@@ -16,6 +16,7 @@ import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlCreateTableStateme
 import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlRenameTableStatement;
 import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser;
 import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlOutputVisitor;
+import com.alibaba.druid.sql.ast.statement.SQLAlterTableReOrganizePartition;
 
 
         // 处理下DDL操作
         if (eventType.isQuery()) {
             // 直接忽略query事件
diff --git a/shared/etl/src/main/java/com/alibaba/otter/shared/etl/model/EventType.java b/shared/etl/src/main/java/com/alibaba/otter/shared/etl/model/EventType.java
index f62c23d..be10eba 100644
--- a/shared/etl/src/main/java/com/alibaba/otter/shared/etl/model/EventType.java
+++ b/shared/etl/src/main/java/com/alibaba/otter/shared/etl/model/EventType.java
@@ -76,7 +76,17 @@ public enum EventType {
     
  DINDEX("DI");
  DINDEX("DI"),
+
 
  XACOMMIT("XC"),
+
 
  XAROLLBACK("XR");
 
     private String value;
 
@@ -128,6 +138,13 @@ public enum EventType {
         return this.equals(EventType.DINDEX);
     }
 
  public boolean isXaCommit() {
      return this.equals(EventType.XACOMMIT);
  }
  public boolean isXaRollBack() {
      return this.equals(EventType.XAROLLBACK);
  }
+
     public boolean isDdl() {
         return isCreate() || isAlter() || isErase() || isTruncate() || isRename() || isCindex() || isDindex();
     }
@@ -136,6 +153,10 @@ public enum EventType {
         return isInsert() || isUpdate() || isDelete();
     }
 
  public boolean isXaHandle() {
      return isXaCommit() || isXaRollBack();
  }
+
     public static EventType valuesOf(String value) {
         EventType[] eventTypes = values();
         for (EventType eventType : eventTypes) {


3. 对于分区表,可能不同步,需要添加可执行注释 /% 50055 ...

转载请注明转自高孝鑫的博客!

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有