MySQL
Back-up met mysqldump
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:
- Sla het dumpbestand op in de bronserver
- Kopieer het dumpbestand naar uw doelserver
- 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.