Перейти к основному содержимому

Логическая репликация

примечание

Эта страница переведена при помощи нейросети GigaChat.

Логическая репликация – это метод репликации объектов данных и их изменений, основанный на их идентичности репликации (обычно первичном ключе). Такую репликацию называют логический в отличие от физической репликации, которая использует точные адреса блоков и побайтовую репликацию. PostgreSQL поддерживает оба механизма одновременно, см. раздел «Высокая доступность, балансировка нагрузки и репликация». Логическая репликация позволяет детально контролировать как репликацию данных, так и безопасность.

Логическая репликация использует модель публикации и подписки с одним или несколькими подписчиками, подписанными на одну или несколько публикаций на узле издателя. Подписчики извлекают данные из публикаций, на которые они подписаны, и могут впоследствии повторно публиковать данные для каскадной репликации или более сложных конфигураций.

Логическая репликация таблицы обычно начинается со снимка данных в базе данных издателя и копирования этих данных подписчику. После этого изменения на стороне издателя отправляются подписчику по мере их возникновения в реальном времени. Подписчик применяет данные в том же порядке, что и издатель, чтобы гарантировать согласованность транзакций для публикаций в рамках одной подписки. Этот метод репликации данных иногда называют транзакционной репликацией.

Типичные варианты использования логической репликации включают:

  • Отправку инкрементальных изменений в одной базе данных или подмножестве базы данных подписчикам по мере их возникновения.
  • Запуск триггеров для отдельных изменений по мере их поступления на подписчика.
  • Консалидация нескольких баз данных в одну (например, для аналитических целей).
  • Репликацию между разными основными версиями PostgreSQL.
  • Репликацию между экземплярами PostgreSQL на разных платформах (например, с Linux на Windows).
  • Предоставление доступа к реплицированным данным разным группам пользователей.
  • Совместное использование подмножества базы данных несколькими базами данных.

База данных подписчиков ведет себя так же, как и любой другой экземпляр PostgreSQL, и может использоваться в качестве издателя для других баз данных путем определения собственных публикаций. Когда подписчик рассматривается приложением только для чтения, не будет конфликтов от одной подписки. С другой стороны, если выполняются другие записи либо приложением, либо другими подписчиками к одному и тому же набору таблиц, могут возникнуть конфликты.