digital-garden/dev/architecture/highload/Отставание реплики БД.md

4.1 KiB
Raw Blame History

aliases tags date zero-link parents linked
лаг репликации
задержки репликации
задержка репликации
maturity/🌱
2024-06-04
../../../meta/zero/00 HighLoad
Репликация БД

Отставание реплики (или лаг репликации) — это проблема, возникающая, когда изменения, выполненные на мастере, не успевают применяться на репликах вовремя. Это может привести к несогласованности данных между мастером и репликами и затруднить выполнение операций, требующих актуальных данных.

В нормальной ситуации отставание может достигать 1 секунды.

Так как в ../../../meta/zero/00 PostgreSQL мы передаем не сам запрос, а блоки данных, то отставание по идее должно быть меньше, чем в ../../../meta/zero/00 MySQL.

Что может приводить к лагу:

  • Медленные и сложные запросы: Если реплики выполняют сложные или ресурсоемкие запросы, это может замедлить процесс применения изменений.
  • Сетевые проблемы: Задержки в сети могут замедлить передачу журнала транзакций (WAL) от мастера к репликам.
  • Размер журнала транзакций: Большие объемы изменений могут создать нагрузку на систему репликации, увеличивая время обработки.
  • Проблемы с дисковой подсистемой: Медленные дисковые операции на репликах могут замедлить процесс применения изменений.

Рекомендации:

  • Оптимизация запросов: Оптимизация сложных запросов может снизить нагрузку на реплики и ускорить процесс применения изменений. Это включает в себя индексацию, переработку запросов и использование эффективных алгоритмов.
    • Убивайте медленные запросы. Если запрос висит уже 10 секунд, то лучше его прибить.
  • Использование выделенных реплик: Для выполнения сложных запросов или резервного копирования можно использовать выделенные реплики, что позволит снизить нагрузку на основные реплики, обеспечивающие актуальность данных.
  • Подумайте о кросс-СУБД репликации Репликация из реляционной бд в NoSQL
  • Избегайте ../../database/Write-read pattern
  • Выделить отдельный жесткий диск под Журнал БД, чтобы обеспечить эксклюзивный доступ к ресурсам диска, тем самым улучшая производительность. Менее актуально для SSD.
  • Настройка параметров репликации: Оптимизация параметров репликации, таких как размер WAL и частота его отправки, может помочь уменьшить лаг репликации. В PostgreSQL, например, можно настроить параметры wal_level и max_wal_senders для оптимизации процесса репликации.