Потоковая обработка данных в PostgreSQL (потоковая репликация, streaming replication) заключается в передаче записей из журнала предзаписи транзакций (WAL) от основного сервера (мастера) к репликам. 12 Затем каждая реплика изменяет свои данные по этому журналу. 1
Потоковая репликация бывает двух видов: 1
- Асинхронная. 1 PostgreSQL сначала применяет изменения на основном узле и только потом отправляет записи из WAL на реплики. 1 Преимущество такого способа — быстрое подтверждение транзакции, так как не нужно ждать, пока все реплики применят изменения. 1 Недостаток — при падении основного сервера часть данных на репликах может потеряться, так как изменения не успели продублироваться. 1
- Синхронная. 1 Изменения сначала записываются в WAL хотя бы одной реплики и только после этого фиксируются на основном сервере. 1 Преимущество — более надёжный способ, при котором сложнее потерять данные. 1 Недостаток — операции выполняются медленнее, потому что прежде чем подтвердить транзакцию, нужно сначала продублировать её на реплике. 1
Для настройки потоковой репликации все серверы должны быть одной версии, работать на одной ОС и архитектуре. 1