sql >> Database >  >> RDS >> Mysql

Hoe MySQL binaire logbestanden (BinLog) te lezen met mysqlbinlog

De MySQL-databaseserver genereert binaire logbestanden voor elke transactie naar de databases, op voorwaarde dat de beheerder de parameter "log-bin" in het my.cny-configuratiebestand niet uitschakelt of becommentarieert. De binaire logbestanden zijn geschreven in binair formaat. Hoewel de binaire logboeken, of ook wel logbin genoemd, voornamelijk worden gebruikt voor MySQL-databasereplicatie, moet u soms de inhoud van binaire logboeken in tekstformaat onderzoeken of lezen, waarbij het hulpprogramma mysqlbinlog van pas zal komen.

Binair logbestand, dat normaal gesproken een naam heeft met het formaat host_name-bin.xxxxxx en wordt opgeslagen in de map /var/lib/mysql, kon niet meteen worden geopend en gelezen omdat het in onleesbaar binair formaat is. Om de binaire logs in tekstformaat te lezen, kunnen we gebruik maken van de mysqlbinlog-opdracht, die ook in staat is om relay-logbestanden te lezen die zijn geschreven door een slave-server in een replicatie-setup. Relay-logbestanden hebben hetzelfde formaat als binaire logbestanden.

Het gebruik van het hulpprogramma mysqlbinlog is eenvoudig, gebruik gewoon de volgende opdrachtsyntaxis om mysqlbinlog op te roepen nadat u als root hebt ingelogd (anders moet u een gebruikersnaam en wachtwoord opgeven) naar shell via SSH:

mysqlbinlog [options] log_file ...

Dus om de inhoud van het binaire logbestand met de naam binlog.000001 te lezen en weer te geven, gebruik je deze opdracht:

mysqlbinlog binlog.000001

De binaire logbestanden en de bijbehorende gegevens zijn waarschijnlijk erg groot, waardoor het bijna onmogelijk is om iets op het scherm te lezen. U kunt de uitvoer van mysqlbinlog echter in een bestand pipen dat kan worden geopend om later in de teksteditor te bladeren door het volgende commando te gebruiken:

mysqlbinlog binlog.000001 > filename.txt

Om de hoeveelheid gegevens die wordt opgehaald uit binaire logboeken te verminderen, zijn er verschillende opties die kunnen worden gebruikt om de gegevens die worden geretourneerd te beperken. Een van de handige zijn hieronder opgesomd:

–start-datetime=datetime

Begin met het lezen van het binaire logboek bij de eerste gebeurtenis met een tijdstempel gelijk aan of later dan het datetime-argument. De datetime-waarde is relatief ten opzichte van de lokale tijdzone op de computer waarop u mysqlbinlog uitvoert. De waarde moet een indeling hebben die wordt geaccepteerd voor de gegevenstypen DATETIME of TIMESTAMP. Bijvoorbeeld:

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

–stop-datetime=datetime

Stop met het lezen van het binaire logboek bij de eerste gebeurtenis met een tijdstempel dat gelijk is aan of achter het argument datetime staat. Deze optie is handig voor herstel op een bepaald tijdstip. Zie de beschrijving van de optie –start-datetime voor informatie over de datetime-waarde.

–start-position=N

Begin met het lezen van het binaire logboek bij de eerste gebeurtenis met een positie die gelijk is aan het N-argument. Deze optie is van toepassing op het eerste logbestand dat op de opdrachtregel wordt genoemd.

–stop-position=N

Stop met het lezen van het binaire logboek bij de eerste gebeurtenis met een positie die gelijk is aan of groter is dan het N-argument. Deze optie is van toepassing op het laatste logbestand dat op de opdrachtregel wordt genoemd.

Voor meer gebruiksinformatie over mysqlbinlog, bezoek hier.


  1. Overeenkomsten en verschillen tussen RANK-, DENSE_RANK- en ROW_NUMBER-functies

  2. Hoe de n-de rij in een SQL-databasetabel te selecteren?

  3. Hoe MySQL binaire logbestanden (BinLog) te lezen met mysqlbinlog

  4. Hoe LOCATE() werkt in MariaDB