Skip to main content

Vad är mysqldump och hur använder jag det?

Bruno Mars - Just The Way You Are [Official Video] (April 2025)

Bruno Mars - Just The Way You Are [Official Video] (April 2025)
Anonim

Som en av de ledande fritt tillgängliga databaserna är MySQL ett populärt val för alla typer av webbapplikationer. Att vara utsatt för Internet är din app givetvis utsatt för skadliga attacker. Om din server är äventyrad måste du i bästa fall återinstallera din applikation. i värsta fall kan du förlora dina uppgifter helt. Du kommer också slutligen att vara i en situation där du måste migrera en databas från en server till en annan.

Vad används mysqldump för?

De mysqldump verktyg har du täckt för båda dessa situationer. Det är grundläggande funktionen att ta en MySQL-databas och "dumpa" den ut som en textfil. Men inte bara någon textfil … filen är en uppsättning SQL-satser. Dessa uttalanden, när de körs, kommer att omkonstruera din databas till det exakta läget det var i när du körde dumpningen.

Så du kan använda mysqldump att ta export av en databas. Dessa kan vara i syfte att säkerhetskopiera, eller eftersom du flyttar databasen till en ny värd. I båda fallen kommer du någon gång importera Textfilen återgår till en MySQL-databasserver. Det kommer att exekvera alla SQL-satser i filen, som återuppbygger din DB till dess ursprungliga tillstånd. Den här delen använder inte faktiskt mysqldump kommando, men det skulle inte vara möjligt utan det här verktyget heller!

MySQL-dokumenten innehåller andra metoder för säkerhetskopiering, men alla har sina egna nackdelar:

  • Hotcopying ett DB från MySQL Enterprise är ett utmärkt sätt att uppnå dessa säkerhetskopior … om du inte har något emot Enterprise prislappen.
  • Att kopiera DB: s datakataloger kan vara svårt om du flyttar över operativsystem, eftersom deras destinationer kommer att vara annorlunda.
  • Exportera till en avgränsad textfil ger dig innehållet, men du måste återskapa strukturen själv. Och du skulle bara få det rätt …
  • Du kan ofta säkerhetskopiera databaser från GUI-program som MySQL Workbench. Men det här är en manuell process, det vill säga inte något du kan skriva eller inkludera i ett partijobb.

Installera mysqldump-verktyget

Om du är intresserad av den här artikeln är chansen att du redan har MySQL installerad. Om så är fallet, goda nyheter - du har redan mysqldump! Om inte, kan du helt enkelt installera MySQL på standardvägen för ditt operativsystem.

För Windows, kolla våra instruktioner här för att installera MySQL på Windows 7 (installationsprocessen är fortfarande väldigt densamma). På MacOS, se även våra anvisningar för att installera MySQL på MacOS 10.7 (igen, äldre men fortfarande tillämpliga). Användare av Ubuntu-baserade Linux-system kan använda följande kommando för att installera MySQL-klienten och verktygen:

sudo apt installera mysql-klienten

Extrahera en MySQL Dump

När du har installerat kan du använda mysqldump för att få en fullständig säkerhetskopiering av din databas.

mysqldump -h DB-värdens namn eller IP -u DB-användarens namn -p databasnamnet> db_backup.sql

Låt oss bryta det här kommandot lite:

  • "-H": Den här flaggan är databasen värd. Det kan vara ett fullständigt värdnamn (t.ex. myhost.domain.com) eller en IP-adress. Du kan också lämna detta tomt om du kör det på samma värd som MySQL-servern.
  • "-U": Som nämnts är detta ditt Användarnamn.
  • "-P": Om du har ordentligt säkrat din MySQL-installation behöver du en Lösenord att ansluta. Den här flaggan utan argument ger dig ett lösenord när du kör kommandot. Ibland är det användbart att ge ditt lösenord direkt som argumentet till den här flaggan, till exempel i ett backup-skript. Men omedelbart bör du inte, för om någon fick tillgång till din dator kunde de få det här lösenordet i din kommandoradshistorik.
  • "> db_backup.sql": Den här sista delen berättar mysqldump att rikta all dess utdata till en fil. Normalt skulle kommandot mata ut allt direkt till konsolen, vilket innebär att du skulle se en massa SQL-satser flyga genom. Men istället är symbolen *> * ett tecken att trampa alla dessa saker i den angivna textfilen istället. Och om den här filen inte finns kommer den att skapas automatiskt.

När det är klart kommer du att ha en .SQL-fil. Det här är bara en textfil som innehåller SQL-satser. Du kan öppna den i någon textredigerare för att inspektera innehållet. Om du tittar på en export från en WordPress-databas kan du se hur dessa filer sätts ihop.

Filen är uppdelad i sektioner. I ovanstående bild kan vi se det första avsnittet ställer upp tabellen för WordPress-kommentarer. Den andra sektionen återskapar sedan innehållet (dvs kommentarer poster) som fanns i de tabellerna. När du går för att importera din MySQL-dump igen, kommer kommandot att fungera genom filen, genomföra deklarationerna och bygga om din databas precis som den var. Så hur gör du det? Låt oss ta en titt.

Importera en MySQL Dump File

Innan du kan göra detta behöver du en databas som redan har skapats och har ett giltigt användarnamn och lösenord. Du bör också ha alla behörigheter för databasen. (Strängt taget behöver du inte BEVILJA tillstånd, men det är lättare att bara bevilja dem alla.) Du kan hitta detaljer om databasbehörigheter i den här artikeln.

Gör så här för att importera dina data igen:

  1. Logga in på MySQL-servern med mysql kommando.
  2. Typ använd databasnamn i fråga om att ersätta det lämpliga namnet på DB.
  3. Stiga på källa filnamn, ersätter namnet på den dumpningsfil du tog tidigare.

När du är klar ser du en lång lista med meddelanden som noterar att SQL-satser utförs. Håll ögonen på fel, men om du har rätt behörighet, borde du vara bra eftersom det är en tom databas.

När processen är klar kommer du att ha en kopia av din ursprungliga databas. Du kan verifiera detta genom att göra en annan dumpning och jämföra de två utgångarna. En anständig textredigerare kan göra det för dig, eller ett dedikerat * diff * -verktyg som det som visas i bilden nedan:

Det finns bara två skillnader mellan dessa filer, som representeras av röda linjer längst upp och längst ner till höger. Den första är raden som innehåller databasnamnet, och vi förväntar oss att detta ska vara annorlunda eftersom vi namngav dem annorlunda. Den andra, hela vägen i slutet, är tidsstämpeln för dumpningsfilen. Och vi förväntar oss också att detta ska vara annorlunda, eftersom vi återskapade den andra databasen efter det första. Annars är filerna exakt desamma, vilket betyder att de databaser som genererade dem är lika bra!