Траблшутинг задержек репликации MySQL: многопоточная репликация (MTS)
- Параметр
Seconds_Behind_MasterвSHOW REPLICA STATUSпостоянно растет и исчисляется часами. - SQL-поток реплики (Applier Thread) загружает только одно ядро CPU на 100%, не успевая за мастером.
- Задержки чтения актуальных данных с Read-реплик клиентами приложения.
1. Диагностика причины отставания реплики
SHOW REPLICA STATUS\G
-- Анализ параметров:
-- Seconds_Behind_Master: секунды задержки
-- Last_SQL_Error: ошибки исполнения
-- Replica_SQL_Running_State: текущее состояние потока (например, Waiting for table metadata lock)2. Включение многопоточной репликации (MTS) в MySQL 8.0
Переведите реплику в многопоточный режим параллельного применения транзакций (по логическим схемам или коммитам логических групп WRITESET):
STOP REPLICA;
-- Количество потоков применения (согласно числу CPU ядер, например 8)
SET GLOBAL replica_parallel_workers = 8;
-- Метод параллелизации: LOGICAL_CLOCK (по группам коммитов мастера)
SET GLOBAL replica_parallel_type = 'LOGICAL_CLOCK';
-- Сохранение порядка транзакций для консистентности
SET GLOBAL replica_preserve_commit_order = ON;
START REPLICA;3. Конфигурация /etc/mysql/my.cnf для мастера и реплики
Настройки на Master (для генерации данных параллелизации):
[mysqld]
binlog_transaction_dependency_tracking = WRITESET
transaction_write_set_extraction = XXHASH64Настройки на Slave:
[mysqld]
replica_parallel_workers = 8
replica_parallel_type = LOGICAL_CLOCK
replica_preserve_commit_order = ON
# Оптимизация дискового сброса для догона мастера
innodb_flush_log_at_trx_commit = 2
sync_binlog = 04. Мониторинг параллельных воркеров репликации
SELECT * FROM performance_schema.replication_applier_status_by_worker; Частые вопросы (FAQ)
Что означает настройка WRITESET на мастере?
Она позволяет мастеру вычислять хеши изменяемых строк. Если две параллельные транзакции не пересекаются по строкам, реплика выполнит их одновременно в разных потоках, даже если они закоммичены в разное время.
Почему при наличии внешних ключей (Foreign Keys) репликация может тормозить?
Каскадные проверки внешних ключей вызывают блокировки строк и мешают параллельному выполнению воркеров MTS, принудительно сериализуя транзакции.