Как обеспечить репликацию Oracle-to-MySQL с использованием синхронного CDC без простоев?

Я пытаюсь обеспечить репликацию Oracle-to-MySQL с использованием метода параллельного извлечения, описанного в документации Tungsten Replicator.

  1. Настройте таблицы CDC в Oracle, используя скрипт setupCDC.sh, предоставленный Tungsten.
  2. Запустите параллельный экстрактор, указав начальный SCN процесса CDC, указанный в предыдущем сценарии.
  3. Параллельный экстрактор вставит все существующие данные с помощью запросов типа возвратной памяти AS OF SCN ...выполнение инициализации на момент времени с целостностью данных.

Проблема в том, что скрипт setupCDC распечатывает SCN, только если CDC является асинхронным. В официальной ветке форума намекают, что это "получение единой позиции для всего снимка схемы".

Из-за лицензионных ограничений я могу использовать только синхронный CDC. Безопасно ли вручную читать SCN, записанный в all_capture стол и использовать его для обеспечения? Каковы мои варианты, которые могут обеспечить как целостность данных, так и минимальное время простоя?

  • а. Отключите операции записи в базу данных master во время инициализации:
    • Это нежелательно, так как моя база данных содержит сотни гигабайт данных, что, вероятно, приводит к длительному простою.
  • б. Разрешить операции записи во время предоставления: любые несоответствия будут исправлены путем повторного применения всех данных CDC путем обычной репликации после того, как параллельное извлечение обработает все таблицы. Любые ошибки, возникшие при повторном применении, должны игнорироваться.
    • Будет ли это безопасно с точки зрения целостности данных?

1 ответ

Решение

Безопасно ли вручную читать SCN, записанный в таблице all_capture, и использовать его для обеспечения?

Для синхронного CDC нет записи в all_capture таблица, которая предназначена для асинхронных процессов захвата.

Вместо этого каждая таблица изменений записывает SCN во время его создания. Вы можете определить самый низкий SCN из change_tables table и предоставьте его в качестве аргумента команды обеспечения: trepctrl online -provision <scn>,

SQL> COL scn FORMAT 999999999999999
SQL> SELECT MIN(created_scn) scn FROM change_tables WHERE change_set_name = 'TUNGSTEN_CS_{service_name}';

(Заменить {service_name} с вашим собственным именем службы.)

Другие вопросы по тегам