sql >> Databasteknik >  >> RDS >> Mysql

Hur man läser MySQL binära loggfiler (BinLog) med mysqlbinlog

MySQL-databasservern genererar binära loggfiler för varje transaktion till databaserna, förutsatt att administratören inte inaktiverar eller kommenterar "log-bin"-parametern i my.cny-konfigurationsfilen. De binära loggfilerna skrivs i binärt format. Även om de binära loggarna, eller även känd som logbin, huvudsakligen används för MySQL-databasreplikering, kan du ibland behöva undersöka eller läsa innehållet i binära loggar i textformat, där mysqlbinlog-verktyget kommer att vara praktiskt.

Binär loggfil, som normalt har ett namn med formatet värdnamn-bin.xxxxxx och lagras i katalogen /var/lib/mysql, kunde inte öppnas och läsas direkt eftersom den är i oläsligt binärt format. För att läsa de binära loggarna i textformat kan vi använda mysqlbinlog-kommandot, som också kan läsa reläloggfiler skrivna av en slavserver i en replikeringsinställning. Reläloggar har samma format som binära loggfiler.

Att använda mysqlbinlog-verktyget är enkelt, använd helt enkelt följande kommandosyntax för att anropa mysqlbinlog efter inloggning som root (annars måste du ange användarnamn och lösenord) för att skala via SSH:

mysqlbinlog [options] log_file ...

Så för att läsa och visa innehållet i den binära loggfilen med namnet binlog.000001, använd det här kommandot:

mysqlbinlog binlog.000001

De binära loggfilerna och dess data kommer sannolikt att vara mycket stora, vilket gör det nästan omöjligt att läsa någonting på skärmen. Du kan dock överföra utdata från mysqlbinlog till en fil som kan öppnas för senare bläddring i textredigeraren, genom att använda följande kommando:

mysqlbinlog binlog.000001 > filename.txt

För att minska mängden data som hämtas från binära loggar finns det flera alternativ som kan användas för att begränsa den data som returneras. Bland de användbara är listade nedan:

–start-datetime=datetime

Börja läsa den binära loggen vid den första händelsen med en tidsstämpel som är lika med eller senare än datetime-argumentet. Datetime-värdet är relativt den lokala tidszonen på maskinen där du kör mysqlbinlog. Värdet ska vara i ett format som accepteras för datatyperna DATETIME eller TIMESTAMP. Till exempel:

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

–stop-datetime=datetime

Sluta läsa den binära loggen vid den första händelsen med en tidsstämpel som är lika med eller efter argumentet datetime. Det här alternativet är användbart för punkt-i-tid återställning. Se beskrivningen av alternativet –start-datetime för information om datetime-värdet.

–startposition=N

Börja läsa den binära loggen vid den första händelsen med en position lika med N-argumentet. Det här alternativet gäller för den första loggfilen som namnges på kommandoraden.

–stop-position=N

Sluta läsa den binära loggen vid den första händelsen med en position lika med eller större än N-argumentet. Det här alternativet gäller för den sista loggfilen som namnges på kommandoraden.

För mer användningsinformation om mysqlbinlog, besök här.


  1. SQL FOREIGN KEY Begränsning:The Ultimate, Easy Guide för nybörjare

  2. Returnera id om en rad finns, INSERT annars

  3. Relationellt databashanteringssystem (RDBMS):MSSQL vs MySQL

  4. Frågefel med tvetydigt kolumnnamn i SQL