2011-11-14 4 views
4

私はTungsten Replicatorと異種dbsの間の複製に取り組んでいます。我々は、MySQLのマスターとオラクルのスレーブを持っています。ドキュメントによると、そのような設定がうまくいくはずです。私はタングステンレプリケータ2.0.5を使用しています。両方のノードで基本インストールを作成するためにマスターノード上でタングステンを用いて異種複製を設定する方法は?

と呼びます。注意:インストーラは、スレーブノード上でmysqlインスタンスを見つけることができないため、異機種間のセットアップのため、インストーラの使用は推奨されていません。レプリケータインスタンスは、静的$ SERVICENAME.propertiesをconfディレクトリに追加し、conf/services.properties(replicator.host = $ HOSTNAME、replicator.masterListenPortStart = 12112、replicator.rmi_port = 20000)を変更することで設定します。

SQL-Statementに 'timestamp'キーワードがないため、レプリケータを起動すると、タングステン・スキーマのtrep_commit_seqnoに対してupdate文を発行すると、ORA-01850が発生しました。ちょうどこのエラーを越えるために、私はupdate_timestampとextract_timestampのデータ型をvarcharに変更しました。リプリケータは今、複製されたが、テストスクリプトを発行したとき

DROP TABLE IF EXISTS table1; 

レプリケーションが原因句を「存在する場合は」は、原因ORA-00933に失敗した。ウントいくつかの簡単な挿入を起動しています私はこれが私の構成のエラーであるかどうか、またはタングステンが一般にこれらの2つの製品間のDDLステートメントの違いに問題があるかどうかはわかりません。誰かがタングステンを使って同様のレプリケーションを正常にセットアップしましたか?

答えて

2

タングステンのドキュメントには、いくつかの有用なガイダンスがあります。特に、「操作の高度な原則」からのこの点は関連しています。「また、最も単純なCREATE TABLE式を超えたDDL文は、まったく移植可能ではありません。あなたの場合、DROP TABLE IF EXISTS table1;は有効なOracle DDLではありません。

Read it here

+0

回答と情報をご指摘いただきありがとうございます。私は私の目的のためにフィルタを実装する必要があると思う。 – GLA

+0

@ミスンサシダラン - あなたはポイントを求めてはいけません、それは威厳のないものです。 – APC

2

関心のある人のために:今まで、タングステンは、異質環境(MithunSasidharanが書いたように)でddlステートメントの変換を実行しません。今私は正規表現を使用してddlステートメントをスキップするカスタムフィルタを書きました。スキーマ定義の同期化のために、Apache DdlUtilsを使用します。これは、mysqlとoracleの間のスキーマ定義の変換に非常に役立ちます。私はそれが他のベンダーにとっても同様にうまくいくと思います。ありがとう。

関連する問題