Il server di database MySQL genera file di registro binari per ogni transazione ai database, a condizione che l'amministratore non disabiliti o commenti il parametro "log-bin" nel file di configurazione my.cny. I file di registro binari sono scritti in formato binario. Sebbene i log binari, o anche conosciuti come logbin, siano usati principalmente per la replica del database MySQL, a volte potrebbe essere necessario esaminare o leggere il contenuto dei log binari in formato testo, dove l'utilità mysqlbinlog tornerà utile.
Il file di registro binario, che normalmente ha un nome con il formato host_name-bin.xxxxxx e archiviato nella directory /var/lib/mysql, non può essere aperto e letto immediatamente poiché è in un formato binario illeggibile. Per leggere i log binari in formato testo, possiamo utilizzare il comando mysqlbinlog, che è anche in grado di leggere i file di log di inoltro scritti da un server slave in una configurazione di replica. I registri di inoltro hanno lo stesso formato dei file di registro binari.
Usare l'utilità mysqlbinlog è semplice, usa semplicemente la seguente sintassi del comando per invocare mysqlbinlog dopo aver effettuato l'accesso come root (altrimenti devi specificare nome utente e password) per eseguire la shell tramite SSH:
mysqlbinlog [options] log_file ...
Quindi, per leggere e visualizzare il contenuto del file di registro binario denominato binlog.000001, utilizzare questo comando:
mysqlbinlog binlog.000001
È probabile che i file di registro binari e i relativi dati siano molto grandi, rendendo così quasi impossibile leggere qualsiasi cosa sullo schermo. Tuttavia, puoi reindirizzare l'output di mysqlbinlog in un file che può essere aperto per una successiva navigazione nell'editor di testo, utilizzando il comando seguente:
mysqlbinlog binlog.000001 > filename.txt
Per ridurre la quantità di dati recuperati dai registri binari, sono disponibili diverse opzioni che possono essere utilizzate per limitare i dati restituiti. Tra quelli utili sono elencati di seguito:
–start-datetime=datetime
Inizia a leggere il registro binario al primo evento con un timestamp uguale o successivo all'argomento datetime. Il valore datetime è relativo al fuso orario locale sul computer in cui esegui mysqlbinlog. Il valore deve essere in un formato accettato per i tipi di dati DATETIME o TIMESTAMP. Ad esempio:
mysqlbinlog --start-datetime="2005-12-25 11:25:56" binlog.000001
–stop-datetime=datetime
Interrompere la lettura del registro binario al primo evento con timestamp uguale o posteriore all'argomento datetime. Questa opzione è utile per il ripristino temporizzato. Consulta la descrizione dell'opzione –start-datetime per informazioni sul valore datetime.
–posizione-inizio=N
Inizia a leggere il log binario al primo evento avente una posizione uguale all'argomento N. Questa opzione si applica al primo file di registro denominato sulla riga di comando.
–posizione-stop=N
Interrompe la lettura del log binario al primo evento avente una posizione uguale o maggiore dell'argomento N. Questa opzione si applica all'ultimo file di registro denominato sulla riga di comando.
Per ulteriori informazioni sull'utilizzo di mysqlbinlog, visitare qui.