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

Innehållsförteckning:

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

Som en av de ledande fritt tillgängliga databaserna är MySQL ett populärt val för många webbapplikationer. Din app är exponerad för internet och utsätts för skadliga attacker. Om din server har äventyrats måste du i bästa fall installera om programmet; i värsta fall kan du förlora din data. Dessutom kan du hamna i en situation där du behöver migrera en databas från en server till en annan.

Vad används mysqldump till?

Mysqldump-verktyget har dig täckt för både serverkompromisser och migreringssituationer. Dess grundläggande funktion är att ta en MySQL-databas och dumpa den som en textfil. Men inte vilken textfil som helst; filen är en uppsättning SQL-satser. Dessa uttalanden, när de körs, rekonstruerar databasen till det exakta tillstånd den var i när dumpen kördes.

Använd mysqldump för att skapa exporter av en databas som säkerhetskopior, eller när du flyttar databasen till en ny värd. I båda fallen kommer textfilen att importeras tillbaka till en MySQL-databasserver. Den kommer att köra alla SQL-satser i filen, vilket bygger om databasen till dess ursprungliga tillstånd. Den här delen använder inte kommandot mysqldump, men det skulle inte vara möjligt utan det här verktyget heller.

MySQL-dokumenten listar andra metoder för att göra säkerhetskopior, men dessa har nackdelar:

  • Hotcopying av en databas från MySQL Enterprise är ett utmärkt sätt att göra dessa säkerhetskopior – om du inte har något emot Enterprise-prislappen.
  • Det kan vara svårt att kopiera databasens datakataloger när man flyttar mellan operativsystem, eftersom destinationerna kommer att vara olika.
  • Export till en avgränsad textfil ger dig innehållet, men du måste återskapa strukturen.
  • Du kan ofta säkerhetskopiera databaser från GUI-program som MySQL Workbench. Men detta är en manuell process; inte något du kan skripta eller inkludera i ett batchjobb.

Installera mysqldump-verktyget

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

sudo apt install mysql-client

Extrahera en MySQL-dump

När det är installerat, använd mysqldump för att få en fullständig säkerhetskopia av en databas.

mysqldump -h [din DB-värds namn eller IP] -u [DB-användarens namn] -p [databasens namn] > db_backup.sql

Här är en beskrivning av flaggorna som används i detta kommando:

  • - h: Den här flaggan är databasvärden. Det kan vara ett fullständigt värdnamn (till exempel myhost.domain.com) eller en IP-adress. Lämna detta tomt om du kör kommandot på samma värd som MySQL-servern.
  • - u: Ditt användarnamn.
  • - p: Om du säkrade MySQL-installationen ordentligt, behöver du ett lösenord för att ansluta. Denna flagga utan argument uppmanar dig att ange ett lösenord när du utför kommandot. Ibland är det användbart att ange lösenordet direkt som argument till denna flagga, till exempel i ett säkerhetskopieringsskript. Men vid uppmaningen borde du inte göra det, för om någon fick tillgång till din dator kunde de få det här lösenordet i kommandohistoriken.
  • > db_backup.sql: Den här delen säger åt mysqldump att dirigera dess utdata till en fil. Norm alt matar kommandot allt till konsolen, vilket innebär att du kommer att se flera SQL-satser på skärmen. Symbolen > leder utdata till den namngivna textfilen. Om den här filen inte finns skapas den automatiskt.

När den är klar har du en. SQL-fil. Detta är en textfil som innehåller SQL-satser. Du kan öppna den i valfri textredigerare för att inspektera innehållet. Här är en export från en WordPress-databas som visar hur dessa filer är sammansatta.

Image
Image

Filen är uppdelad i sektioner. Det första avsnittet ställer upp tabellen för WordPress-kommentarer. Det andra avsnittet återskapar innehållet i dessa tabeller (i det här exemplet, kommentarsposterna). När du återimporterar MySQL-dumpen, fungerar kommandot genom filen, exekverar satserna och bygger om databasen som den var.

Importera en MySQL-dumpfil

Innan du importerar dumpfilen behöver du en databas som redan har skapats och dess giltiga användarnamn och lösenord. Du bör också ha alla behörigheter för databasen. Du behöver inte GRANT-tillståndet, men det är lättare att ge dem alla.

Läs mer om databasbehörigheter innan du ändrar säkerhetsroller i din databas.

För att återimportera dina data, logga in på MySQL-servern med kommandot mysql. Skriv use [databasnamn] vid prompten och ersätt databasens namn. Ange source [filnamn] och ersätt namnet på dumpfilen du tog tidigare.

När du är klar visas en lista med meddelanden som noterar att SQL-satser körs. Håll utkik efter fel, men om du har rätt behörigheter borde det gå bra.

Image
Image

När processen är klar har du en dubblett av den ursprungliga databasen. För att verifiera likheten mellan databaserna, utför en ny dumpning och jämför sedan de två utgångarna. Använd en textredigerare eller ett dedikerat diff-verktyg för att jämföra de två filerna.

Image
Image

Det finns två skillnader mellan dessa filer, som representeras av röda linjer längst upp och längst ned i den högra rullningslisten. Den första är raden som innehåller databasnamnet, och detta är annorlunda eftersom filerna fick ett annat namn. Den andra är tidsstämpeln för dumpfilen. Detta är annorlunda eftersom den andra databasen återskapades efter den första. Annars är filerna exakt samma, vilket betyder att databaserna som genererade dem också är det.

FAQ

    Hur fixar du mysqldump-felet: Åtkomst nekad när du använder låstabeller?

    Be din databasadministratör att ge dig LOCK-privilegiet. Om detta inte löser problemet kan du prova att köra samma mysqldump-kommando och lägga till - -single-transaction flaggan, till exempel [ $ mysqldump --single-transaction] [-u användare] [-p DBNAME] > backup.sql

    Kan du använda en "where"-klausul med mysqldump?

    Använd en WHERE-sats när du skapar en säkerhetskopia som bara inkluderar de rader som uppfyller det givna villkoret. Om du till exempel bara vill dumpa data från rader med id-kolumnen större än 100 anger du "mysqldump my_db_name my_table_name --where="id > 100" > my_backup.sql".

Rekommenderad: