mariadb-binlog(1): Skillnad mellan sidversioner
Admin (diskussion | bidrag) |
Admin (diskussion | bidrag) |
||
| Rad 970: | Rad 970: | ||
== UPPHOVSRÄTT == | == UPPHOVSRÄTT == | ||
Copyright 2007-2008 MySQL AB, 2008-2010 Sun Microsystems, Inc., | Copyright 2007-2008 MySQL AB, 2008-2010 Sun Microsystems, Inc., | ||
2010-2025 MariaDB Foundation | 2010-2025 MariaDB Foundation | ||
| Rad 988: | Rad 987: | ||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA eller se | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA eller se | ||
http://www.gnu.org/licenses/. | http://www.gnu.org/licenses/. | ||
== ANMÄRKNINGAR == | == ANMÄRKNINGAR == | ||
Versionen från 18 april 2026 kl. 11.35
mariadb-binlog(1)
NAMN
mariadb-binlog - verktyg för att bearbeta binärloggfiler (mariadb- binlog är nu en symbolisk länk till mariadb-binlog)
SYNOPSIS
mariadb-binlog [alternativ] loggfil ...
BESKRIVNING
Serverns binärlogg består av filer som innehåller ”händelser” som
beskriver ändringar i databasinnehåll. Servern skriver dessa filer i
binärt format. För att visa deras innehåll i textformat använder du
verktyget mariadb-binlog. Du kan också använda mariadb-binlog för att
visa innehållet i relay-loggfiler som skrivs av en slavserver i en
replikeringsmiljö, eftersom relay-loggar har samma format som
binärloggar.
Anropa mariadb-binlog så här:
shell> mariadb-binlog [alternativ] loggfil ...
Till exempel, för att visa innehållet i binärloggfilen med namnet
binlog.000003, använd detta kommando:
shell> mariadb-binlog binlog.0000003
Utdata innehåller händelserna i binlog.000003. För satsbaserad loggning
innehåller händelseinformation SQL-satsen, ID:t för servern där den
kördes, tidsstämpeln när satsen kördes, hur lång tid den tog, och så
vidare. För radbaserad loggning anger händelsen en radändring snarare
än en SQL-sats.
Händelser föregås av rubrikkommentarer som ger ytterligare information.
Till exempel:
# at 141
#100309 9:28:36 server id 123 end_log_pos 245
Query thread_id=3350 exec_time=11 error_code=0
På första raden anger talet efter at startpositionen för händelsen i
binärloggfilen.
Den andra raden börjar med datum och tid som anger när satsen startade
på servern där händelsen uppstod. Vid replikering propagieras denna
tidsstämpel till slavservrar. server id är värdet på server_id för den
server där händelsen uppstod. end_log_pos anger var nästa händelse
börjar (det vill säga, det är slutpositionen för den aktuella
händelsen + 1). thread_id anger vilken tråd som körde händelsen.
exec_time är tiden som gick åt för att köra händelsen på en master-
server. På en slav är det skillnaden mellan sluttiden för körningen på
slaven och starttiden för körningen på mastern. Skillnaden fungerar som
en indikator på hur mycket replikeringen ligger efter mastern.
error_code anger resultatet av att köra händelsen. Noll betyder att
inget fel inträffade.
Utdata från mariadb-binlog kan köras igen (till exempel genom att
använda den som indata till mariadb) för att utföra satserna i loggen
på nytt. Detta är användbart vid återställning efter en serverkrasch.
För fler användningsexempel, se diskussionen längre fram i detta
avsnitt.
Normalt använder du mariadb-binlog för att läsa binärloggfiler direkt
och applicera dem på den lokala MariaDB-servern. Det är också möjligt
att läsa binärloggar från en fjärrserver med alternativet
--read-from-remote-server. För att läsa binärloggar från fjärrserver
kan anslutningsparametrar anges för att visa hur anslutningen ska
göras. Dessa alternativ är --host, --password, --port, --protocol,
--socket och --user; de ignoreras om du inte också använder
alternativet --read-from-remote-server.
mariadb-binlog stöder följande alternativ, som kan anges på
kommandoraden eller i alternativgrupperna [mariadb-binlog] och
[client].
• --help, -?
Visa en hjälptext och avsluta.
• --base64-output=värde
Detta alternativ avgör när händelser ska visas kodade som base64-
strängar med BINLOG-satser. Alternativet har följande tillåtna
värden (skiftlägesokänsligt):
• AUTO ("automatic") eller UNSPEC ("unspecified") visar BINLOG-
satser automatiskt när det behövs (det vill säga för format-
descriptionshändelser och radhändelser). Detta är standard om
inget alternativ för --base64-output anges.
Observera
Automatisk BINLOG-visning är det enda säkra beteendet om
du tänker använda utdata från mariadb-binlog för att köra
om innehållet i binärloggfiler. De andra alternativvärdena
är endast avsedda för felsökning eller test, eftersom de
kan ge utdata som inte inkluderar alla händelser i
körbart format.
• NEVER gör att BINLOG-satser inte visas.
mariadb-binlog avslutas med fel om en radhändelse hittas som
måste visas med BINLOG.
• DECODE-ROWS anger för mariadb-binlog att du avser att
radhändelser ska avkodas och visas som kommenterade SQL-
satser genom att du också anger alternativet --verbose.
Precis som NEVER undertrycker DECODE-ROWS visning av
BINLOG-satser, men till skillnad från NEVER avslutas det
inte med fel om en radhändelse hittas.
--base64-output kan anges som --base64-output eller
--skip-base64-output (med betydelsen AUTO eller NEVER).
För exempel som visar effekten av --base64-output och
--verbose på utdata för radhändelser, se avsnittet
“MARIADB-BINLOG VISNING AV RADHÄNDELSER”.
• --binlog-row-event-max-size=path
Katalogen där teckenuppsättningar är installerade.
• --character-sets-dir=path
Katalogen där teckenuppsättningar är installerade.
• --database=db_name, -d db_name
Detta alternativ gör att mariadb-binlog skriver ut poster från
binärloggen (endast lokal logg) som inträffar medan db_name har
valts som standarddatabas genom USE.
Alternativet --database för mariadb-binlog liknar alternativet
--binlog-do-db för mariadbd, men kan bara användas för att ange en
databas. Om --database anges flera gånger används endast den sista
förekomsten.
Effekten av detta alternativ beror på om satsbaserat eller
radbaserat loggningsformat används, på samma sätt som effekten av
--binlog-do-db beror på om satsbaserat eller radbaserat loggning
används.
Satsbaserad loggning. Alternativet --database fungerar så här:
• Medan db_name är standarddatabas skrivs satser ut oavsett om
de ändrar tabeller i db_name eller i en annan databas.
• Om db_name inte är vald som standarddatabas skrivs satser inte
ut, även om de ändrar tabeller i db_name.
• Det finns ett undantag för CREATE DATABASE, ALTER DATABASE
och DROP DATABASE. Den databas som skapas, ändras eller tas
bort betraktas som standarddatabas när det avgörs om satsen
ska skrivas ut.
Anta att binärloggen skapades genom att köra följande satser
med satsbaserad loggning:
INSERT INTO test.t1 (i) VALUES(100);
INSERT INTO db2.t2 (j) VALUES(200);
USE test;
INSERT INTO test.t1 (i) VALUES(101);
INSERT INTO t1 (i) VALUES(102);
INSERT INTO db2.t2 (j) VALUES(201);
USE db2;
INSERT INTO test.t1 (i) VALUES(103);
INSERT INTO db2.t2 (j) VALUES(202);
INSERT INTO t2 (j) VALUES(203);
mariadb-binlog --database=test skriver inte ut de två första
INSERT-satserna eftersom det inte finns någon standarddatabas.
Den skriver ut de tre INSERT-satserna efter USE test, men inte
de tre INSERT-satserna efter USE db2.
mariadb-binlog --database=db2 skriver inte ut de två första
INSERT-satserna eftersom det inte finns någon standarddatabas.
Den skriver inte ut de tre INSERT-satserna efter USE test, men
skriver ut de tre INSERT-satserna efter USE db2.
Radbaserad loggning. mariadb-binlog skriver bara ut poster som
ändrar tabeller som tillhör db_name. Standarddatabasen har
ingen effekt på detta. Anta att binärloggen som just
beskrevs skapades med radbaserad loggning i stället för
satsbaserad loggning. mariadb-binlog --database=test skriver
bara ut de poster som ändrar t1 i databasen test, oavsett om
USE användes eller vilken standarddatabas som är vald. Om en
server kör med binlog_format satt till MIXED och du vill att
det ska vara möjligt att använda mariadb-binlog med
alternativet --database, måste du säkerställa att tabeller
som ändras ligger i databasen som valts av USE. (I synnerhet
bör inga uppdateringar över databaser användas.)
Observera
Detta alternativ fungerade inte korrekt för mariadb-
binlog med radbaserad loggning före MySQL 5.1.37.
• --debug[=debug_options], -# [debug_options]
Skriv en felsökningslogg. En typisk sträng för debug_options är
'd:t:o,file_name'. Standardvärdet är 'd:t:o,/tmp/mariadb-
binlog.trace'.
• --debug-check
Skriv ut viss felsökningsinformation när programmet avslutas.
• --debug-info
Skriv ut felsökningsinformation samt statistik över minnes- och
CPU-användning när programmet avslutas.
• --defaults-extra-file=name
Läs den här filen efter att de globala filerna har lästs.
• --defaults-file=name
Läs endast standardalternativ från den angivna filen.
• --default-auth=name
Standardplugin för klientautentisering att använda.
• --disable-log-bin, -D
Inaktivera binär loggning. Detta är användbart för att undvika en
oändlig loop om du använder alternativet --to-last-log och skickar
utdata till samma MariaDB-server. Detta alternativ är också
användbart vid återställning efter en krasch för att undvika
duplicering av satser som du redan har loggat.
Detta alternativ kräver att du har privilegiet SUPER. Det gör att
mariadb-binlog inkluderar en sats av typen SET sql_log_bin = 0 i
sin utdata för att stänga av binär loggning för återstående
utdata. SET-satsen är verkningslös om du inte har privilegiet
SUPER.
• --flashback, -B
Stöd för flashback-läge.
• --force-if-open
Tvinga om binärloggen inte stängdes korrekt. Standard är på;
använd --skip-force-if-open för att inaktivera.
• --force-read, -f
Med detta alternativ, om mariadb-binlog läser en binärlogghändelse
som den inte känner igen, skrivs en varning ut, händelsen
ignoreras och läsningen fortsätter. Utan detta alternativ stannar
mariadb-binlog om den läser en sådan händelse.
• --hexdump, -H
Visa en hexadump av loggen i kommentarer, enligt beskrivningen i
avsnittet “MARIADB-BINLOG HEXDUMP-FORMAT”. Hex-utdata kan vara
användbara vid felsökning av replikering.
• --host=host_name, -h host_name
Hämta binärloggen från MariaDB-servern på den angivna värden.
• --local-load=path, -l path
Förbered lokala temporära filer för LOAD DATA INFILE i den angivna
katalogen.
• --no-defaults
Läs inga standardalternativ från någon alternativfil.
• --offset=N, -o N
Hoppa över de första N posterna i loggen.
• --open-files-limit=NUM
Sätter variabeln open_files_limit, som används för att reservera
filbeskrivare för mariadb-binlog.
• --password[=password], -p[password]
Lösenordet som ska användas vid anslutning till servern. Om du
använder den korta formen (-p) kan du inte ha ett mellanslag
mellan alternativet och lösenordet. Om du utelämnar värdet för
password efter alternativet --password eller -p på kommandoraden,
frågar mariadb-binlog efter det.
Att ange ett lösenord på kommandoraden bör betraktas som osäkert.
Du kan använda en alternativfil för att undvika att ge lösenordet
på kommandoraden.
• --plugin-dir=dir_name
Katalog för pluginer på klientsidan.
• --print-defaults
Skriv ut programmets argumentlista från alla alternativfiler och
avsluta.
• --port=port_num, -P port_num
TCP/IP-portnumret som ska användas för anslutning till en
fjärrserver, eller 0 för standard enligt följande ordning:
my.cnf, $MYSQL_TCP_PORT, /etc/services, inbyggd standard (3306).
Tvingar --protocol=tcp när det anges på kommandoraden utan andra
anslutningsegenskaper.
• --protocol={TCP|SOCKET|PIPE|MEMORY}
Vilket anslutningsprotokoll som ska användas för att ansluta till
servern. Detta är användbart när andra anslutningsparametrar
normalt skulle orsaka att ett annat protokoll används än det du
vill ha.
• --raw
Kräver -R. Skriv ut rå binärloggdata i stället för SQL-satser.
Utdatafiler namnges efter serverloggar.
• --read-from-remote-server, -R
Läs binärloggen från en MariaDB-server i stället för att läsa en
lokal loggfil. Alla anslutningsparametrar ignoreras om inte detta
alternativ också anges. Dessa alternativ är --host, --password,
--port, --protocol, --socket och --user.
Detta alternativ kräver att fjärrservern är igång. Det fungerar
bara för binärloggfiler på fjärrservern, inte relay-loggfiler.
• --result-file=name, -r name
Skicka utdata till den angivna filen. Med --raw är detta ett
prefix för filnamnen.
• --rewrite-db=name, -r name
Uppdaterar till en databas med ett annat namn än originalet.
Exempel: rewrite-db='from->to'. För händelser som binärloggas som
satser innebär omskrivning av databasen att en sats standard-
databas ändras från db1 till db2. Ingen satsanalys eller omskriv-
ning av något slag görs, det vill säga om man uttryckligen anger
"db1.tbl" i satsen så ändras inte den förekomsten till "db2.tbl".
Radbaserade händelser skrivs om korrekt så att de använder det nya
databasnamnet. Filtrering (till exempel med --database=name)
sker efter att databasomskrivningarna har utförts. Om du använder
detta alternativ på kommandoraden och ">" har särskild betydelse
för din kommandotolk, citera värdet (t.ex. --rewrite-
db="oldname->newname").
• --server-id=id
Visa endast de händelser som skapats av servern med det angivna
server-ID:t.
• --set-charset=charset_name
Lägg till en SET NAMES charset_name-sats i utdata för att ange
vilken teckenuppsättning som ska användas vid behandling av
loggfiler.
• --short-form, -s
Visa bara satserna som finns i loggen, ingen extra information och
inga radbaserade händelser. Detta är endast för test och bör inte
användas i produktionssystem. Om du vill undertrycka base64-
utdata, överväg att använda --base64-output=never i stället.
• --socket=path, -S path
För anslutningar till localhost, Unix-socketfilen som ska
användas, eller på Windows namnet på det namngivna röret som ska
användas. Tvingar --protocol=socket när det anges på
kommandoraden utan andra anslutningsegenskaper; på Windows
tvingar det --protocol=pipe.
• --start-datetime=datetime
Börja läsa binärloggen vid den första händelsen som har en
tidsstämpel lika med eller senare än argumentet datetime.
Värdet datetime är relativt den lokala tidszonen på den maskin där
du kör mariadb-binlog. Värdet ska vara i ett format som accepteras
för datatyperna DATETIME eller TIMESTAMP. Till exempel:
shell> mariadb-binlog --start-datetime="2014-12-25 11:25:56" binlog.000003
Detta alternativ är användbart för punkt-i-tid-återställning.
• --start-position=N, -j N
Börja läsa binärloggen vid N. Typen kan antingen vara ett positivt
heltal eller en GTID-lista. När ett positivt heltal används gäller
värdet endast för den första binärloggen som skickas på
kommandoraden, och den första händelsen som har en position lika
med eller större än N skrivs ut. I GTID-läge kan flera GTID:er
skickas som en kommaseparerad lista, där var och en måste ha ett
unikt domän-ID. Listan representerar det GTID-binärloggstillstånd
som klienten (en annan "replika"-server) känner till. Därför är
varje GTID exklusiv; endast händelser efter ett visst sekvens-
nummer skrivs ut så att användare kan ta emot händelser efter sitt
nuvarande tillstånd.
Detta alternativ är användbart för punkt-i-tid-återställning.
• --gtid-strict-mode
Bearbeta binärloggen enligt specifikationen för gtid-strict-mode.
Start- och stopp-positionerna verifieras så att de uppfyller
jämförelsevillkoret start < stop. Sekvensnummer i varje GTID-domän
måste bestå av monotont ökande sekvenser.
• --stop-datetime=datetime
Sluta läsa binärloggen vid den första händelsen som har en
tidsstämpel lika med eller senare än argumentet datetime. Detta
alternativ är användbart för punkt-i-tid-återställning. Se
beskrivningen av alternativet --start-datetime för information om
värdet datetime.
Detta alternativ är användbart för punkt-i-tid-återställning.
• --stop-never
Vänta på mer data från servern i stället för att stanna vid slutet
av den sista loggen. Innebär --to-last-log.
• --stop-never-slave-server-id
Det slave server_id som används för --read-from-remote-server
--stop-never.
• --stop-position=N
Sluta läsa binärloggen vid den första händelsen som har en position
lika med eller större än N. Typen kan antingen vara ett positivt
heltal eller en GTID-lista. När ett positivt heltal används gäller
värdet endast för den sista loggfilen som anges på
kommandoraden. I GTID-läge kan flera GTID:er skickas som en
kommaseparerad lista, där var och en måste ha ett unikt domän-ID.
Varje GTID är inkluderande; endast händelser upp till de angivna
sekvensnumren skrivs ut.
Detta alternativ är användbart för punkt-i-tid-återställning.
• --table, -T
Lista poster endast för denna tabell (endast lokal logg).
• --to-last-log, -t
Stanna inte vid slutet av den begärda binärloggen från en
MariaDB-server, utan fortsätt i stället skriva ut till slutet av
den sista binärloggen. Om du skickar utdata till samma MariaDB-
server kan detta leda till en oändlig loop, så detta alternativ
kräver --read-from-remote-server.
• --user=user_name, -u user_name
MariaDB-användarnamnet som ska användas vid anslutning till en
fjärrserver.
• --verbose, -v
Återskapa radhändelser och visa dem som kommenterade SQL-satser.
Om detta alternativ anges två gånger innehåller utdata kommentarer
som anger kolumndatatyper och viss metadata. Om det anges tre
gånger innehåller utdata diagnostiska varningar om händelse-
integritet innan programmet avslutas.
För exempel som visar effekten av --base64-output och --verbose på
utdata för radhändelser, se avsnittet “MARIADB-BINLOG VISNING AV
RADHÄNDELSER”.
• --version, -V
Visa versionsinformation och avsluta.
Du kan också sätta följande variabel med syntaxen --var_name=value:
• open_files_limit
Ange antalet öppna filbeskrivare som ska reserveras.
Du kan skicka utdata från mariadb-binlog till klienten mariadb för att
köra de händelser som finns i binärloggen. Denna teknik används för
återställning efter en krasch när du har en gammal säkerhetskopia. Till
exempel:
shell> mariadb-binlog binlog.000001 | mariadb -u root -p
Eller:
shell> mariadb-binlog binlog.[0-9]* | mariadb -u root -p
Du kan också omdirigera utdata från mariadb-binlog till en textfil om
du först behöver ändra satsloggen (till exempel för att ta bort satser
som du av någon anledning inte vill köra). Efter att ha redigerat
filen, kör satserna den innehåller genom att använda den som indata
till programmet mariadb:
shell> mariadb-binlog binlog.000001 > tmpfile
shell> ... edit tmpfile ...
shell> mariadb -u root -p < tmpfile
När mariadb-binlog anropas med alternativet --start-position visar den
bara de händelser vars offset i binärloggen är större än eller lika
med en given position (den givna positionen måste matcha starten på en
händelse). Den har också alternativ för att stanna och starta när den
ser en händelse med ett visst datum och tid. Detta gör att du kan
utföra punkt-i-tid-återställning med alternativet --stop-datetime (så
att du till exempel kan säga ”rulla fram mina databaser till hur de
var idag klockan 10:30”).
Om du har mer än en binärlogg att köra på MariaDB-servern är den säkra
metoden att bearbeta dem alla med en enda anslutning till servern. Här
är ett exempel som visar vad som kan vara osäkert:
shell> mariadb-binlog binlog.000001 | mariadb -u root -p # FARA!!
shell> mariadb-binlog binlog.000002 | mariadb -u root -p # FARA!!
Att bearbeta binärloggar på detta sätt med olika anslutningar till
servern orsakar problem om den första loggfilen innehåller en CREATE
TEMPORARY TABLE-sats och den andra loggen innehåller en sats som
använder den temporära tabellen. När den första mariadb-processen
avslutas släpper servern den temporära tabellen. När den andra
mariadb-processen försöker använda tabellen rapporterar servern
“unknown table”.
För att undvika problem som detta, använd en enda mariadb-process för
att köra innehållet i alla binärloggar som du vill bearbeta. Här är
ett sätt att göra det:
shell> mariadb-binlog binlog.000001 binlog.000002 | mariadb -u root -p
Ett annat tillvägagångssätt är att skriva alla loggar till en enda fil
och sedan bearbeta den filen:
shell> mariadb-binlog binlog.000001 > /tmp/statements.sql
shell> mariadb-binlog binlog.000002 >> /tmp/statements.sql
shell> mariadb -u root -p -e "source /tmp/statements.sql"
mariadb-binlog kan producera utdata som återskapar en LOAD DATA
INFILE-operation utan den ursprungliga datafilen. mariadb-binlog
kopierar data till en temporär fil och skriver en LOAD DATA LOCAL
INFILE-sats som refererar till filen. Standardplatsen för katalogen
där dessa filer skrivs är systemspecifik. För att uttryckligen ange en
katalog, använd alternativet --local-load.
Eftersom mariadb-binlog konverterar LOAD DATA INFILE-satser till
LOAD DATA LOCAL INFILE-satser (det vill säga den lägger till LOCAL),
måste både klienten och servern som du använder för att bearbeta
satserna vara konfigurerade med LOCAL-funktionen aktiverad.
Varning
De temporära filer som skapas för LOAD DATA LOCAL-satser tas inte
bort automatiskt eftersom de behövs tills du faktiskt kör dessa
satser. Du bör själv ta bort de temporära filerna när du inte
längre behöver satsloggen. Filerna finns i katalogen för
temporära filer och har namn som original_file_name-#-#.
MARIADB-BINLOG HEXDUMP-FORMAT
Alternativet --hexdump gör att mariadb-binlog producerar en hexadump
av innehållet i binärloggen:
shell> mariadb-binlog --hexdump master-bin.000001
Hex-utdata består av kommentarsrader som börjar med #, så utdata kan
se ut så här för kommandot ovan:
/*!40019 SET @@session.max_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
# at 4
#051024 17:24:13 server id 1 end_log_pos 98
# Position Timestamp Type Master ID Size Master Pos Flags
# 00000004 9d fc 5c 43 0f 01 00 00 00 5e 00 00 00 62 00 00 00 00 00
# 00000017 04 00 35 2e 30 2e 31 35 2d 64 65 62 75 67 2d 6c |..5.0.15.debug.l|
# 00000027 6f 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |og..............|
# 00000037 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
# 00000047 00 00 00 00 9d fc 5c 43 13 38 0d 00 08 00 12 00 |.......C.8......|
# 00000057 04 04 04 04 12 00 00 4b 00 04 1a |.......K...|
# Start: binlog v 4, server v 5.0.15-debug-log created 051024 17:24:13
# at startup
ROLLBACK;
Hexdump-utdata innehåller för närvarande elementen i följande lista.
Detta format kan komma att ändras. (För mer information om
binärloggsformat, se
http://forge.mysql.com/wiki/MySQL_Internals_Binary_Log.)
• Position: Bytepositionen i loggfilen.
• Timestamp: Händelsens tidsstämpel. I exemplet ovan är '9d fc 5c
43' den hexadecimala representationen av '051024 17:24:13'.
• Type: Händelsetypkoden. I exemplet ovan anger '0f' en
FORMAT_DESCRIPTION_EVENT. Följande tabell listar möjliga
typkoder.
┌──────┬──────────────────────────┬──────────────────────────────┐
│ Typ │ Namn │ Betydelse │
├──────┼──────────────────────────┼──────────────────────────────┤
│ 00 │ UNKNOWN_EVENT │ Denna händelse ska aldrig │
│ │ │ finnas i loggen. │
├──────┼──────────────────────────┼──────────────────────────────┤
│ 01 │ START_EVENT_V3 │ Anger början på en loggfil │
│ │ │ skriven av MySQL 4 eller │
│ │ │ tidigare. │
├──────┼──────────────────────────┼──────────────────────────────┤
│ 02 │ QUERY_EVENT │ Den vanligaste typen av │
│ │ │ händelser. Dessa innehåller │
│ │ │ satser som körts på mastern. │
├──────┼──────────────────────────┼──────────────────────────────┤
│ 03 │ STOP_EVENT │ Anger att mastern har │
│ │ │ stannat. │
├──────┼──────────────────────────┼──────────────────────────────┤
│ 04 │ ROTATE_EVENT │ Skrivs när mastern växlar │
│ │ │ till en ny loggfil. │
├──────┼──────────────────────────┼──────────────────────────────┤
│ 05 │ INTVAR_EVENT │ Används för AUTO_INCREMENT- │
│ │ │ värden eller när funktionen │
│ │ │ LAST_INSERT_ID() används i │
│ │ │ satsen. │
├──────┼──────────────────────────┼──────────────────────────────┤
│ 06 │ LOAD_EVENT │ Används för LOAD DATA │
│ │ │ INFILE i MySQL 3.23. │
├──────┼──────────────────────────┼──────────────────────────────┤
│ 07 │ SLAVE_EVENT │ Reserverad för framtida │
│ │ │ användning. │
├──────┼──────────────────────────┼──────────────────────────────┤
│ 08 │ CREATE_FILE_EVENT │ Används för LOAD DATA │
│ │ │ INFILE-satser. Anger början │
│ │ │ på körningen av en sådan │
│ │ │ sats. En temporär fil │
│ │ │ skapas på slaven. Används │
│ │ │ endast i MySQL 4. │
├──────┼──────────────────────────┼──────────────────────────────┤
│ 09 │ APPEND_BLOCK_EVENT │ Innehåller data för │
│ │ │ användning i en LOAD DATA │
│ │ │ INFILE-sats. Datan lagras i │
│ │ │ den temporära filen på │
│ │ │ slaven. │
├──────┼──────────────────────────┼──────────────────────────────┤
│ 0a │ EXEC_LOAD_EVENT │ Används för LOAD DATA │
│ │ │ INFILE-satser. Innehållet i │
│ │ │ den temporära filen lagras i │
│ │ │ tabellen på slaven. Används │
│ │ │ endast i MySQL 4. │
├──────┼──────────────────────────┼──────────────────────────────┤
│ 0b │ DELETE_FILE_EVENT │ Återställning av en LOAD │
│ │ │ DATA INFILE-sats. Den │
│ │ │ temporära filen ska tas bort │
│ │ │ på slaven. │
├──────┼──────────────────────────┼──────────────────────────────┤
│ 0c │ NEW_LOAD_EVENT │ Används för LOAD DATA │
│ │ │ INFILE i MySQL 4 och │
│ │ │ tidigare. │
├──────┼──────────────────────────┼──────────────────────────────┤
│ 0d │ RAND_EVENT │ Används för att skicka │
│ │ │ information om slumpvärden │
│ │ │ om funktionen RAND() │
│ │ │ används i satsen. │
├──────┼──────────────────────────┼──────────────────────────────┤
│ 0e │ USER_VAR_EVENT │ Används för att replikera │
│ │ │ användarvariabler. │
├──────┼──────────────────────────┼──────────────────────────────┤
│ 0f │ FORMAT_DESCRIPTION_EVENT │ Anger början på en loggfil │
│ │ │ skriven av MySQL 5 eller │
│ │ │ senare. │
├──────┼──────────────────────────┼──────────────────────────────┤
│ 10 │ XID_EVENT │ Händelse som anger commit av │
│ │ │ en XA-transaktion. │
├──────┼──────────────────────────┼──────────────────────────────┤
│ 11 │ BEGIN_LOAD_QUERY_EVENT │ Används för LOAD DATA │
│ │ │ INFILE-satser i MySQL 5 och │
│ │ │ senare. │
├──────┼──────────────────────────┼──────────────────────────────┤
│ 12 │ EXECUTE_LOAD_QUERY_EVENT │ Används för LOAD DATA │
│ │ │ INFILE-satser i MySQL 5 och │
│ │ │ senare. │
├──────┼──────────────────────────┼──────────────────────────────┤
│ 13 │ TABLE_MAP_EVENT │ Information om en tabell- │
│ │ │ definition. Används i │
│ │ │ MySQL 5.1.5 och senare. │
├──────┼──────────────────────────┼──────────────────────────────┤
│ 14 │ PRE_GA_WRITE_ROWS_EVENT │ Raddata för en enskild │
│ │ │ tabell som ska skapas. │
│ │ │ Används i MySQL 5.1.5 till │
│ │ │ 5.1.17. │
├──────┼──────────────────────────┼──────────────────────────────┤
│ 15 │ PRE_GA_UPDATE_ROWS_EVENT │ Raddata för en enskild │
│ │ │ tabell som måste uppdateras. │
│ │ │ Används i MySQL 5.1.5 till │
│ │ │ 5.1.17. │
├──────┼──────────────────────────┼──────────────────────────────┤
│ 16 │ PRE_GA_DELETE_ROWS_EVENT │ Raddata för en enskild │
│ │ │ tabell som ska tas bort. │
│ │ │ Används i MySQL 5.1.5 till │
│ │ │ 5.1.17. │
├──────┼──────────────────────────┼──────────────────────────────┤
│ 17 │ WRITE_ROWS_EVENT │ Raddata för en enskild │
│ │ │ tabell som ska skapas. │
│ │ │ Används i MySQL 5.1.18 och │
│ │ │ senare. │
├──────┼──────────────────────────┼──────────────────────────────┤
│ 18 │ UPDATE_ROWS_EVENT │ Raddata för en enskild │
│ │ │ tabell som måste uppdateras. │
│ │ │ Används i MySQL 5.1.18 och │
│ │ │ senare. │
├──────┼──────────────────────────┼──────────────────────────────┤
│ 19 │ DELETE_ROWS_EVENT │ Raddata för en enskild │
│ │ │ tabell som ska tas bort. │
│ │ │ Används i MySQL 5.1.18 och │
│ │ │ senare. │
├──────┼──────────────────────────┼──────────────────────────────┤
│ 1a │ INCIDENT_EVENT │ Något ovanligt inträffade. │
│ │ │ Tillagt i MySQL 5.1.18. │
└──────┴──────────────────────────┴──────────────────────────────┘
• Master ID: Server-ID för den master som skapade händelsen.
• Size: Storleken i byte för händelsen.
• Master Pos: Positionen för nästa händelse i den ursprungliga
masterloggfilen.
• Flags: 16 flaggor. För närvarande används följande flaggor. De
övriga är reserverade för framtida användning.
┌──────┬─────────────────────────────┬──────────────────────────────┐
│ Flag │ Namn │ Betydelse │
├──────┼─────────────────────────────┼──────────────────────────────┤
│ 01 │ LOG_EVENT_BINLOG_IN_USE_F │ Loggfilen stängdes korrekt. │
│ │ │ (Används endast i │
│ │ │ FORMAT_DESCRIPTION_EVENT.) │
│ │ │ Om denna flagga är satt │
│ │ │ (om flaggorna till exempel │
│ │ │ är '01 00') i en │
│ │ │ FORMAT_DESCRIPTION_EVENT, │
│ │ │ har loggfilen inte stängts │
│ │ │ korrekt. Troligast beror │
│ │ │ detta på en masterkrasch │
│ │ │ (t.ex. strömavbrott). │
├──────┼─────────────────────────────┼──────────────────────────────┤
│ 02 │ │ Reserverad för framtida │
│ │ │ användning. │
├──────┼─────────────────────────────┼──────────────────────────────┤
│ 04 │ LOG_EVENT_THREAD_SPECIFIC_F │ Satt om händelsen beror på │
│ │ │ den anslutning där den │
│ │ │ kördes (t.ex. '04 00'), │
│ │ │ till exempel om händelsen │
│ │ │ använder temporära tabeller.│
├──────┼─────────────────────────────┼──────────────────────────────┤
│ 08 │ LOG_EVENT_SUPPRESS_USE_F │ Satt i vissa fall när │
│ │ │ händelsen inte beror på │
│ │ │ standarddatabasen. │
└──────┴─────────────────────────────┴──────────────────────────────┘
MARIADB-BINLOG VISNING AV RADHÄNDELSER
Följande exempel illustrerar hur mariadb-binlog visar radhändelser som
anger dataändringar. Dessa motsvarar händelser med typkoderna
WRITE_ROWS_EVENT, UPDATE_ROWS_EVENT och DELETE_ROWS_EVENT.
Alternativen --base64-output=DECODE-ROWS och --verbose kan användas
för att påverka utdata för radhändelser.
Anta att servern använder radbaserad binärloggning och att du kör
följande sekvens av satser:
CREATE TABLE t
(
id INT NOT NULL,
name VARCHAR(20) NOT NULL,
date DATE NULL
) ENGINE = InnoDB;
START TRANSACTION;
INSERT INTO t VALUES(1, 'apple', NULL);
UPDATE t SET name = 'pear', date = '2009-01-01' WHERE id = 1;
DELETE FROM t WHERE id = 1;
COMMIT;
Som standard visar mariadb-binlog radhändelser kodade som base64-
strängar med BINLOG-satser. Om man utelämnar ovidkommande rader ser
utdata för radhändelserna som produceras av satssekvensen ovan ut så
här:
shell> mariadb-binlog log_file
...
# at 218
#080828 15:03:08 server id 1 end_log_pos 258 Write_rows: table id 17 flags: STMT_END_F
BINLOG 'fAS3SBMBAAAALAAAANoAAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBcBAAAAKAAAAAIBAAAQABEAAAAAAAEAA//8AQAAAAVhcHBsZQ=='/*!*/;
...
# at 302
#080828 15:03:08 server id 1 end_log_pos 356 Update_rows: table id 17 flags: STMT_END_F
BINLOG 'fAS3SBMBAAAALAAAAC4BAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBgBAAAANgAAAGQBAAAQABEAAAAAAAEAA////AEAAAAFYXBwbGX4AQAAAARwZWFyIbIP'/*!*/;
...
# at 400
#080828 15:03:08 server id 1 end_log_pos 442 Delete_rows: table id 17 flags: STMT_END_F
BINLOG 'fAS3SBMBAAAALAAAAJABAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBkBAAAAKgAAALoBAAAQABEAAAAAAAEAA//4AQAAAARwZWFyIbIP'/*!*/;
För att se radhändelserna som kommentarer i form av “pseudo-SQL”-
satser, kör mariadb-binlog med alternativet --verbose eller -v.
Utdata kommer då att innehålla rader som börjar med ###:
shell> mariadb-binlog -v log_file
...
# at 218
#080828 15:03:08 server id 1 end_log_pos 258 Write_rows: table id 17 flags: STMT_END_F
BINLOG 'fAS3SBMBAAAALAAAANoAAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBcBAAAAKAAAAAIBAAAQABEAAAAAAAEAA//8AQAAAAVhcHBsZQ=='/*!*/;
### INSERT INTO test.t
### SET
### @1=1
### @2='apple'
### @3=NULL
...
# at 302
#080828 15:03:08 server id 1 end_log_pos 356 Update_rows: table id 17 flags: STMT_END_F
BINLOG 'fAS3SBMBAAAALAAAAC4BAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBgBAAAANgAAAGQBAAAQABEAAAAAAAEAA////AEAAAAFYXBwbGX4AQAAAARwZWFyIbIP'/*!*/;
### UPDATE test.t
### WHERE
### @1=1
### @2='apple'
### @3=NULL
### SET
### @1=1
### @2='pear'
### @3='2009:01:01'
...
# at 400
#080828 15:03:08 server id 1 end_log_pos 442 Delete_rows: table id 17 flags: STMT_END_F
BINLOG 'fAS3SBMBAAAALAAAAJABAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBkBAAAAKgAAALoBAAAQABEAAAAAAAEAA//4AQAAAARwZWFyIbIP'/*!*/;
### DELETE FROM test.t
### WHERE
### @1=1
### @2='pear'
### @3='2009:01:01'
Ange --verbose eller -v två gånger för att också visa datatyper och
viss metadata för varje kolumn. Utdata kommer då att innehålla en
ytterligare kommentar efter varje kolumnändring:
shell> mariadb-binlog -vv log_file
...
# at 218
#080828 15:03:08 server id 1 end_log_pos 258 Write_rows: table id 17 flags: STMT_END_F
BINLOG 'fAS3SBMBAAAALAAAANoAAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBcBAAAAKAAAAAIBAAAQABEAAAAAAAEAA//8AQAAAAVhcHBsZQ=='/*!*/;
### INSERT INTO test.t
### SET
### @1=1 /* INT meta=0 nullable=0 is_null=0 */
### @2='apple' /* VARSTRING(20) meta=20 nullable=0 is_null=0 */
### @3=NULL /* VARSTRING(20) meta=0 nullable=1 is_null=1 */
...
# at 302
#080828 15:03:08 server id 1 end_log_pos 356 Update_rows: table id 17 flags: STMT_END_F
BINLOG 'fAS3SBMBAAAALAAAAC4BAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBgBAAAANgAAAGQBAAAQABEAAAAAAAEAA////AEAAAAFYXBwbGX4AQAAAARwZWFyIbIP'/*!*/;
### UPDATE test.t
### WHERE
### @1=1 /* INT meta=0 nullable=0 is_null=0 */
### @2='apple' /* VARSTRING(20) meta=20 nullable=0 is_null=0 */
### @3=NULL /* VARSTRING(20) meta=0 nullable=1 is_null=1 */
### SET
### @1=1 /* INT meta=0 nullable=0 is_null=0 */
### @2='pear' /* VARSTRING(20) meta=20 nullable=0 is_null=0 */
### @3='2009:01:01' /* DATE meta=0 nullable=1 is_null=0 */
...
# at 400
#080828 15:03:08 server id 1 end_log_pos 442 Delete_rows: table id 17 flags: STMT_END_F
BINLOG 'fAS3SBMBAAAALAAAAJABAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBkBAAAAKgAAALoBAAAQABEAAAAAAAEAA//4AQAAAARwZWFyIbIP'/*!*/;
### DELETE FROM test.t
### WHERE
### @1=1 /* INT meta=0 nullable=0 is_null=0 */
### @2='pear' /* VARSTRING(20) meta=20 nullable=0 is_null=0 */
### @3='2009:01:01' /* DATE meta=0 nullable=1 is_null=0 */
Du kan be mariadb-binlog att undertrycka BINLOG-satserna för
radhändelser genom att använda alternativet
--base64-output=DECODE-ROWS. Detta liknar --base64-output=NEVER men
avslutas inte med fel om en radhändelse hittas. Kombinationen av
--base64-output=DECODE-ROWS och --verbose ger ett bekvämt sätt att
se radhändelser endast som SQL-satser:
shell> mariadb-binlog -v --base64-output=DECODE-ROWS log_file
...
# at 218
#080828 15:03:08 server id 1 end_log_pos 258 Write_rows: table id 17 flags: STMT_END_F
### INSERT INTO test.t
### SET
### @1=1
### @2='apple'
### @3=NULL
...
# at 302
#080828 15:03:08 server id 1 end_log_pos 356 Update_rows: table id 17 flags: STMT_END_F
### UPDATE test.t
### WHERE
### @1=1
### @2='apple'
### @3=NULL
### SET
### @1=1
### @2='pear'
### @3='2009:01:01'
...
# at 400
#080828 15:03:08 server id 1 end_log_pos 442 Delete_rows: table id 17 flags: STMT_END_F
### DELETE FROM test.t
### WHERE
### @1=1
### @2='pear'
### @3='2009:01:01'
Observera
Du bör inte undertrycka BINLOG-satser om du tänker köra om
utdata från mariadb-binlog.
SQL-satserna som produceras av --verbose för radhändelser är mycket
mer läsbara än motsvarande BINLOG-satser. De motsvarar dock inte exakt
de ursprungliga SQL-satser som genererade händelserna. Följande
begränsningar gäller:
• De ursprungliga kolumnnamnen går förlorade och ersätts med @N, där
N är ett kolumnnummer.
• Information om teckenuppsättning finns inte tillgänglig i
binärloggen, vilket påverkar visning av strängkolumner:
• Ingen skillnad görs mellan motsvarande binära och icke-binäre
strängtyper (BINARY och CHAR, VARBINARY och VARCHAR, BLOB och
TEXT). Utdata använder datatypen STRING för strängar med fast
längd och VARSTRING för strängar med variabel längd.
• För flerbytes-teckenuppsättningar finns det maximala antalet
byte per tecken inte i binärloggen, så längden för
strängtyper visas i byte snarare än i tecken. Till exempel
kommer STRING(4) att användas som datatyp för värden från
någon av dessa kolumntyper:
CHAR(4) CHARACTER SET latin1
CHAR(2) CHARACTER SET ucs2
• På grund av lagringsformatet för händelser av typen
UPDATE_ROWS_EVENT visas UPDATE-satser med WHERE-klausulen
före SET-klausulen.
Korrekt tolkning av radhändelser kräver informationen från
formatbeskrivningshändelsen i början av binärloggen. Eftersom
mariadb-binlog inte i förväg vet om resten av loggen innehåller
radhändelser, visar den som standard formatbeskrivningshändelsen med
en BINLOG-sats i början av utdata.
Om binärloggen är känd för att inte innehålla några händelser som
kräver en BINLOG-sats (det vill säga inga radhändelser), kan
alternativet --base64-output=NEVER användas för att förhindra att
detta huvud skrivs ut.
UPPHOVSRÄTT
Copyright 2007-2008 MySQL AB, 2008-2010 Sun Microsystems, Inc., 2010-2025 MariaDB Foundation
Denna dokumentation är fri programvara; du kan vidaredistribuera den och/eller ändra den endast enligt villkoren i GNU General Public License såsom publicerad av Free Software Foundation; version 2 av licensen.
Denna dokumentation distribueras i hopp om att den ska vara användbar, men UTAN NÅGON GARANTI; utan ens underförstådd garanti om SÄLJBARHET eller LÄMPLIGHET FÖR ETT VISST ÄNDAMÅL. Se GNU General Public License för mer information.
Du bör ha fått en kopia av GNU General Public License tillsammans med programmet; om inte, skriv till Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA eller se http://www.gnu.org/licenses/.
ANMÄRKNINGAR
1. Bug#42941 http://bugs.mysql.com/bug.php?id=42941
SE ÄVEN
För mer information, se MariaDB Knowledge Base, tillgänglig online på https://mariadb.com/kb/
FÖRFATTARE
MariaDB Foundation (http://www.mariadb.org/).
KOLOFON
Denna sida är en del av projektet MariaDB (MariaDB-databasserver). Information om projektet finns på ⟨http://mariadb.org/⟩. Om du har en felrapport för denna manualsida, se ⟨https://mariadb.com/kb/en/mariadb/reporting-bugs/⟩. Denna sida hämtades från projektets uppströms Git-arkiv ⟨https://github.com/MariaDB/server⟩ den 2026-01-16. (Vid den tidpunkten var datumet för den senaste commit som hittades i arkivet 2026-01-16.) Om du upptäcker renderingsproblem i denna HTML-version av sidan, eller om du tror att det finns en bättre eller mer uppdaterad källa för sidan, eller om du har korrigeringar eller förbättringar av informationen i denna KOLOFON (som inte är en del av den ursprungliga manualsidan), skicka e-post till man-pages@man7.org
MariaDB 11.8 5 mars 2025 MARIADB-BINLOG(1)
Sidslut
Orginalhemsidan på Engelska https://man7.org/linux/man-pages/man1/mariadb-binlog.1.html
Det här är en maskinöversättning av Linux man sidor till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på
https://www.linux.se/kontaka-linux-se/
Tack till PC Service som har sponsrat Linux.se med webbhotell.