sql >> Database teknologi >  >> RDS >> Mysql

Sådan læser du MySQL binære logfiler (BinLog) med mysqlbinlog

MySQL-databaseserveren genererer binære logfiler for hver transaktion til databaserne, forudsat at administratoren ikke deaktiverer eller kommenterer "log-bin"-parameteren i my.cny-konfigurationsfilen. De binære logfiler er skrevet i binært format. Selvom de binære logfiler, eller også kendt som logbin, hovedsageligt bruges til MySQL-databasereplikering, kan det nogle gange være nødvendigt at undersøge eller læse indholdet af binære logfiler i tekstformat, hvor mysqlbinlog-værktøjet vil være praktisk.

Binær logfil, som normalt har et navn med formatet værtsnavn-bin.xxxxxx og gemmes i /var/lib/mysql-biblioteket, kunne ikke åbnes og læses med det samme, da den er i ulæseligt binært format. For at læse de binære logfiler i tekstformat kan vi gøre brug af mysqlbinlog-kommandoen, som også er i stand til at læse relælogfiler skrevet af en slaveserver i et replikeringsopsætning. Relælogfiler har samme format som binære logfiler.

For at bruge mysqlbinlog-værktøjet er enkelt, skal du blot bruge følgende kommandosyntaks til at påkalde mysqlbinlog efter login som root (ellers skal du angive brugernavn og adgangskode) for at shell via SSH:

mysqlbinlog [options] log_file ...

Så for at læse og vise indholdet af den binære logfil ved navn binlog.000001, brug denne kommando:

mysqlbinlog binlog.000001

De binære logfiler og dens data vil sandsynligvis være meget enorme, hvilket gør det næsten umuligt at læse noget på skærmen. Du kan dog overføre output fra mysqlbinlog til en fil, som kan åbnes for senere browsing i teksteditor, ved at bruge følgende kommando:

mysqlbinlog binlog.000001 > filename.txt

For at reducere mængden af ​​data, der hentes fra binære logfiler, er der flere muligheder, der kan bruges til at begrænse de data, der returneres. Blandt de nyttige er anført nedenfor:

–start-datetime=datetime

Begynd at læse den binære log ved den første hændelse med et tidsstempel, der er lig med eller senere end datetime-argumentet. Datetime-værdien er i forhold til den lokale tidszone på den maskine, hvor du kører mysqlbinlog. Værdien skal være i et format, der accepteres for datatyperne DATETIME eller TIMESTAMP. For eksempel:

mysqlbinlog --start-datetime="2005-12-25 11:25:56" binlog.000001

–stop-datetime=datetime

Stop med at læse den binære log ved den første hændelse med et tidsstempel, der er lig med eller bagud til datetime-argumentet. Denne mulighed er nyttig til punkt-i-tidsgendannelse. Se beskrivelsen af ​​valgmuligheden –start-datotid for information om datotidsværdien.

–startposition=N

Begynd at læse den binære log ved den første hændelse med en position lig med N-argumentet. Denne indstilling gælder for den første logfil, der er navngivet på kommandolinjen.

–stop-position=N

Stop med at læse den binære log ved den første hændelse med en position lig med eller større end N-argumentet. Denne indstilling gælder for den sidste logfil, der er navngivet på kommandolinjen.

For mere brugsinformation om mysqlbinlog, besøg her.


  1. Sammenkæd XMLType-noder i Oracle-forespørgsel

  2. LINQ til Java-værktøj

  3. Hvordan bruger man sql*plus i Windows kommandoscript til at styre flowet?

  4. Delvis indeks bruges ikke i ON CONFLICT-klausulen, mens du udfører en upsert i Postgresql