Databázový server MySQL generuje binární soubory protokolu pro každou transakci do databází, pokud správce nezakáže nebo nekomentuje parametr „log-bin“ v konfiguračním souboru my.cny. Binární soubory protokolu jsou zapsány v binárním formátu. Přestože se binární protokoly nebo také známé jako logbin používají hlavně pro účely replikace databáze MySQL, někdy může být nutné prozkoumat nebo přečíst obsah binárních protokolů v textovém formátu, kde se bude hodit nástroj mysqlbinlog.
Binární soubor protokolu, který má normálně název ve formátu název_hostitele-bin.xxxxxx a je uložen v adresáři /var/lib/mysql, nebylo možné ihned otevřít a přečíst, protože je v nečitelném binárním formátu. Pro čtení binárních protokolů v textovém formátu můžeme použít příkaz mysqlbinlog, který také dokáže číst soubory protokolu přenosu zapsané podřízeným serverem v nastavení replikace. Protokoly přenosu mají stejný formát jako soubory binárních protokolů.
Použití nástroje mysqlbinlog je jednoduché, jednoduše použijte následující syntaxi příkazu k vyvolání mysqlbinlog po přihlášení jako root (jinak musíte zadat uživatelské jméno a heslo) do shellu přes SSH:
mysqlbinlog [options] log_file ...
Chcete-li tedy přečíst a zobrazit obsah souboru binárního protokolu s názvem binlog.000001, použijte tento příkaz:
mysqlbinlog binlog.000001
Binární soubory protokolu a jejich data budou pravděpodobně velmi velké, takže je téměř nemožné přečíst cokoli na obrazovce. Výstup mysqlbinlog však můžete převést do souboru, který lze otevřít pro pozdější procházení v textovém editoru pomocí následujícího příkazu:
mysqlbinlog binlog.000001 > filename.txt
Chcete-li snížit množství dat načítaných z binárních protokolů, existuje několik možností, které lze použít k omezení vracených dat. Mezi užitečné jsou uvedeny níže:
–start-datetime=datetime
Začněte číst binární protokol při první události, která má časové razítko rovné nebo pozdější než argument datetime. Hodnota datetime je relativní k místnímu časovému pásmu na počítači, kde spouštíte mysqlbinlog. Hodnota by měla být ve formátu akceptovaném pro datové typy DATETIME nebo TIMESTAMP. Například:
mysqlbinlog --start-datetime="2005-12-25 11:25:56" binlog.000001
–stop-datetime=datetime
Zastavte čtení binárního protokolu při první události, která má časové razítko stejné nebo pozdější než argument datetime. Tato možnost je užitečná pro obnovení v určitém okamžiku. Informace o hodnotě datetime naleznete v popisu volby –start-datetime.
–start-position=N
Začněte číst binární protokol při první události, která má pozici rovnou argumentu N. Tato možnost se vztahuje na první soubor protokolu pojmenovaný na příkazovém řádku.
–stop-position=N
Zastavte čtení binárního protokolu při první události s pozicí rovnou nebo větší než argument N. Tato možnost se vztahuje na poslední soubor protokolu pojmenovaný na příkazovém řádku.
Další informace o použití mysqlbinlog naleznete zde.