L' PURGE BINARY LOGS
istruzione elimina tutti i file di registro binari elencati nel file di indice del registro prima del nome o della data / ora del file di registro specificato. I file di registro eliminati vengono inoltre rimossi dall'elenco registrato nel file indice, in modo che il file di registro specificato diventi il primo nell'elenco.
Spero che tu abbia eliminato i log binari mysql-bin.000019
usando il comando
PURGE BINARY LOGS TO 'mysql-bin.000019';
Se è necessario eliminare tutti i registri, fare come
PURGE BINARY LOGS TO 'mysql-bin.000025';
Ciò rimuoverà i registri binari fino a mysql-bin.000025
.
AGGIORNARE
Puoi provare
RESET MASTER;
RESET MASTER
Elimina tutti i file di registro binari elencati nel file indice, reimposta il file indice del registro binario come vuoto e crea un nuovo file di registro binario
Gli effetti di RESET MASTER
differiscono da quelli di PURGE BINARY LOGS in 2 modi chiave:
RESET MASTER
rimuove tutti i file di registro binari elencati nel file indice, lasciando solo un singolo file di registro binario vuoto con un suffisso numerico di .000001, mentre la numerazione non viene reimpostata da PURGE BINARY LOGS.
RESET MASTER
non è stato progettato per essere utilizzato mentre sono in esecuzione slave di replica. Il comportamento di RESET MASTER
quando utilizzato mentre gli slave sono in esecuzione non è definito (e quindi non supportato), mentre PURGE BINARY LOGS
può essere utilizzato in modo sicuro mentre gli slave di replica sono in esecuzione.
CAVEAT di RolandoMySQLDBA
Se corri RESET MASTER
con gli slave collegati e funzionanti, il thread IO di ogni slave perderà immediatamente il suo posto. La replica viene quindi interrotta e dovrai dedicare del tempo a sincronizzare nuovamente i dati su tutti gli Slave. Se si desidera eliminare in modo sicuro i registri binari da un master senza interrompere l'integrità della replica, ecco cosa fare:
- Esegui
SHOW SLAVE STATUS\G
su ogni slave.
- Prendi nota di
Relay_Master_Log_File
. Questo è il registro binario la cui ultima istruzione è stata eseguita correttamente nello Slave).
- Da tutti i display di
SHOW SLAVE STATUS\G
, determinare quale Relay_Master_Log_File
è il più vecchio (ad esempio, 'mysql-bin.00123').
- È possibile eseguire
PURGE BINARY LOGS TO 'mysql-bin.00123';
Nessuno degli schiavi perderà il suo posto.
L'effetto complessivo? Questo lascerà dietro i registri binari sul Master le cui dichiarazioni che non sono state ancora eseguite su tutti gli Slave.