Синхронная реплика не всегда повторяет мастер



Допустим, у нас есть конфигурация мастер + синхронная реплика



Несмотря на то, что реплика синхронная, иногда могут возникать ситуации, что после успешного коммита на мастер мы получаем неактуальные данные с реплики



Почему такое может происходить? В postgres можно выбрать один из режимов синхронного коммита



Чем они отличаются:



off - не дожидаясь записи в WAL на мастере, говорим клиенту, что транзакция успешно завершилась



local - гарантируем запись в WAL на мастере



remote_write - гарантируем запись в WAL на мастере + доставку изменений до реплики



on - гарантируем запись в WAL на мастере + доставку и запись в WAL на реплике



remote_apply - гарантируем запись в WAL на мастере + коммит изменений на реплике



По умолчанию выбирается режим on, который позволяет закомитить транзакцию, не дождавшись применения изменений на реплике. И соотв-но какое-то время на реплике будут лежать неактуальные данные