Записки молодого девопсера
Ссылка
нажмите — покажем
нажмите — покажем
Однажды любая компания, которая разрабатывает свой сервис, приходит к идее, что кластер БД, состоящий из мастера и нескольких реплик, можно разгрузить.
Для этого можно читать данные с реплик.
Однако, при реализации возникает один нюанс (далее будет пример с PostgreSQL).
Нужно обязательно проверить, как на кластере с репликацией настроен механизм подтверждения транзакций.
Подробнее https://cloud.yandex.ru/docs/managed-postgresql/concepts/replication#write-sync-and-read-consistency
Идея в том, чтобы данные были консистентны на всех нодах кластера, чтобы не случилась ситуация, когда вы пишете на мастер данные, потом считываете их с реплики, а там этих данных нет.
Это регулируется параметром synchronous_commit:
https://postgrespro.ru/docs/postgrespro/13/runtime-config-wal#GUC-SYNCHRONOUS-COMMIT
Список серверов для подтверждения транзакции:
https://postgrespro.ru/docs/postgrespro/13/runtime-config-replication#RUNTIME-CONFIG-REPLICATION-MASTER (synchronous_standby_names)
3 · 300 ·