Ciao Ragazzi,
ho già parlato in un altro articolo della replica con MySQL (Master/Master o Master/Slave).
Quello che non ho detto è che, se la replica avviene tra una macchina Windows e una Linux (o due Windows), di base non viene configurato lato Windows una opzione fondamentale che è expire_logs_days
Questo Parametro è fondamentale perchè altrimenti si rischia di avere un SO intasato da vecchi file mysql-bin che non vengono più utilizzati.
Per configurarlo la sintassi è semplice.
Aprire il file my.ini (C:\Program Data\MYSQL\My Sql Server Y.xx\) ed editarlo come segue:
[mysqld]
expire_logs_days=3
In questo modo diciamo dopo 3 giorni di ruotare i vecchi file di log.
Se non l’abbiamo fatto prima e siamo invasi dai file mysql-bin-0xxx vediamo come potercela cavare per rimuoverli in sicurezza.
(Ricordatevi sempre un backup prima, perchè non va nulla storto, ma Murphy è sempre in agguato….)
ATTENZIONE!!! Non provate a rimuovere manualmente i files dal SO perchè rischiate di compromettere la replica!
Apriamo un Prompt dei Comandi:
Analizziamo le due possibili opzioni:
Opzione 1: PURGE BINARY LOGS TO
Questa prima opzione segue la sintassi:
PURGE BINARY LOGS TO `mysql-bin.000015`;
In questo caso, cancelliamo tutti i log precedenti a mysql-bin.000015 che prima ci siamo accertati essere il file correntemente in uso se siamo MASTER:
Se invece siamo SLAVE, dobbiamo prendere la voce Relay_Master_Log_File(A meno di ritardi tra master/slave i due files sono uguali come in figura):
Opzione 2: PURGE BINARY LOGS BEFORE
Questa seconda opzione segue la sintassi:
PURGE BINARY LOGS BEFORE DATE(NOW() - INTERVAL 1 MONTH) + INTERVAL 0 SECOND;
In questo secondo caso cancelliamo tutti i log prima del mese scorso.
Entrambi i casi sono utili a seconda delle circostanze, ma soprattutto permettono di operare mantenendo la tranquillità di non intaccare la replica principale.
Enjoy!