Логическая репликация
Эта страница переведена при помощи нейросети GigaChat.
Логическая репликация – это метод репликации объектов данных и их изменений, основанный на их идентичности репликации (обычно первичном ключе). Такую репликацию называют логический в отличие от физической репликации, которая использует точные адреса блоков и побайтовую репликацию. PostgreSQL поддерживает оба механизма одновременно, см. раздел «Высокая доступность, балансировка нагрузки и репликация». Логическая репликация позволяет детально контролировать как репликацию данных, так и безопасность.
Логическая репликация использует модель публикации и подписки с одним или несколькими подписчиками, подписанными на одну или несколько публикаций на узле издателя. Подписчики извлекают данные из публикаций, на которые они подписаны, и могут впоследствии повторно публиковать данные для каскадной репликации или более сложных конфигураций.
Логическая репликация таблицы обычно начинается со снимка данных в базе данных издателя и копирования этих данных подписчику. После этого изменения на стороне издателя отправляются подписчику по мере их возникновения в реальном времени. Подписчик применяет данные в том же порядке, что и издатель, чтобы гарантировать согласованность транзакций для публикаций в рамках одной подписки. Этот метод репликации данных иногда называют транзакционной репликацией.
Типичные варианты использования логической репликации включают:
- Отправку инкрементальных изменений в одной базе данных или подмножестве базы данных подписчикам по мере их возникновения.
- Запуск триггеров для отдельных изменений по мере их поступления на подписчика.
- Консалидация нескольких баз данных в одну (например, для аналитических целей).
- Репликацию между разными основными версиями PostgreSQL.
- Репликацию между экземплярами PostgreSQL на разных платформах (например, с Linux на Windows).
- Предоставление доступа к реплицированным данным разным группам пользователей.
- Совместное использование подмножества базы данных несколькими базами данных.
База данных подписчиков ведет себя так же, как и любой другой экземпляр PostgreSQL, и может использоваться в качестве издателя для других баз данных путем определения собственных публикаций. Когда подписчик рассматривается приложением только для чтения, не будет конфликтов от одной подписки. С другой стороны, если выполняются другие записи либо приложением, либо другими подписчиками к одному и тому же набору таблиц, могут возникнуть конфликты.