sql >> Databáze >  >> RDS >> Mysql

Jak číst binární soubory protokolu MySQL (BinLog) pomocí mysqlbinlog

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.


  1. Jak propojit Struts 2 s Hibernate a PostgreSQL

  2. Proč používat Select Top 100 Percent?

  3. Porovnání replikačních řešení od Oracle a MySQL

  4. Výzvy škálování databáze Moodle PostgreSQL