我在配置仅复制特定表的过滤器时遇到问题

时间:2012-01-17 17:16:33

标签: tungsten-replicator

我正在尝试使用过滤器来选择要复制的特定表。 我尝试使用安装程序运行它

./tools/tungsten-installer --master-slave -a \
  ...
  --svc-extractor-filters=replicate \
--property=replicator.filter.replicate.do=test,*.foo"

在master未正确安装后,在trepctl状态下出现此异常:

  

插件类名称属性缺失或为null:key = replicator.filter.replicate

哪个文件是这个属性文件?我怎么找到它?此外,在指定过滤器的设置时,我如何知道要准确放置什么?

我发现我应该根据问题219在配置之前修改配置模板文件,但是我应该在钨复制器-2.0.5-diff中进行哪些更改,以后将修补到提取?

问题254建议如果你想要开箱即用,你可以在钨安装程序中使用这些选项:

-a --property=replicator.filter.Replicate.ignoreFilter=schema_x.tablex,schema_x,tabley,schema_y,tablez
 --svc-thl-filter=Replicate 

但是当我尝试将其用于--property=replicator.filter.replicate.do时,  但问题仍然存在:

  

pendingExceptionMessage:缺少插件类名称属性或null:key = replicator.filter.replicate

非常感谢您的协助。

Rumbi

更新: 你好 我看了看这个文件:/ root / tungsten / tungsten-replicator / samples / conf / filters / default / tableignore.tpl。根据这个样本,a static-SERVICE_NAME.properties文件应该有类似的东西 这个配置,请确认这是否是正确的语法:

replicator.filter.tabledo=com.continuent.tungsten.replicator.filter.JavaScr iptFilter 
replicator.filter.tabledo.script=${replicator.home.dir}/samples/ 
scripts/javascript-advanced/tabledo.js 
replicator.filter.tabledo.tables=foo(database).bar(table) 
replicator.stage.thl-to-dbms.filters=tabledo 

但是,我没有找到tabledo.js(或类似的东西) tableignore.js所在的目录。我可以请你 此文件的位置。如果有另一种指定方式 --property = replicator.filter.replicate.do =不使用测试 这个.js文件,非常欢迎您的建议。

3 个答案:

答案 0 :(得分:1)

下载最新版本的钨复制器。大约一个月前添加了丢失的tpl文件。安装后,应将过滤后的表添加到FILTERS部分下的static-service.properties中。

答案 1 :(得分:0)

  • 在静态 - YOUR_SERVICE_NAME .properties中找到您的复制器配置文件,例如
/opt/continuent/tungsten/tungsten-replicator/conf/static-mysql2vertica.properties

确保设置了各个dbms属性,特别是设置replicator.applier.dbms:

# Batch applier basic configuration information. 
replicator.applier.dbms=com.continuent.tungsten.replicator.applier.batch.SimpleBatchApplier
replicator.applier.dbms.url=jdbc:mysql:thin://${replicator.global.db.host}:${replicator.global.db.port}/tungsten_${service.name}?createDB=true
replicator.applier.dbms.driver=org.drizzle.jdbc.DrizzleDriver
replicator.applier.dbms.user=${replicator.global.db.user}
replicator.applier.dbms.password=${replicator.global.db.password}
replicator.applier.dbms.startupScript=${replicator.home.dir}/samples/scripts/batch/mysql-connect.sql

# Timezone and character set. 
replicator.applier.dbms.timezone=GMT+0:00
replicator.applier.dbms.charset=UTF-8

# Parameters for loading and merging via stage tables. 
replicator.applier.dbms.stageTablePrefix=stage_xxx_
replicator.applier.dbms.stageDirectory=/tmp/staging
replicator.applier.dbms.stageLoadScript=${replicator.home.dir}/samples/scripts/batch/mysql-load.sql
replicator.applier.dbms.stageMergeScript=${replicator.home.dir}/samples/scripts/batch/mysql-merge.sql
replicator.applier.dbms.cleanUpFiles=false

根据您复制的数据库,您可能必须省略/修改某些行。

有关更多信息,请参阅: https://code.google.com/p/tungsten-replicator/wiki/Replicator_Batch_Loading

答案 2 :(得分:-1)

我不知道这个问题是否仍然存在。

我正在使用此版本2.0.6-xxx并使用参数安装服务适合我。 我想指出,因为参数说“--svc-extractor-filters”定义了一个提取器过滤器。这意味着参数将指导主服务器中的数据提取。

如果您打算在奴隶服务上使用它,您应该使用“--svc-applier-filters”。

参数
--svc-extractor-filters = 复制 \
--property = replicator.filter。的复制。做=测试,*。foo“的

应该在属性文件中创建以下内容:

这是过滤器设置。
replicator.filter。的复制 = com.continuent.tungsten.replicator.filter.ReplicateFilter
replicator.filter。的复制 .IGNORE =
replicator.filter。复制 .do = test,*。foo

你也应该能够找到 replicator.stage.binlog到q.filters =复制 参数集。

如果您打算在奴隶中使用此过滤器,请找到以下行:
replicator.stage.q到dbms.filters = mysqlsessions,p键,bidiSlave

并将其更改为
replicator.stage.q到dbms.filters = mysqlsessions,p键,bidiSlave,的复制

希望这个简短的描述对你有所帮助!