--- aliases: tags: - maturity/🌱 date: - - 2024-06-07 zero-link: - "[[../../../meta/zero/00 Реляционная база данных|00 Реляционная база данных]]" parents: - "[[Репликация БД]]" linked: - "[[Асинхронная репликация]]" - "[[Полу-синхронная репликация]]" --- При получении запроса от клиента master ожидает, пока все реплики получат новые данные и подтвердят их применение у себя, и только после этого сообщает клиенту, что запрос успешно выполнен. Работает надежно, но медленно. Реализовано в [PostgreSQL](../../../meta/zero/00%20PostgreSQL.md). **Механизм работы**: - Подготовка транзакции в движке БД: Транзакция начинается на главном сервере (мастере), где собираются все изменения данных. - Запись транзакции в лог: Все изменения записываются в журнал транзакций, что обеспечивает возможность восстановления данных в случае сбоя. - Пересылка лога репликам: Журнал транзакций отправляется на все реплики для синхронного применения изменений. - Выполнение транзакций на репликах: Реплики применяют полученные изменения к своим копиям данных. - Завершение транзакции в движке БД: После успешного применения изменений на всех репликах транзакция завершается. - Возврат результата клиенту: Клиент получает подтверждение о завершении транзакции только после того, как изменения применены на всех репликах. **Плюсы:** - Высокая надежность данных: Данные не теряются даже в случае сбоя одного из серверов, так как изменения применяются на всех репликах одновременно. - Консистентность данных: Обеспечивается консистентность данных на всех репликах, что исключает возможность получения различных результатов для одного и того же запроса. **Минусы:** - Увеличенное время отклика: Поскольку подтверждение транзакции возвращается клиенту только после её завершения на всех репликах, время отклика увеличивается. Это может негативно сказаться на производительности системы, особенно при большом количестве реплик. - Высокая вероятность сбоев: С увеличением числа реплик общая вероятность сбоя возрастает, так как транзакция завершается только при успешном выполнении на всех репликах. Если хотя бы одна реплика не отвечает, транзакция не может быть завершена. *** ## Мета информация **Область**:: [[../../../meta/zero/00 HighLoad|00 HighLoad]] **Родитель**:: [[Репликация БД]] **Источник**:: **Автор**:: **Создана**:: [[2024-06-07]] ### Дополнительные материалы - [[Асинхронная репликация|Асинхронная репликация]] - [[Полу-синхронная репликация|Полу-синхронная репликация]] ### Дочерние заметки