digital-garden/_inbox/Statement Based Replication (SBR).md
2024-06-13 21:01:37 +03:00

2.1 KiB
Raw Blame History

aliases tags date zero-link parents linked
SBR
зрелость/🌱
2024-06-02
00 MySQL
Репликация в MySQL
Row Based Replication (RBR)

Данная репликация работает на уровне самих запросов. То есть мастер сохраняет в журнал SQL запросы, а слейв получает этот список запросов и проигрывает их у себя.

В основе данной репликации лежит журнал Statement-based Binary Log.

Плюсы:

  • Небольшое количество передаваемых данных, при однотипных изменениях. Например, если мы изменяем 5 миллионов строк одним запросом: UPDATE users SET bonus=bonus+100, то нужно передать только 1 строку запроса.
  • В журнале все записано в понятном человеко-читаемом виде.

Проблемы:

  • Недетерминирован. Каждый запрос самостоятельно исполняется на слейве.
    • Вызов функций, например функции now(). В момент попадания запроса на slave это будет уже другое время.
  • Сложные запросы выполняются долго.
    • Если запрос выполняется 10 минут, то он сначала будет выполняться 10 минут на мастере, а потом еще 10 минут на репликах.

Для того чтобы SBR работала корректно, есть специальный флажок.