mirror of
https://github.com/alibaba/canal.git
synced 2026-11-04 00:30:15 +08:00
fixed rds ak/sk config for manager
This commit is contained in:
@@ -6,7 +6,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.alibaba.otter.canal.meta.FileMixedMetaManager;
|
import org.apache.commons.lang.BooleanUtils;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
@@ -39,7 +39,16 @@ import com.alibaba.otter.canal.parse.inbound.AbstractEventParser;
|
|||||||
import com.alibaba.otter.canal.parse.inbound.group.GroupEventParser;
|
import com.alibaba.otter.canal.parse.inbound.group.GroupEventParser;
|
||||||
import com.alibaba.otter.canal.parse.inbound.mysql.LocalBinlogEventParser;
|
import com.alibaba.otter.canal.parse.inbound.mysql.LocalBinlogEventParser;
|
||||||
import com.alibaba.otter.canal.parse.inbound.mysql.MysqlEventParser;
|
import com.alibaba.otter.canal.parse.inbound.mysql.MysqlEventParser;
|
||||||
import com.alibaba.otter.canal.parse.index.*;
|
import com.alibaba.otter.canal.parse.inbound.mysql.rds.RdsBinlogEventParserProxy;
|
||||||
|
import com.alibaba.otter.canal.parse.inbound.mysql.tsdb.DefaultTableMetaTSDBFactory;
|
||||||
|
import com.alibaba.otter.canal.parse.inbound.mysql.tsdb.TableMetaTSDB;
|
||||||
|
import com.alibaba.otter.canal.parse.inbound.mysql.tsdb.TableMetaTSDBBuilder;
|
||||||
|
import com.alibaba.otter.canal.parse.index.CanalLogPositionManager;
|
||||||
|
import com.alibaba.otter.canal.parse.index.FailbackLogPositionManager;
|
||||||
|
import com.alibaba.otter.canal.parse.index.MemoryLogPositionManager;
|
||||||
|
import com.alibaba.otter.canal.parse.index.MetaLogPositionManager;
|
||||||
|
import com.alibaba.otter.canal.parse.index.PeriodMixedLogPositionManager;
|
||||||
|
import com.alibaba.otter.canal.parse.index.ZooKeeperLogPositionManager;
|
||||||
import com.alibaba.otter.canal.parse.support.AuthenticationInfo;
|
import com.alibaba.otter.canal.parse.support.AuthenticationInfo;
|
||||||
import com.alibaba.otter.canal.protocol.position.EntryPosition;
|
import com.alibaba.otter.canal.protocol.position.EntryPosition;
|
||||||
import com.alibaba.otter.canal.sink.entry.EntryEventSink;
|
import com.alibaba.otter.canal.sink.entry.EntryEventSink;
|
||||||
@@ -229,7 +238,18 @@ public class CanalInstanceWithManager extends AbstractCanalInstance {
|
|||||||
private CanalEventParser doInitEventParser(SourcingType type, List<InetSocketAddress> dbAddresses) {
|
private CanalEventParser doInitEventParser(SourcingType type, List<InetSocketAddress> dbAddresses) {
|
||||||
CanalEventParser eventParser;
|
CanalEventParser eventParser;
|
||||||
if (type.isMysql()) {
|
if (type.isMysql()) {
|
||||||
MysqlEventParser mysqlEventParser = new MysqlEventParser();
|
MysqlEventParser mysqlEventParser = null;
|
||||||
|
if (StringUtils.isNotEmpty(parameters.getRdsAccesskey())
|
||||||
|
&& StringUtils.isNotEmpty(parameters.getRdsSecretkey())
|
||||||
|
&& StringUtils.isNotEmpty(parameters.getRdsInstanceId())) {
|
||||||
|
|
||||||
|
mysqlEventParser = new RdsBinlogEventParserProxy();
|
||||||
|
((RdsBinlogEventParserProxy) mysqlEventParser).setAccesskey(parameters.getRdsAccesskey());
|
||||||
|
((RdsBinlogEventParserProxy) mysqlEventParser).setSecretkey(parameters.getRdsSecretkey());
|
||||||
|
((RdsBinlogEventParserProxy) mysqlEventParser).setInstanceId(parameters.getRdsInstanceId());
|
||||||
|
} else {
|
||||||
|
mysqlEventParser = new MysqlEventParser();
|
||||||
|
}
|
||||||
mysqlEventParser.setDestination(destination);
|
mysqlEventParser.setDestination(destination);
|
||||||
// 编码参数
|
// 编码参数
|
||||||
mysqlEventParser.setConnectionCharset(Charset.forName(parameters.getConnectionCharset()));
|
mysqlEventParser.setConnectionCharset(Charset.forName(parameters.getConnectionCharset()));
|
||||||
@@ -273,6 +293,34 @@ public class CanalInstanceWithManager extends AbstractCanalInstance {
|
|||||||
mysqlEventParser.setFallbackIntervalInSeconds(parameters.getFallbackIntervalInSeconds());
|
mysqlEventParser.setFallbackIntervalInSeconds(parameters.getFallbackIntervalInSeconds());
|
||||||
mysqlEventParser.setProfilingEnabled(false);
|
mysqlEventParser.setProfilingEnabled(false);
|
||||||
mysqlEventParser.setFilterTableError(parameters.getFilterTableError());
|
mysqlEventParser.setFilterTableError(parameters.getFilterTableError());
|
||||||
|
mysqlEventParser.setIsGTIDMode(BooleanUtils.toBoolean(parameters.getGtidEnable()));
|
||||||
|
// tsdb
|
||||||
|
boolean tsdbEnable = BooleanUtils.toBoolean(parameters.getTsdbEnable());
|
||||||
|
if (tsdbEnable) {
|
||||||
|
mysqlEventParser.setEnableTsdb(tsdbEnable);
|
||||||
|
mysqlEventParser.setTableMetaTSDBFactory(new DefaultTableMetaTSDBFactory() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void destory(String destination) {
|
||||||
|
TableMetaTSDBBuilder.destory(destination);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TableMetaTSDB build(String destination, String springXml) {
|
||||||
|
try {
|
||||||
|
System.setProperty("canal.instance.tsdb.url", parameters.getTsdbJdbcUrl());
|
||||||
|
System.setProperty("canal.instance.tsdb.dbUsername", parameters.getTsdbJdbcUserName());
|
||||||
|
System.setProperty("canal.instance.tsdb.dbPassword", parameters.getTsdbJdbcPassword());
|
||||||
|
|
||||||
|
return TableMetaTSDBBuilder.build(destination, "classpath:spring/tsdb/mysql-tsdb.xml");
|
||||||
|
} finally {
|
||||||
|
System.setProperty("canal.instance.tsdb.url", "");
|
||||||
|
System.setProperty("canal.instance.tsdb.dbUsername", "");
|
||||||
|
System.setProperty("canal.instance.tsdb.dbPassword", "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
eventParser = mysqlEventParser;
|
eventParser = mysqlEventParser;
|
||||||
} else if (type.isLocalBinlog()) {
|
} else if (type.isLocalBinlog()) {
|
||||||
LocalBinlogEventParser localBinlogEventParser = new LocalBinlogEventParser();
|
LocalBinlogEventParser localBinlogEventParser = new LocalBinlogEventParser();
|
||||||
@@ -291,8 +339,8 @@ public class CanalInstanceWithManager extends AbstractCanalInstance {
|
|||||||
parameters.getDbUsername(),
|
parameters.getDbUsername(),
|
||||||
parameters.getDbPassword(),
|
parameters.getDbPassword(),
|
||||||
parameters.getDefaultDatabaseName()));
|
parameters.getDefaultDatabaseName()));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
eventParser = localBinlogEventParser;
|
eventParser = localBinlogEventParser;
|
||||||
} else if (type.isOracle()) {
|
} else if (type.isOracle()) {
|
||||||
throw new CanalException("unsupport SourcingType for " + type);
|
throw new CanalException("unsupport SourcingType for " + type);
|
||||||
|
|||||||
@@ -97,6 +97,10 @@ public class CanalParameter implements Serializable {
|
|||||||
private String tsdbJdbcUrl;
|
private String tsdbJdbcUrl;
|
||||||
private String tsdbJdbcUserName;
|
private String tsdbJdbcUserName;
|
||||||
private String tsdbJdbcPassword;
|
private String tsdbJdbcPassword;
|
||||||
|
private String rdsAccesskey;
|
||||||
|
private String rdsSecretkey;
|
||||||
|
private String rdsInstanceId;
|
||||||
|
private Boolean gtidEnable = Boolean.FALSE; // 是否开启gtid
|
||||||
// ================================== 兼容字段处理
|
// ================================== 兼容字段处理
|
||||||
private InetSocketAddress masterAddress; // 主库信息
|
private InetSocketAddress masterAddress; // 主库信息
|
||||||
private String masterUsername; // 帐号
|
private String masterUsername; // 帐号
|
||||||
@@ -919,6 +923,38 @@ public class CanalParameter implements Serializable {
|
|||||||
this.tsdbJdbcPassword = tsdbJdbcPassword;
|
this.tsdbJdbcPassword = tsdbJdbcPassword;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getRdsAccesskey() {
|
||||||
|
return rdsAccesskey;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRdsAccesskey(String rdsAccesskey) {
|
||||||
|
this.rdsAccesskey = rdsAccesskey;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRdsSecretkey() {
|
||||||
|
return rdsSecretkey;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRdsSecretkey(String rdsSecretkey) {
|
||||||
|
this.rdsSecretkey = rdsSecretkey;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRdsInstanceId() {
|
||||||
|
return rdsInstanceId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRdsInstanceId(String rdsInstanceId) {
|
||||||
|
this.rdsInstanceId = rdsInstanceId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Boolean getGtidEnable() {
|
||||||
|
return gtidEnable;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGtidEnable(Boolean gtidEnable) {
|
||||||
|
this.gtidEnable = gtidEnable;
|
||||||
|
}
|
||||||
|
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return ToStringBuilder.reflectionToString(this, CanalToStringStyle.DEFAULT_STYLE);
|
return ToStringBuilder.reflectionToString(this, CanalToStringStyle.DEFAULT_STYLE);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ public class Message implements Serializable {
|
|||||||
} else {
|
} else {
|
||||||
this.entries = entries == null ? new ArrayList<Entry>() : entries;
|
this.entries = entries == null ? new ArrayList<Entry>() : entries;
|
||||||
}
|
}
|
||||||
|
this.raw = raw;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Message(long id){
|
public Message(long id){
|
||||||
|
|||||||
Reference in New Issue
Block a user