Sobes.tech
Назад к вопросам
Middle
10

Какие типы репликации существуют в PostgreSQL? В чём разница между физической и логической репликацией?

Компании, где спрашивали
T1 ИИ

Ответ от нейросети

sobes.tech AI

В PostgreSQL существуют два основных типа репликации: физическая и логическая.

Физическая репликация копирует данные на уровне блоков файловой системы, создавая точную копию базы данных на реплике. Она работает на уровне WAL (Write-Ahead Logging) и обеспечивает синхронную или асинхронную репликацию. Такой подход подходит для создания горячих резервных копий и масштабирования чтения, но не позволяет изменять данные на репликах.

Логическая репликация работает на уровне изменений данных (DML), передавая отдельные операции INSERT, UPDATE, DELETE. Она более гибкая: позволяет реплицировать отдельные таблицы, фильтровать данные и даже изменять структуру реплики. Логическая репликация реализована через публикации и подписки.

Ключевые отличия:

  • Физическая репликация — копирует весь кластер целиком, логическая — отдельные объекты.
  • Физическая репликация не позволяет изменять данные на реплике, логическая — может поддерживать независимые изменения.
  • Логическая репликация более гибкая, но сложнее в настройке и может иметь большую нагрузку.

Пример настройки логической репликации:

  1. Создать публикацию на главном сервере:
CREATE PUBLICATION my_pub FOR TABLE my_table;
  1. Создать подписку на реплике:
CREATE SUBSCRIPTION my_sub CONNECTION 'host=master_host dbname=mydb user=replicator password=secret' PUBLICATION my_pub;

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