Usare mysqlbinlog
mysqlbinlog si esegue dalla riga di comando in questo modo:
shell> mysqlbinlog [opzioni] file_di_log ...
Per esempio, ecco come mostrare i contenuti di un file di log binario che si chiama "mariadb-bin.000152":
shell> mysqlbinlog mariadb-bin.000152
Se si sta utilizzando il logging basato sulle istruzioni (predefinito), l'output contiene le istruzioni SQL, l'id del server su cui sono state eseguite, un timestamp e quanto tempo è durata l'esecuzione. Se si sta utilizzando il logging basato sui record, l'output di un evento non include le istruzioni SQL ma solo le righe modificate.
L'output di mysqlbinlog può essere usato per chiedere al client mysql di ripetere le istruzioni contenute nel log binario. Questo è utile per effettuare il recupero dei dati dopo un crash del server. Ecco un esempio:
shell> mysqlbinlog nomifile-binlog | mysql -u root -p
Se si desidera avere la possibilità di modificare il file prima di eseguirlo sul database, si usi il flag '-r' per redirezionare l'output verso un file:
shell> mysqlbinlog -r filename nomifile-binlog
E' possibile aprire il file e cancellare le istruzioni che non si desidera eseguire (come eventuali DROP DATABASE). Una volta che si è soddisfatti del file, si può eseguirlo in questo modo:
shell> mysql -u root -p < nomefile
Si presti attenzione nell'eseguire più file di log in una singola connessione,
soprattutto se uno o più contengono istruzioni CREATE TEMPORARY TABLE ...
. Le tabelle temporanee vengono eliminate quando la sessione che le ha create termina, quindi se si stanno eseguendo più file in una sola volta (connessioni multiple) e uno di essi crea una tabella temporanea, se uno dei
file successivi tenterà di utilizzarla otterrà un errore 'unknown table'.
Per eseguire diversi file di log in una sola connessione, li si elenchi nella riga di comando con mysqlbinlog:
shell> mysqlbinlog mariadb-bin.000001 mariadb-bin.000002 | mysql -u root -p
Se si desidera modificare manualmente i file prima di eseguirli, li si unisca in un solo file. Ecco un esempio:
shell> mysqlbinlog mariadb-bin.000001 > /tmp/mariadb-bin.sql shell> mysqlbinlog mariadb-bin.000002 >> /tmp/mariadb-bin.sql shell> # make any edits shell> mysql -u root -p -e "source /tmp/mariadb-bin.sql"