Механизм WAL в PostgreSQL для репликации данных работает следующим образом: newtechaudit.ru
- Запись всех изменений на PostgreSQL-сервере происходит в WAL (write-ahead log). newtechaudit.ru
- Затем осуществляется трансляция журналов с ведущего сервера на резервный. newtechaudit.ru
- Такой способ работы предотвращает потерю данных в случаях сбойных ситуаций, так как сервер-заместитель сверяет данные в табличном пространстве с данными WAL, доставляет разницу и затем WAL удаляет. newtechaudit.ru
Есть два вида потоковой репликации: selectel.ru
- Асинхронная. selectel.ru В этом случае PostgreSQL сначала применит изменения на основном узле и только потом отправит записи из WAL на реплики. selectel.ru Преимущество такого способа — быстрое подтверждение транзакции, так как не нужно ждать, пока все реплики применят изменения. selectel.ru Недостаток в том, что при падении основного сервера часть данных на репликах может потеряться, так как изменения не успели продублироваться. selectel.ru
- Синхронная. selectel.ru В этом случае изменения сначала записываются в WAL хотя бы одной реплики и только после этого фиксируются на основном сервере. selectel.ru Преимущество — более надёжный способ, при котором сложнее потерять данные. selectel.ru Недостаток — операции выполняются медленнее, потому что прежде чем подтвердить транзакцию, нужно сначала продублировать её на реплике. selectel.ru
Когда все транзакции из файла WAL считаются успешно применёнными на сервер — WAL помечается как готовый (full) и удаляется. prudnitskiy.pro