intermediate
Replication basics
Понимайте primary-replica lag, read routing, failover, binary logs и consistency implications.
Репликация MySQL копирует изменения с primary на replicas через binary log (binlog). По умолчанию применение асинхронное — чтение с replica может быть устаревшим.
-- На replica: сигналы lag
SHOW REPLICA STATUS\G
-- Seconds_Behind_Source (или Seconds_Behind_Master в старых версиях)
-- Осторожно с read/write split
-- Пишем на primary; читаем с replica только если stale допустим
Типовые топологии: один primary и read replicas; ручной failover; managed HA в cloud. GTID упрощает позиционирование при failover. Row-based binlog снижает неоднозначность vs statement-based для недетерминированного SQL.
На интервью: replication lag; почему read-your-writes на replica может не сработать; роль binlog; риски failover (split brain, отставание promoted replica).
Типовые ошибки: критичные чтения с replica без мониторинга lag; ожидание синхронной репликации по умолчанию; failover без проверки gap; длинные транзакции раздувают binlog.
Компромисс — масштаб чтения и доступность против eventual consistency и сложности эксплуатации при failover.
Чеклист:
- Мониторьте lag и рост binlog.
- На replica — только чтения, терпящие stale.
- Failover с учётом GTID.
- Тестируйте promote/failover и переподключение приложения.