Какие типы репликации существуют в PostgreSQL? В чём разница между физической и логической репликацией?
Ответ от нейросети
sobes.tech AI
В PostgreSQL существуют два основных типа репликации: физическая и логическая.
Физическая репликация копирует данные на уровне блоков файловой системы, создавая точную копию базы данных на реплике. Она работает на уровне WAL (Write-Ahead Logging) и обеспечивает синхронную или асинхронную репликацию. Такой подход подходит для создания горячих резервных копий и масштабирования чтения, но не позволяет изменять данные на репликах.
Логическая репликация работает на уровне изменений данных (DML), передавая отдельные операции INSERT, UPDATE, DELETE. Она более гибкая: позволяет реплицировать отдельные таблицы, фильтровать данные и даже изменять структуру реплики. Логическая репликация реализована через публикации и подписки.
Ключевые отличия:
- Физическая репликация — копирует весь кластер целиком, логическая — отдельные объекты.
- Физическая репликация не позволяет изменять данные на реплике, логическая — может поддерживать независимые изменения.
- Логическая репликация более гибкая, но сложнее в настройке и может иметь большую нагрузку.
Пример настройки логической репликации:
- Создать публикацию на главном сервере:
CREATE PUBLICATION my_pub FOR TABLE my_table;
- Создать подписку на реплике:
CREATE SUBSCRIPTION my_sub CONNECTION 'host=master_host dbname=mydb user=replicator password=secret' PUBLICATION my_pub;
Таким образом, выбор между физической и логической репликацией зависит от требований к гибкости и архитектуре системы.