@Devtime

Postgres синхронная репликация?

Добрый день.
В 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...
  • Вопрос задан
  • 65 просмотров
Решения вопроса 1
Melkij
@Melkij
PostgreSQL DBA
Момент первый: какой synchronous_standby_names?
Момент второй:
репликация через настройку synchronous_commit = on

https://www.postgresql.org/docs/current/runtime-co...
When set to on, commits will wait until replies from the current synchronous standby(s) indicate they have received the commit record of the transaction and flushed it to disk.

When set to remote_apply, commits will wait until replies from the current synchronous standby(s) indicate they have received the commit record of the transaction and applied it, so that it has become visible to queries on the standby(s).

Разницу чувствуете?

мастер ноду для записи, а все запросы на чтение должны обрабатывать синхронные реплики

Очень необычный workload. Ни разу такого не встречал.
Мне любопытно, что вы такое делаете, что вам неважна латентность записи, у вас тяжёлая пишущая нагрузка (не путать с объёмом пишущей нагрузки - репликам это всё писать придётся так же, но ещё и читать), очень много крайне критичного к лагу асинхронной репликации чтения.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы