Технология репликации WAL в PostgreSQL работает на основе журнала Write-Ahead Log (WAL), в который записываются все изменения данных. struchkov.dev Этот журнал фиксирует все операции, включая обновление таблиц, создание триггеров и хранимых процедур. struchkov.dev WAL фиксирует не сами SQL-запросы, а физические изменения — бинарные модификации хранилища. struchkov.dev
Процесс репликации включает несколько шагов: struchkov.dev
- Запись транзакции в лог. struchkov.dev Все изменения записываются в журнал транзакций, что гарантирует возможность восстановления данных в случае сбоя системы. struchkov.dev
- Пересылка лога репликам. struchkov.dev Записанные транзакции отправляются на все реплики для синхронного применения. struchkov.dev Этот шаг обеспечивает, что реплики всегда получают данные в том же порядке, что и master. struchkov.dev
- Выполнение транзакций на репликах. struchkov.dev Реплики применяют полученные изменения к своим копиям данных, синхронизируясь с master-сервером. struchkov.dev
- Завершение транзакции в движке БД. struchkov.dev После успешного применения всех изменений на всех репликах транзакция завершается на master-сервере. struchkov.dev
- Возврат результата клиенту. struchkov.dev Клиент получает подтверждение только после того, как изменения успешно применены на всех репликах, что гарантирует консистентность данных во всей системе. struchkov.dev
По умолчанию репликация асинхронная. prudnitskiy.pro Это значит, что мастер пишет данные постоянно, а slave вытаскивает изменения и применяет их у себя по мере возможности. prudnitskiy.pro