2.1 KiB
2.1 KiB
aliases | tags | date | zero-link | parents | linked | |||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
|
|
|
Асинхронная (async). Если коммит прошел, то он прошел только на одной реплике, и когда-нибудь выполнится на остальных. Быстро, но не надежно. Возможно используется по умолчанию.
Реализовано в MySQL, PostgreSQL
Как работает
- Подготовка транзакции в движке БД: Транзакция начинается на главном сервере, где собираются все изменения данных.
- Запись транзакции в лог: Все изменения записываются в журнал транзакций (например, Write-Ahead Log в PostgreSQL).
- Завершение транзакции в движке БД: Транзакция завершается на главном сервере, и клиент получает подтверждение.
- Пересылка лога репликам: Журнал транзакций отправляется на реплики для асинхронного применения изменений.
- Воспроизведение транзакции на репликах: Реплики получают журнал и применяют изменения к своим копиям данных, но это может произойти с задержкой.
Плюсы
- Клиент быстрее получает ответ
Минусы
- Если мастер упадет до отправки репликам, то данные могут потеряться.
- Отставание реплики в БД