37 lines
4.1 KiB
Markdown
37 lines
4.1 KiB
Markdown
|
---
|
|||
|
aliases:
|
|||
|
- лаг репликации
|
|||
|
- задержки репликации
|
|||
|
- задержка репликации
|
|||
|
tags:
|
|||
|
- maturity/🌱
|
|||
|
date:
|
|||
|
- - 2024-06-04
|
|||
|
zero-link:
|
|||
|
- "[[../../../meta/zero/00 HighLoad|00 HighLoad]]"
|
|||
|
parents:
|
|||
|
- "[[Репликация БД]]"
|
|||
|
linked:
|
|||
|
---
|
|||
|
Отставание реплики (или лаг репликации) — это проблема, возникающая, когда изменения, выполненные на мастере, не успевают применяться на репликах вовремя. Это может привести к несогласованности данных между мастером и репликами и затруднить выполнение операций, требующих актуальных данных.
|
|||
|
|
|||
|
В нормальной ситуации отставание может достигать 1 секунды.
|
|||
|
|
|||
|
![](../../../meta/files/images/Pasted%20image%2020240219184314.png)
|
|||
|
|
|||
|
Так как в [[../../../meta/zero/00 PostgreSQL|PostgreSQL]] мы передаем не сам запрос, а блоки данных, то отставание по идее должно быть меньше, чем в [[../../../meta/zero/00 MySQL|MySQL]].
|
|||
|
|
|||
|
Что может приводить к лагу:
|
|||
|
- Медленные и сложные запросы: Если реплики выполняют сложные или ресурсоемкие запросы, это может замедлить процесс применения изменений.
|
|||
|
- Сетевые проблемы: Задержки в сети могут замедлить передачу журнала транзакций (WAL) от мастера к репликам.
|
|||
|
- Размер журнала транзакций: Большие объемы изменений могут создать нагрузку на систему репликации, увеличивая время обработки.
|
|||
|
- Проблемы с дисковой подсистемой: Медленные дисковые операции на репликах могут замедлить процесс применения изменений.
|
|||
|
|
|||
|
Рекомендации:
|
|||
|
- Оптимизация запросов: Оптимизация сложных запросов может снизить нагрузку на реплики и ускорить процесс применения изменений. Это включает в себя индексацию, переработку запросов и использование эффективных алгоритмов.
|
|||
|
- Убивайте медленные запросы. Если запрос висит уже 10 секунд, то лучше его прибить.
|
|||
|
- Использование выделенных реплик: Для выполнения сложных запросов или резервного копирования можно использовать выделенные реплики, что позволит снизить нагрузку на основные реплики, обеспечивающие актуальность данных.
|
|||
|
- Подумайте о кросс-СУБД репликации Репликация из реляционной бд в NoSQL
|
|||
|
- Избегайте [[../../database/Write-read pattern|Write-read pattern]]
|
|||
|
- Выделить отдельный жесткий диск под [Журнал БД](../../database/Журнал%20БД.md), чтобы обеспечить эксклюзивный доступ к ресурсам диска, тем самым улучшая производительность. Менее актуально для SSD.
|
|||
|
- Настройка параметров репликации: Оптимизация параметров репликации, таких как размер WAL и частота его отправки, может помочь уменьшить лаг репликации. В PostgreSQL, например, можно настроить параметры wal_level и max_wal_senders для оптимизации процесса репликации.
|