451


Tungsten
Replicatorで、OracleデータベースからMySQLデータベースにデータを流し込もうとしています。各種初期化は終わり、[ドキュメントにあるParallel
extractorを使う方法](http://docs.continuent.com/tungsten-replicator-3.0/deployment-
oracle-provision.html)で既にOracle側にあるデータをMySQLに入れようとしているところです。

ところが、エラーで途中で止まってしまいます。幸いオープンソースなのでログを仕込んでみたところ、CDCで変更を記録するためのテーブルのデータも抽出しようとしているらしいことがわかりました。

`java.sql.Types.VARBINARY` という型 (-3) の `SOURCE_COLMAP$` という名前のカラムを処理しようとしている:

> 2014-12-08 14:59:37,077 [cookbook - prov-q-to-thl-0] WARN
> thl.serializer.ProtobufSerializer Unimplemented type -3 for SOURCE_COLMAP$

テーブルは `MYSCHEMA.CT_USER`:

> 2014-12-08 14:59:37,428 [cookbook - prov-q-to-thl-0] ERROR
> thl.serializer.ProtobufSerializer Failure while storing MYSCHEMA_PUB.CT_USER

どうすればCDC用テーブルは無視するように設定できるでしょうか。

バージョン: Tungsten Replicator 3.0.0-524


CC BY-SA 3.0
2014-12-08T06:37:15.490
446
2014-12-08T08:07:44.853
2014-12-08T08:07:44.853
30
30
question
tungsten-replicator oracle-cdc
Parallel extractorがCDC用のテーブルも抽出しようとしてしまう


その後ソースコードを眺めていたら、抽出用の設定ファイルを指定できるようになっていることに気付きました。

[code]

    スキーマ名,テーブル名,一度に抽出する行数
    
[/code]

という形式でchunks.csvなどに保存してレプリケーターから読める場所に置き、

[code]

    ./tools/tpm update service_name \
        --property=replicator.extractor.parallel-extractor.ChunkDefinitionFile=/path/to/chunks.csv
    
[/code]

で設定を更新すれば使ってくれるようになります。CDC用のテーブルは *_PUB
という形式のスキーマに保存するように初期化スクリプトがセットアップしているので、抽出したいスキーマのみを含めるようにすればCDC用テーブルを除外できます。

テーブル名以降は省略可です。

設定を読み込んでいるあたりの[ソースコード](https://code.google.com/p/tungsten-
replicator/source/browse/branches/3.0.0-maintenance/replicator/src/java/com/continuent/tungsten/replicator/extractor/parallel/ChunksGeneratorThread.java#194):

[code]

    logger.info("Using definition from file " + chunkDefFile);
    chunkDefinition = new ChunkDefinitions(chunkDefFile);
    
[/code]

設定すべきプロパティの見つけ方:

[code]

    # ChunkDefinitionsというのが設定ファイル用クラスなので、chunkでレプリケーターの設定ファイルをgrepしてみる
    $ grep chunk conf/static-service_name.properties
    # Path to the chunk definition file. If the file is not provided or is not
    replicator.extractor.parallel-extractor.ChunkDefinitionFile=/path/to/chunks.csv
    # How many rows should be handle in one chunk
    replicator.extractor.parallel-extractor.chunk_size=2000
    
[/code]


CC BY-SA 3.0
2014-12-08T07:54:00.757
451
2014-12-08T07:54:00.757
30
446
answer