Как обеспечить репликацию Oracle-to-MySQL с использованием синхронного CDC без простоев?
Я пытаюсь обеспечить репликацию Oracle-to-MySQL с использованием метода параллельного извлечения, описанного в документации Tungsten Replicator.
- Настройте таблицы CDC в Oracle, используя скрипт setupCDC.sh, предоставленный Tungsten.
- Запустите параллельный экстрактор, указав начальный SCN процесса CDC, указанный в предыдущем сценарии.
- Параллельный экстрактор вставит все существующие данные с помощью запросов типа возвратной памяти
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}
с вашим собственным именем службы.)