Quale formato di registro binario stai usando?Stai usando ROW o STATEMENT?
SHOW GLOBAL VARIABLES LIKE 'binlog_format';
Se si utilizza ROW come formato binlog fare in modo che tutti i tavoli ha primaria o univoca chiave:
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;
Se si esegue ad esempio una istruzione delete sul master per eliminare 1 milione di record su una tabella senza un PK o una chiave univoca, solo una scansione completa della tabella avverrà dal lato del master, che non è il caso dello slave.
Quando ROW binlog_format viene utilizzato, MySQL scrive le modifiche alle righe nei registri binari (non come una dichiarazione come STATEMENT binlog_format) e tale modifica verrà applicata sul lato dello slave riga per riga, che significa una tabella completa di 1 milione la scansione avverrà sullo slave per riflettere solo un'istruzione delete sul master e questo sta causando un problema di ritardo dello slave.
si dispone di tabelle di bloccaggio? –
non che io sappia di – Ran
alla fine lo slave si aggiornerà, a meno che tu non abbia tonnellate di query come aggiornamenti e inserimenti sul master. hai un sacco di domande provenienti dal server? –