Спасибо за помощь или предложение.
Я пытаюсь создать собственную репликацию с несколькими хозяевами на Postgresql 10 в Windows для ситуации, когда невозможно использовать какой-либо из существующих сторонних инструментов для репликации с несколькими хозяевами PG, что может также включать другую платформу БД в группе подписчиков ( Sybase ADS). У меня есть следующая логика для создания двунаправленной репликации, частично вдохновленная логикой Bucardo, между 1 издателем и 2 подписчиками:
Когда INSERT, UPDATE или DELETE выполняются в исходной таблице, триггер исходной таблицы добавляет строку в созданную мета-таблицу в исходной БД, которая будет действовать как транзакция репликации, которая будет выполняться на двух БД-подписчиках, которые ей подчиняются. .
Сигнал NOTIFY будет отправлен службе, или сценарий, написанный на Python, или некоторый язык сценариев будет отслеживать изменения в метатабельном или триггерном выполнении и сможет выполнять сравнение таблиц или сценарий оператора для запуска база данных каждого подписчика.
*** Я полагаю, что триггеры на подписчиках нужно будет приостановить, чтобы они не передавали свои принятые операторы своим подписчикам, т. Е. Если узел A и узел B оба подписываются на таблицу A друг друга, то выполняется обновление узла Таблица A А должна реплицироваться на таблицу A узла B без последующей репликации обратно на таблицу A в двунаправленном «пинг-понг-шторме».
- Будет проведено окончательное сравнение таблиц, и транзакция будет закрыта. Повторно включите триггеры на подписчиках, если они были приостановлены / отключены при отправке транзакций из добавления шага 2.
Надеемся, что это будет возможно сделать двунаправленно, в порядке отметки времени, в порядке FIFO, если только я не смогу создать дочерние процессы для одновременного запуска синхронизации.
Для этого я пытаюсь найти лучший способ настроить служебную логику - по сути, шаг 2, описанный выше, который, очевидно, был выполнен с использованием демона в Linux, но мне нужно работать в Windows, чтобы он работал как или похожий на услугу / агент - или придумать достаточно простой и эффективный дизайн для отправки исходных выписок из БД в подписные БД.
Кто-нибудь видит, что этот план неисправен или может не работать?