如何用钨设置异构复制?

时间:2011-11-14 11:10:14

标签: mysql oracle replication tungsten-replicator

最近我正致力于使用Tungsten Replicator在异构dbs之间进行复制。我们有一个mysql master和一个oracle slave。根据文档,这样的设置应该工作。我正在使用钨复制器-2.0.5。我打电话给

$TUNGSTEN_HOME/tools/configure \
    --verbose \
    --home-directory=$INSTALL_HOME \
    --cluster-hosts=$MA_HOST,$SL_HOST \
主节点上的

,用于在两个节点上创建基本安装。注意:由于安装程序异构,使用安装程序(按照建议)失败,因为安装程序无法在从属节点上找到mysql实例。通过将static- $ SERVICENAME.properties添加到conf目录并修改conf / services.properties(replicator.host = $ HOSTNAME,replicator.masterListenPortStart = 12112,replicator.rmi_port = 20000)来配置复制器实例。

由于SQL语句中缺少'timestamp'关键字,因此在钨模式中针对trep_commit_seqno发出更新语句时,启动复制器会导致ORA-01850。为了超越此错误,我将update_timestamp和extract_timestamp的数据类型更改为varchar。复制器现在启动了一些简单的插入,其中复制但是当测试脚本发出

DROP TABLE IF EXISTS table1;
由于ORF-00933,

复制失败,因为'IF EXISTS'子句。我不确定这是否是我的配置中的错误,或者钨通常是否存在这两种产品之间DDL语句差异的问题。是否有人使用钨成功建立了类似的复制?

2 个答案:

答案 0 :(得分:2)

Tungsten docuemntation有一些有用的指导。特别是,“操作的高级原则”中的这一点是相关的:“此外,超出最简单的CREATE TABLE表达式的DDL语句很少是可移植的。”在您的情况下,DROP TABLE IF EXISTS table1;无效Oracle DDL。

Read it here

答案 1 :(得分:2)

对于任何感兴趣的人:到目前为止,Tungsten不会在异构环境中对ddl语句进行任何转换(如MithunSasidharan所写)。现在我编写了一个自定义过滤器,它使用正则表达式跳过ddl语句。为了同步模式定义,我们将使用Apache DdlUtils,它非常适合在mysql和oracle之间转换模式定义。我认为它同样适用于其他供应商。谢谢。