Sök…


Syntax

  • mysqldump -u [användarnamn] -p [lösenord] [andra alternativ] db_name> dumpFileName.sql /// Till säkerhetskopiering av en enda databas
  • mysqldump -u [användarnamn] -p [lösenord] [andra alternativ] db_name [tbl_name1 tbl_name2 tbl_name2 ...]> dumpFileName.sql /// För att säkerhetskopiera en eller flera tabeller
  • mysqldump -u [användarnamn] -p [lösenord] [andra alternativ] - databaser db_name1 db_name2 db_name3 ...> dumpFileName.sql /// För att säkerhetskopiera en eller flera kompletta databaser
  • mysqldump -u [användarnamn] -p [lösenord] [andra alternativ] - alla-databaser> dumpFileName.sql /// För att säkerhetskopiera hela MySQL-servern

parametrar

Alternativ Effekt
- # Serverinloggningsalternativ
-h (- --host ) Host (IP-adress eller värdnamn) att ansluta till. Standard är localhost ( 127.0.0.1 ) Exempel: -h localhost
-u ( --user ) MySQL-användare
-p (- --password ) MySQL-lösenord. Viktigt : När du använder -p får det inte finnas ett avstånd mellan alternativet och lösenordet. Exempel: -pMyPassword
- # Dumpalternativ
--add-drop-database Lägg till ett DROP DATABASE uttalande före varje CREATE DATABASE uttalande. Användbart om du vill ersätta databaser på servern.
--add-drop-table Lägg till ett DROP TABLE uttalande före varje CREATE TABLE uttalande. Användbart om du vill ersätta tabeller på servern.
--no-create-db Undertryck CREATE DATABASE uttalandena i dumpningen. Det här är användbart när du är säker på att databas (er) som du dumpar redan finns i servern där du laddar dumpningen.
-t (- --no-create-info ) Undertryck alla CREATE TABLE uttalanden i dumpningen. Detta är användbart när du bara vill dumpa data från tabellerna och använder dumpfilen för att fylla identiska tabeller i en annan databas / server.
-d (- --no-data ) Skriv inte tabellinformation. Detta kommer bara att dumpa CREATE TABLE uttalandena. Användbart för att skapa "mall" -databaser
-R ( --routines ) Inkludera lagrade procedurer / funktioner i dumpningen.
-K (- --disable-keys ) Inaktivera nycklar för varje tabell innan du sätter in data, och aktivera nycklar efter att data är infogade. Detta påskyndar infogningar endast i MyISAM-tabeller med icke-unika index.

Anmärkningar

Utgången från en mysqldump operation är en lätt kommenterad fil som innehåller sekventiella SQL-satser som är kompatibla med versionen av MySQL-verktyg som användes för att generera den (med uppmärksamhet på kompatibilitet med tidigare versioner, men ingen garanti för framtida versioner). Återställningen av en mysqldump ed-databas innefattar mysqldump exekvering av dessa uttalanden. I allmänhet den här filen

  • DROP s den första specificerade tabellen eller vyn
  • CREATE den tabellen eller vyn
  • För tabeller dumpade med data (dvs. utan --no-data )
    • LOCK bordet
    • INSERT alla raderna från den ursprungliga tabellen i ett uttalande
  • UNLOCK TABLES
  • Upprepar ovanstående för alla andra tabeller och vyer
  • DROP är den första inkluderade rutinen
  • CREATE den rutinen
  • Upprepar samma för alla andra rutiner

Närvaron av DROP före CREATE för varje tabell innebär att om schemat finns, oavsett om det är tomt, kommer att använda en mysqldump fil för att återställa den eller de kommer att skrivas över dem.

Skapa en säkerhetskopia av en databas eller tabell

Skapa en ögonblicksbild av en hel databas:

mysqldump [options] db_name > filename.sql

Skapa en ögonblicksbild av flera databaser:

mysqldump [options] --databases db_name1 db_name2 ... > filename.sql
mysqldump [options] --all-databases > filename.sql

Skapa en ögonblicksbild av en eller flera tabeller:

mysqldump [options] db_name table_name... > filename.sql

Skapa en ögonblicksbild exklusive en eller flera tabeller:

mysqldump [options] db_name --ignore-table=tbl1 --ignore-table=tbl2 ... > filename.sql

.sql är helt en fråga om stil. Varje förlängning skulle fungera.

Ange användarnamn och lösenord

> mysqldump -u username -p [other options]
Enter password:

Om du behöver ange lösenordet på kommandoraden (t.ex. i ett skript) kan du lägga till det efter alternativet -p utan mellanrum:

> mysqldump -u username -ppassword [other options]

Om ditt lösenord innehåller mellanslag eller specialtecken, kom ihåg att använda flykt beroende på ditt skal / ditt system.

Eventuellt är det utökade formuläret:

> mysqldump --user=username --password=password [other options]

(Explicitet som anger lösenordet på kommandoraden rekommenderas inte på grund av säkerhetsproblem.)

Återställa en säkerhetskopia av en databas eller tabell

mysql [options] db_name < filename.sql

Anteckna det:

  • db_name måste vara en befintlig databas;
  • din autentiserade användare har tillräckliga privilegier för att köra alla kommandon i ditt filename.sql ;
  • .sql är helt en fråga om stil. Varje förlängning skulle fungera.
  • Du kan inte ange ett tabellnamn att ladda in även om du kan ange ett att dumpa från. Detta måste göras inom filename.sql .

Alternativt, när du är i MySQL-kommandoradverktyget , kan du återställa (eller köra något annat skript) med källkommandot:

source filename.sql

eller

\. filename.sql

mysqldump från en fjärrserver med komprimering

För att använda komprimering över kabeln för en snabbare överföring, --compress alternativet - mysqldump till mysqldump . Exempel:

mysqldump -h db.example.com -u username -p --compress dbname > dbname.sql

Viktigt: Om du inte vill låsa upp källan db, bör du också inkludera - --lock-tables=false . Men du kanske inte får en internt konsekvent db-bild på det sättet.

För att också spara filen komprimerad kan du pipa till gzip .

mysqldump -h db.example.com -u username -p --compress dbname | gzip --stdout > dbname.sql.gz

återställa en gzipped mysqldump-fil utan att komprimera

gunzip -c dbname.sql.gz | mysql dbname -u username -p

Obs: -c betyder skrivutgång till stdout.

Säkerhetskopiera direkt till Amazon S3 med komprimering

Om du vill göra en komplett säkerhetskopia av en stor MySql-installation och inte har tillräcklig lokal lagring, kan du dumpa och komprimera den direkt till en Amazon S3-hink. Det är också bra att göra detta utan att ha DB-lösenordet som en del av kommandot:

mysqldump -u root -p --host=localhost --opt --skip-lock-tables --single-transaction \
        --verbose --hex-blob --routines --triggers --all-databases |
    gzip -9 | s3cmd put - s3://s3-bucket/db-server-name.sql.gz

Du ombeds lösenordet, varefter säkerhetskopian startar.

Överföra data från en MySQL-server till en annan

Om du behöver kopiera en databas från en server till en annan har du två alternativ:

Alternativ 1:

  1. Lagra dumpfilen på källservern
  2. Kopiera dumpfilen till din destinationsserver
  3. Ladda dumpfilen till din destinationsserver

På källservern:

mysqldump [options] > dump.sql

Kopiera dumpfilen på destinationsservern och kör:

mysql [options] < dump.sql

Alternativ 2:

Om destinationsservern kan ansluta till värdservern kan du använda en pipeline för att kopiera databasen från en server till den andra:

På destinationsservern

mysqldump [options to connect to the source server] | mysql [options]

På samma sätt kan skriptet köras på källservern och skjuta till destinationen. I båda fallen är det troligtvis betydligt snabbare än alternativ 1.

Säkerhetskopieringsdatabas med lagrade procedurer och funktioner

Som standard lagrade procedurer och funktioner eller som inte genereras av mysqldump , måste du lägga till parametern --routines (eller -R ):

mysqldump -u username -p -R db_name > dump.sql

När du använder - --routines upprätthålls inte frimärken för skapande och ändring, istället bör du dumpa och ladda om innehållet i mysql.proc .



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow