Какой двоичный формат журнала вы используете? Вы используете ROW или STATEMENT?
SHOW GLOBAL VARIABLES LIKE 'binlog_format';
Если вы используете ROW в качестве формата binlog, убедитесь, что все ваши таблицы имеют первичный или уникальный ключ:
SELECT t.table_schema,t.table_name,engine
FROM information_schema.tables t
INNER JOIN information_schema .columns c
on t.table_schema=c.table_schema
and t.table_name=c.table_name
and t.table_schema not in ('performance_schema','information_schema','mysql')
GROUP BY t.table_schema,t.table_name
HAVING sum(if(column_key in ('PRI','UNI'), 1,0)) =0;
Если вы выполните, например, один оператор удаления на главном сервере, чтобы удалить 1 миллион записей в таблице без PK или уникального ключа, тогда только одна полная проверка таблицы будет выполнена на стороне главного устройства, что не имеет места на ведомом устройстве.
Когда используется ROW binlog_format, MySQL записывает изменения строк в двоичные журналы (не как оператор, такой как STATEMENT binlog_format), и это изменение будет применяться на стороне ведомого строка за строкой, что означает полное сканирование таблицы на 1 миллион будет происходить на подчиненном устройстве, чтобы отразить только один оператор удаления на главном устройстве, и это вызывает проблему отставания подчиненного устройства.