|
|||||||
Что такое Logical Replication в PostgreSQL
Время создания: 20.02.2025 17:18
Текстовые метки: postgresql, postgre, sql, логическая, репликация, logical, replication, DB, database, БД, база, данных, синхронизация
Раздел: Компьютер - Программирование - SQL - PostgreSQL
Запись: xintrea/mytetra_syncro/master/base/1740061106sfefxshbwp/text.html на raw.github.com
|
|||||||
|
|||||||
Logical Replication — это механизм репликации данных в PostgreSQL, который позволяет передавать изменения данных (INSERT, UPDATE, DELETE) из одной базы данных в другую. В отличие от потоковой (физической) репликации, логическая репликация работает на уровне строк и команд, а не на уровне файлов WAL (Write-Ahead Log). Другими словами, логическая репликация в PostgreSQL — это механизм асинхронной репликации на уровне строк, который подходит для репликации между разными инстансами PostgreSQL и для синхронизации отдельных таблиц. Как работает Logical Replication? Когда речь идет о логической репликации, используются следующие понятия Публикация (Publication) В основной (публикующей) базе (publisher) создается publication — специальная сущность, указывающая, какие таблицы и изменения должны передаваться. Подписка (Subscription) В принимающей базе (subscriber) создается subscription, которая получает изменения от публикации и применяет их в своих таблицах. Передача данных Когда в publisher происходят изменения, они локально фиксируются в WAL на физическом уровне, а логический декодер передает изменения подписчику через специальный логический поток. Применение изменений Подписчик (subscriber) получает транзакции и применяет их в той же последовательности, что и на публикации. Настройка Logical Replication в PostgreSQL 1. Включение логической репликации Для работы необходимо установить несколько параметров в postgresql.conf: wal_level = logical max_replication_slots = 10 max_wal_senders = 10 После этого следует перезапустить PostgreSQL. 2. Создание публикации на основном сервере (Publisher) CREATE PUBLICATION my_publication FOR TABLE my_table; Опции:
После создания, можно проверить список публикаций: SELECT * FROM pg_publication; 3. Настройка подписки на подписчике (Subscriber) На подписчике (subscriber) создается такая же таблица my_table, как на publisher. Затем добавляется подписка: CREATE SUBSCRIPTION my_subscription CONNECTION 'host=192.168.1.100 dbname=mydb user=replicator password=secret' PUBLICATION my_publication; где:
Проверить статус подписки можно командой: SELECT * FROM pg_subscription; Преимущества Logical Replication
Ограничения Logical Replication
Репликация связанных таблиц PostgreSQL позволяет реплицировать данные между связанными таблицами, включая те, которые связаны внешними ключами (Foreign Keys). Логическая репликация работает на уровне отдельных таблиц, позволяя выбирать конкретные таблицы для репликации. Важно учитывать несколько моментов:
Пример настройки логической репликации для двух связанных таблиц: -- Создание публикации на сервере-источнике CREATE PUBLICATION my_publication FOR TABLE orders, order_items; -- Подписка на сервере-подписчике CREATE SUBSCRIPTION my_subscription CONNECTION 'host=source_host port=5432 user=rep_user password=password dbname=my_db' PUBLICATION my_publication; |
|||||||
Так же в этом разделе:
|
|||||||
![]() |
|||||||
|
|||||||
|