Добрый день.
В PostgreSQL есть синхронная репликация через настройку synchronous_commit = on (
https://postgrespro.ru/docs/postgrespro/12/runtime... на мастере.
Поднял 1 мастер ноду и 2 слейва. Настроил репликацию корректно postgres говорит что оба слейва работают через синхронную репликацию.
Для проверки написал скрипт который делает вставку в мастер и потом извлекает данные из двух слейвов.
Для теста вставляю подряд 1000 записей. При поиске их в слейвах иногда находит не все записи. Например находит 998 из 1000 вставленных. Если добавить небольшую задержку, то находятся все записи стабильно.
При synchronous_commit = on мастер должен ждать подтверждения что данные сохранены на диск от каждого синхронного слейва и только после этого отвечать клиенту об успешной вставке.
Может кто сталкивался с подобной проблемой?
Задача стоит поставить мастер ноду для записи, а все запросы на чтение должны обрабатывать синхронные реплики, но проблема не найденными записями ставит под сомнение такую связку.
Для теста поднимал в контейнерах и задавал вопросы на гитхабе. Возможно более детальное описание проблемы будет там
https://github.com/bitnami/bitnami-docker-postgres...