>1. репликация для постгреса
У нас сделано так:
- На ведущем сервере (или где-нибудь в сети) крутится демон (серверная программа). Он может соединиться с БД, опросить специальную таблицу, в которой сохраняются логи изменений реплицируемых таблиц, выбрать данные и передать их клиенту.
- На ведомой машине есть клиент, который, например, по крону соединяется с сервером и требует передать ему текущие изменения. По получении обновляет таблицы ведомой БД.
- В БД на ведущем сервере таблицах, которые нужно реплицировать, есть триггеры, которые при модификации таблиц (insert,update, delete) помещают в специальную таблицу запись с id модифицированной записи, наименованием таблицы, типом изменения, датой и т.д.
Вот, собственно, и все.
Чтобы обеспечить целостность ведомой БД, процедура репликации выполняется в транзакции (2-фазной). У меня есть схемы организации такой транзакции в MS Visio. Но главная сложность - в серверном демоне и клиентской программе. Здесь я использую свою собственную библиотеку (объектный интерфейс удаленных вызовов) на основе сокетов с установлением соединения. Выложить ее для общего использования еще не готов :) Думаю, здесь можно использовать что-то еще, например, RPC, какой-нибудь ORB (TAO, ACE).
|