digital-garden/_inbox/Полу-синхронная репликация.md

29 lines
2.0 KiB
Markdown
Raw Normal View History

2024-06-13 21:01:37 +03:00
---
aliases:
tags:
- зрелость/🌱
date:
- - 2024-06-07
zero-link:
- "[[00 Базы Данных]]"
parents:
- "[[Репликация БД]]"
linked:
- "[[Асинхронная репликация]]"
- "[[Синхронная репликация]]"
---
Полусинхронная (semi-sync). Комит прошел на одной реплике, но данные по транзакции были скопированы во все остальные реплики, но еще не были применены.
Реализовано в [MySQL](00%20MySQL.md)
Схема выполнения на MySQL ![](Pasted%20image%2020240206195639.png)
**Как работает**
2024-07-11 09:03:53 +03:00
- Подготовка транзакции в движке БД: Транзакция начинается на master, где собираются все изменения данных.
- Запись транзакции в лог: Все изменения записываются в журнал транзакций.
- Пересылка лога репликам: Журнал транзакций отправляется на реплики. Master ждет подтверждения от как минимум одной реплики о получении журнала, но не обязательно его применении.
- Завершение транзакции в движке БД: После получения подтверждения от одной или нескольких реплик транзакция завершается на master, и клиент получает подтверждение.
- Воспроизведение транзакции на репликах: Реплики применяют полученные изменения к своим копиям данных, но это может произойти с задержкой.
2024-06-13 21:01:37 +03:00
**Минусы**
2024-06-19 20:03:52 +03:00
- Проблемы консистентности данных. [Фантомное чтение](Фантомное%20чтение.md).