42 lines
2.4 KiB
Markdown
42 lines
2.4 KiB
Markdown
|
---
|
|||
|
aliases:
|
|||
|
- RBR
|
|||
|
tags:
|
|||
|
- maturity/🌱
|
|||
|
date:
|
|||
|
- - 2024-06-02
|
|||
|
zero-link:
|
|||
|
- "[[../../../meta/zero/00 MySQL|00 MySQL]]"
|
|||
|
parents:
|
|||
|
- "[[Репликация в MySQL]]"
|
|||
|
linked:
|
|||
|
- "[[Statement Based Replication (SBR)]]"
|
|||
|
---
|
|||
|
От мастера к слейву отправляются только измененные строки, сам результат изменений. Основан на журнале [Row-based Binary Log](Журналы%20в%20MySQL.md#Row-based%20Binary%20Log).
|
|||
|
|
|||
|
RBR имеет три режима работы:
|
|||
|
- full: При изменении сохраняются все колонки (до изменения и после), даже если в них не было изменений. Такой режим потребляет много памяти.
|
|||
|
- noblob: Работает как full, но не передает изменения BLOB и TEXT колонок.
|
|||
|
- minimal: При изменении строки сохраняются только измененные колонки и колонки Primary Keys.
|
|||
|
|
|||
|
**Плюсы:**
|
|||
|
- Детерминированность: Запрос выполняется на master, а slave получает уже результат. Это устраняет проблемы, связанные с недетерминированными функциями, как в SBR.
|
|||
|
- Бинарный формат
|
|||
|
|
|||
|
**Минусы:**
|
|||
|
- **Бинарный формат**: Прочитать глазами уже не получится. Однако, есть утилита `mysqlbinlog -v`, которая позволяет читать журнал.
|
|||
|
- Большое потребление памяти: Потребляет больше памяти, чем SBR, так как нужно сохранять изменения строк до и после.
|
|||
|
- в mysql есть binlog_row_image, который решает эту проблему
|
|||
|
***
|
|||
|
## Мета информация
|
|||
|
**Область**:: [[../../../meta/zero/00 MySQL|00 MySQL]]
|
|||
|
**Родитель**:: [[Репликация в MySQL]]
|
|||
|
**Источник**::
|
|||
|
**Автор**::
|
|||
|
**Создана**:: [[2024-06-02]]
|
|||
|
### Дополнительные материалы
|
|||
|
- [[Statement Based Replication (SBR)]]
|
|||
|
### Дочерние заметки
|
|||
|
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->
|
|||
|
|