Serwer bazy danych MySQL generuje binarne pliki dziennika dla każdej transakcji do baz danych, pod warunkiem, że administrator nie wyłączy ani nie skomentuje parametru „log-bin” w pliku konfiguracyjnym my.cny. Pliki dziennika binarnego są zapisywane w formacie binarnym. Chociaż dzienniki binarne, znane również jako logbin, są używane głównie do celów replikacji bazy danych MySQL, czasami może być konieczne zbadanie lub odczytanie zawartości dzienników binarnych w formacie tekstowym, gdzie przyda się narzędzie mysqlbinlog.
Binarny plik dziennika, który normalnie ma nazwę w formacie host_name-bin.xxxxxx i jest przechowywany w katalogu /var/lib/mysql, nie mógł zostać otwarty i od razu odczytany, ponieważ jest w nieczytelnym formacie binarnym. Aby odczytać logi binarne w formacie tekstowym, możemy skorzystać z polecenia mysqlbinlog, które jest również w stanie odczytać pliki dziennika przekaźnika zapisane przez serwer podrzędny w konfiguracji replikacji. Dzienniki przekaźników mają taki sam format jak pliki dzienników binarnych.
Aby korzystanie z narzędzia mysqlbinlog było proste, wystarczy użyć następującej składni polecenia, aby wywołać mysqlbinlog po zalogowaniu się jako root (w przeciwnym razie musisz podać nazwę użytkownika i hasło) do powłoki przez SSH:
mysqlbinlog [options] log_file ...
Aby odczytać i wyświetlić zawartość binarnego pliku dziennika o nazwie binlog.000001, użyj tego polecenia:
mysqlbinlog binlog.000001
Pliki dziennika binarnego i jego dane mogą być bardzo duże, co sprawia, że prawie niemożliwe jest odczytanie czegokolwiek na ekranie. Możesz jednak przekazać wyjście mysqlbinlog do pliku, który można otworzyć do późniejszego przeglądania w edytorze tekstu, używając następującego polecenia:
mysqlbinlog binlog.000001 > filename.txt
Aby zmniejszyć ilość danych pobieranych z dzienników binarnych, istnieje kilka opcji, których można użyć do ograniczenia danych, które są zwracane. Wśród przydatnych wymieniono poniżej:
–start-datetime=datetime
Rozpocznij odczytywanie dziennika binarnego przy pierwszym zdarzeniu, którego znacznik czasu jest równy lub późniejszy niż argument datetime. Wartość datetime odnosi się do lokalnej strefy czasowej na komputerze, na którym uruchamiasz mysqlbinlog. Wartość powinna być w formacie akceptowanym dla typów danych DATETIME lub TIMESTAMP. Na przykład:
mysqlbinlog --start-datetime="2005-12-25 11:25:56" binlog.000001
–stop-datetime=datetime
Zatrzymaj odczytywanie dziennika binarnego przy pierwszym zdarzeniu, którego znacznik czasu jest równy lub późniejszy niż argument datetime. Ta opcja jest przydatna w przypadku odzyskiwania do określonego momentu. Zobacz opis opcji –start-datetime, aby uzyskać informacje o wartości daty/godziny.
–pozycja-początkowa=N
Rozpocznij odczytywanie dziennika binarnego przy pierwszym zdarzeniu mającym pozycję równą argumentowi N. Ta opcja dotyczy pierwszego pliku dziennika podanego w wierszu poleceń.
–stop-position=N
Zatrzymaj odczytywanie dziennika binarnego przy pierwszym zdarzeniu, którego pozycja jest równa lub większa niż argument N. Ta opcja dotyczy ostatniego pliku dziennika podanego w wierszu poleceń.
Więcej informacji o korzystaniu z mysqlbinlog znajdziesz tutaj.