Zoeken…


Syntaxis

  • mysqldump -u [gebruikersnaam] -p [wachtwoord] [andere opties] db_name> dumpFileName.sql /// Naar back-up enkele database
  • mysqldump -u [gebruikersnaam] -p [wachtwoord] [andere opties] db_name [tbl_name1 tbl_name2 tbl_name2 ...]> dumpFileName.sql /// Om een back-up te maken van een of meer tabellen
  • mysqldump -u [gebruikersnaam] -p [wachtwoord] [andere opties] --databases db_name1 db_name2 db_name3 ...> dumpFileName.sql /// Een back-up maken van een of meer complete databases
  • mysqldump -u [gebruikersnaam] -p [wachtwoord] [andere opties] --all-databases> dumpFileName.sql /// Een back-up maken van de volledige MySQL-server

parameters

Optie Effect
- # Server login-opties
-h ( --host ) Host (IP-adres of hostnaam) om verbinding mee te maken. Standaard is localhost ( 127.0.0.1 ) Voorbeeld: -h localhost
-u ( --user ) MySQL-gebruiker
-p ( --password ) MySQL wachtwoord. Belangrijk : wanneer u -p , mag er geen spatie staan tussen de optie en het wachtwoord. Voorbeeld: -pMyPassword
- # Dump-opties
--add-drop-database Voeg een DROP DATABASE instructie toe vóór elke CREATE DATABASE instructie. Handig als u databases op de server wilt vervangen.
--add-drop-table Voeg een DROP TABLE instructie toe vóór elke CREATE TABLE instructie. Handig als u tabellen in de server wilt vervangen.
--no-create-db Onderdruk de CREATE DATABASE instructies in de dump. Dit is handig als u zeker weet dat de database (s) die u dumpt al bestaan in de server waar u de dump gaat laden.
-t ( --no-create-info ) Onderdruk alle CREATE TABLE instructies in de dump. Dit is handig als u alleen de gegevens uit de tabellen wilt dumpen en het dumpbestand gebruikt om identieke tabellen in een andere database / server te vullen.
-d ( --no-data ) Schrijf geen tabelinformatie. Hiermee worden alleen de CREATE TABLE instructies gedumpt. Handig voor het maken van "sjabloon" -databases
-R ( --routines ) Neem opgeslagen procedures / functies op in de dump.
-K ( --disable-keys ) Schakel sleutels uit voor elke tabel voordat u de gegevens invoegt en schakel sleutels in nadat de gegevens zijn ingevoegd. Dit versnelt invoegingen alleen in MyISAM-tabellen met niet-unieke indexen.

Opmerkingen

De uitvoer van een mysqldump bewerking is een bestand met weinig commentaar dat opeenvolgende SQL-instructies bevat die compatibel zijn met de versie van MySQL-hulpprogramma's die werd gebruikt om het te genereren (met aandacht voor compatibiliteit met eerdere versies, maar geen garantie voor toekomstige versies). Het herstel van een mysqldump ed-database omvat dus de uitvoering van die instructies. Over het algemeen is dit bestand

  • DROP is de eerste opgegeven tabel of weergave
  • CREATE die tabel of weergave
  • Voor tabellen die zijn gedumpt met gegevens (dwz zonder de optie --no-data )
    • LOCK de tafel
    • INSERT alle rijen uit de oorspronkelijke tabel in één instructie in
  • UNLOCK TABLES
  • Herhaalt het bovenstaande voor alle andere tabellen en weergaven
  • DROP is de eerste opgenomen routine
  • CREATE dat routine
  • Herhaalt hetzelfde voor alle andere routines

De aanwezigheid van de DROP voor CREATE voor elke tabel betekent dat als het schema aanwezig is, ongeacht of het leeg is, het gebruik van een mysqldump bestand voor het herstel de gegevens daarin zal vullen of overschrijven.

Een back-up maken van een database of tabel

Maak een momentopname van een hele database:

mysqldump [options] db_name > filename.sql

Maak een momentopname van meerdere databases:

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

Maak een momentopname van een of meer tabellen:

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

Maak een momentopname met uitsluiting van een of meer tabellen:

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

De bestandsextensie .sql is volledig een kwestie van stijl. Elke extensie zou werken.

Gebruikersnaam en wachtwoord opgeven

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

Als u het wachtwoord op de opdrachtregel moet opgeven (bijvoorbeeld in een script), kunt u het toevoegen na de optie -p zonder spatie:

> mysqldump -u username -ppassword [other options]

Als uw wachtwoord spaties of speciale tekens bevat, vergeet dan niet om escaping te gebruiken, afhankelijk van uw shell / systeem.

Optioneel is het uitgebreide formulier:

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

(Expliciteit die het wachtwoord op de opdrachtregel aangeeft, wordt niet aanbevolen vanwege beveiligingsproblemen.)

Een back-up van een database of tabel herstellen

mysql [options] db_name < filename.sql

Let daar op:

  • db_name moet een bestaande database zijn;
  • uw geverifieerde gebruiker heeft voldoende rechten om alle opdrachten in uw filename.sql ;
  • De bestandsextensie .sql is volledig een kwestie van stijl. Elke extensie zou werken.
  • U kunt geen tabelnaam opgeven om in te laden, hoewel u er een kunt opgeven om van te dumpen. Dit moet worden gedaan binnen filename.sql .

Als alternatief kunt u, in het opdrachtregelprogramma MySQL , herstellen (of een ander script uitvoeren) met behulp van de opdracht source:

source filename.sql

of

\. filename.sql

mysqldump van een externe server met compressie

Om compressie over de draad te gebruiken voor een snellere overdracht, geeft u de optie --compress aan mysqldump . Voorbeeld:

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

Belangrijk: als u de bron db niet wilt vergrendelen, moet u ook --lock-tables=false . Maar misschien krijgt u op die manier geen intern consistent DB-beeld.

Om het bestand ook gecomprimeerd op te slaan, kunt u naar gzip .

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

herstel een uitgepakt mysqldump-bestand zonder de compressie ongedaan te maken

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

Opmerking: -c betekent schrijfuitvoer naar stdout.

Back-up rechtstreeks naar Amazon S3 met compressie

Als u een volledige back-up van een grote MySQL-installatie wilt maken en niet over voldoende lokale opslagruimte beschikt, kunt u deze rechtstreeks dumpen en comprimeren naar een Amazon S3-bucket. Het is ook een goede gewoonte om dit te doen zonder het DB-wachtwoord te hebben als onderdeel van de opdracht:

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

U wordt om het wachtwoord gevraagd, waarna de back-up wordt gestart.

Gegevens overdragen van de ene MySQL-server naar de andere

Als u een database van de ene server naar de andere moet kopiëren, hebt u twee opties:

Optie 1:

  1. Sla het dumpbestand op in de bronserver
  2. Kopieer het dumpbestand naar uw doelserver
  3. Laad het dumpbestand in uw doelserver

Op de bronserver:

mysqldump [options] > dump.sql

Kopieer op de doelserver het dumpbestand en voer het uit:

mysql [options] < dump.sql

Optie 2:

Als de doelserver verbinding kan maken met de hostserver, kunt u een pijplijn gebruiken om de database van de ene server naar de andere te kopiëren:

Op de doelserver

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

Op dezelfde manier kan het script op de bronserver worden uitgevoerd en naar de bestemming worden gepusht. In beide gevallen is het waarschijnlijk aanzienlijk sneller dan optie 1.

Back-updatabase met opgeslagen procedures en functies

Standaard opgeslagen procedures en functies of niet gegenereerd door mysqldump , moet u de parameter --routines (of -R ) toevoegen:

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

Bij het gebruik van --routines de --routines en wijzigingsstempels niet onderhouden, in plaats daarvan moet u de inhoud van mysql.proc dumpen en opnieuw laden.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow