
⚡Синхронная реплика не всегда повторяет мастер
Допустим, у нас есть конфигурация мастер + синхронная реплика
Несмотря на то, что реплика синхронная, иногда могут возникать ситуации, что после успешного коммита на мастер мы получаем неактуальные данные с реплики
Почему такое может происходить? В postgres можно выбрать один из режимов синхронного коммита
Чем они отличаются:
off - не дожидаясь записи в WAL на мастере, говорим клиенту, что транзакция успешно завершилась
local - гарантируем запись в WAL на мастере
remote_write - гарантируем запись в WAL на мастере + доставку изменений до реплики
on - гарантируем запись в WAL на мастере + доставку и запись в WAL на реплике
remote_apply - гарантируем запись в WAL на мастере + коммит изменений на реплике
По умолчанию выбирается режим on, который позволяет закомитить транзакцию, не дождавшись применения изменений на реплике. И соотв-но какое-то время на реплике будут лежать неактуальные данные
Допустим, у нас есть конфигурация мастер + синхронная реплика
Несмотря на то, что реплика синхронная, иногда могут возникать ситуации, что после успешного коммита на мастер мы получаем неактуальные данные с реплики
Почему такое может происходить? В postgres можно выбрать один из режимов синхронного коммита
Чем они отличаются:
off - не дожидаясь записи в WAL на мастере, говорим клиенту, что транзакция успешно завершилась
local - гарантируем запись в WAL на мастере
remote_write - гарантируем запись в WAL на мастере + доставку изменений до реплики
on - гарантируем запись в WAL на мастере + доставку и запись в WAL на реплике
remote_apply - гарантируем запись в WAL на мастере + коммит изменений на реплике
По умолчанию выбирается режим on, который позволяет закомитить транзакцию, не дождавшись применения изменений на реплике. И соотв-но какое-то время на реплике будут лежать неактуальные данные