Ну, Exec_Master_Log_Pos
также увеличивается, что указывает на то, что поток SQL действительно работает и применяет изменения. Просто не достаточно быстро, чтобы не отставать от входящих логов, на что указывает скорость увеличения Read_Master_Log_Pos
Exec-pos Read-pos
1: 192464416 893947806
2: 192678304 (+213,888) 908310158 (+14,362,352
3: 193161926 (+483,622) 945765663 (+37,455,505)
Таким образом, входящие журналы (Read-pos) поступают со скоростью, в разы превышающей скорость, с которой репликация может выполнять изменения на ведомом экземпляре.
Задержка репликации является сложной проблемой, и есть много причин этого.
Существует множество параметров конфигурации, которые можно использовать для повышения пропускной способности подчиненного устройства. Вы ничего не описали о своей текущей конфигурации, природе изменений в вашей базе данных или таблицах, которые меняются, поэтому я не могу дать действительно информированные рекомендации. Но ниже приведены некоторые типичные изменения, которые я обычно делаю:
innodb_buffer_pool_size = <high> # depends on server RAM and other factors
innodb_log_file_size = 1G # or more
innodb_flush_log_at_trx_commit = 2
master_info_repository = TABLE
relay_log_info_repository = TABLE
relay_log_recovery = ON
sync_master_info = 0
binlog_format = ROW # make sure all tables have PRIMARY KEY constraints
Подробнее об этих параметрах см. В документации MySQL.
Даже со всеми этими уловками настройки, в конечном итоге вы можете достичь предела, то есть способности раба воспроизводить в одном потоке изменения, которые были созданы во многих потоках на ведущем устройстве.
Возможно, вы сможете использовать многопоточное ведомое устройство, но это не так просто, как кажется, поэтому вам нужно больше узнать об этом, прежде чем вы попробуете это.
Даже с настройкой и многопоточным ведомым устройством, возможно, вы достигли предела своего оборудования. Он просто не может обработать изменения достаточно быстро. Вы можете модернизировать аппаратное обеспечение, чтобы ускорить процессоры и ускорить хранение.
Другим вариантом является снижение скорости изменений в вашей основной базе данных. Либо дросселируйте изменения на ведущем устройстве, либо разверните несколько мастеров с соответствующими им ведомыми устройствами и сбалансируйте изменения на нескольких ведущих устройствах.