Основная система репликацыи postgres основана на передаче журнала записи блоков (WAL) с ведущего сервера на ведомые. Называется streaming replication. Ведомые серверы имеют очень точную копию базы, включая журналы транзакцый и прочую внутреннюю кухню. На ведомых серверах можно выполнять запросы на чтение. Поддержываются как асинхронные реплики (запись на ведомых можэт проходить с отставанием), так и синхронные, в том числе группы реплик (ведущий ждёт пока хоть один ведомый сервер получит запись до подтверждения коммита транзакцыи). Возможна смена ролей ведущий/ведомый с минимальным даунтаймом, или без такового при поддержке всяких pgpool. Есть развитые средства (внешние, правда) автоматического мониторинга и переключения кластеров -- в первую очередь patroni, но видел что-то на heartbeat и, кажэтся, pgpool (лень искать). В качестве альтэрнативы есть встроенная логическая репликацыя -- отдельные таблицы, обновление по первичному ключу, со своими ограничениями. С другой стороны -- в логической репликацыи допустимы самые разные извращения логического уровня. По-моему, ситуацыя с возможностями репликацыи весьма похожа на MS SQL.
Да, но нет автоматического фейловера и репликация в ПГ однопоточная
Фэйловер есть внешними инструментами. Кстати, в MS SQL кажэтся тожэ внешние демоны для фэйловера используются, не? Что само по себе вообще неважно. Однопоточная -- это, в общем, правда, с другой стороны -- всё что делает репликацыя -- передаёт WAL по сети и выгружает эти блоки на диски. Там не так часто что-то упирается в CPU чтобы нужно было пытаться для этого использоваться несколько ядер.
И да и нет. Есть специальная служба в ОС, но СУБД отрабатывает сам фейловер, проверяя целостность и состояние транзакций. Да и ничего дополнительного ставить не нужно. Сугубо связка СУБД + ОС, никаких сторонних програм. А вот по поводу реприкации не согласен. У меня был кластер на 300 баз и 10 ТБ. Около ста разных клиентов с этим всем работало. От 3000 до 1000000 транзакций в секунду. Многопоточность репликации очень сильно решала
В MS SQL Server for linux вроде нужно...
Обсуждают сегодня