otter使用的坑
(2020-01-11 17:03:40)
标签:
otter |
分类: 工作学习 |
最近使用otter进行数据同步,碰到如下问题:
在otter上的修改方法如下:
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;
// 处理下DDL操作
if (eventType.isQuery())
{
// 直接忽略query事件
private String value;
return
this.equals(EventType.DINDEX);
}
public
boolean isDdl() {
return isCreate() || isAlter()
|| isErase() || isTruncate() || isRename() || isCindex() ||
isDindex();
}
return isInsert() ||
isUpdate() || isDelete();
}
public
static EventType valuesOf(String value) {
EventType[] eventTypes =
values();
for (EventType eventType :
eventTypes) {
1. 无法同步 alter table reorganize
partition,原因是druid的一个bug,bug的内容和修复方法报告给druid官方了https://github.com/alibaba/druid/issues/3667
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.ast.statement.SQLAlterTableReOrganizePartition;
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");
@@ -128,6 +138,13 @@ public enum EventType {
+ public boolean
isXaCommit() {
+
return this.equals(EventType.XACOMMIT);
+ }
+ public boolean
isXaRollBack() {
+
return this.equals(EventType.XAROLLBACK);
+ }
+
@@ -136,6 +153,10 @@ public enum EventType {
+ public boolean
isXaHandle() {
+
return isXaCommit() || isXaRollBack();
+ }
+
3. 对于分区表,可能不同步,需要添加可执行注释 /% 50055 ...
转载请注明转自高孝鑫的博客!
前一篇:5.7版本MGR生产使用注意事项
后一篇:MySQL代码编译