Как настроить гетерогенную репликацию с вольфрамом? - PullRequest
4 голосов
/ 14 ноября 2011

В последнее время я работаю над репликацией между гетерогенными базами данных с Tungsten Replicator .У нас есть мастер MySQL и раб-оракул.Согласно документам такая настройка должна работать.Я использую Tungsten-Replicator-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).

Запуск репликаторов привел к ORA-01850 при выдаче оператора обновления для trep_commit_seqno в вольфрамовой схеме из-за отсутствия ключевого слова timestamp в SQL-заявлении.Просто для того, чтобы выйти за пределы этой ошибки, я изменил тип данных update_timestamp и extract_timestamp на varchar.Репликаторы теперь запускаются и некоторые простые вставки там, где реплицируются, но когда тестовый сценарий выдает

DROP TABLE IF EXISTS table1;

, репликация не выполняется из-за ORA-00933 из-за предложения IF EXISTS.Я не уверен, является ли это ошибкой в ​​моей конфигурации или у вольфрама вообще есть проблемы с различиями в выражениях DDL между этими двумя продуктами.Кто-нибудь успешно настроил подобную репликацию с использованием вольфрама?

Ответы [ 2 ]

2 голосов
/ 15 ноября 2011

Для тех, кто заинтересован: до сих пор Tungsten не выполнял никаких преобразований операторов ddl в гетерогенной среде (как писал MithunSasidharan).Теперь я написал собственный фильтр, который пропускает операторы ddl с помощью регулярных выражений.Для синхронизации определения схемы мы будем использовать Apache DdlUtils , который очень хорошо подходит для преобразования определения схемы между mysql и oracle.Я предполагаю, что это работает для других поставщиков так же хорошо.Благодарю.

2 голосов
/ 14 ноября 2011

В вольфрамской документации есть несколько полезных советов.В частности, этот пункт из «Продвинутых принципов работы» имеет отношение: «Кроме того, операторы DDL, кроме простейших выражений CREATE TABLE, редко бывают переносимыми».В вашем случае DROP TABLE IF EXISTS table1; не является допустимым Oracle DDL.

Читать здесь .

...