Der Client mysqldump ist ein Sicherungsprogramm, das ursprünglich von Igor Romanenko geschrieben wurde. Er kann zur Erstellung eines Speicherauszugs einer Datenbank oder einer Sammlung von Datenbanken zu Sicherungszwecken oder zur Übertragung von Daten auf einen anderen SQL-Server verwendet werden (dies muss nicht unbedingt ein MySQL Server sein). Der Speicherauszug enthält SQL-Anweisungen zur Erstellung und/oder zum Ausfüllen einer Tabelle.
Wenn Sie eine Sicherung auf dem Server durchführen und es
sich bei Ihren Tabellen ausschließlich um
MyISAM
-Tabellen handelt, sollten Sie
stattdessen die Verwendung von mysqlhotcopy
in Betracht ziehen, weil dies Sicherung und Wiederherstellung
erheblich beschleunigt. Siehe auch
Abschnitt 8.11, „mysqlhotcopy — Backup-Programm für Datenbanken“.
Es gibt drei Möglichkeiten, mysqldump aufzurufen:
shell>mysqldump [
shell>options
]db_name
[tables
]mysqldump [
shell>options
] --databasesdb_name1
[db_name2
db_name3
...]mysqldump [
options
] --all-databases
Wenn Sie auf db_name
folgend keine
Tabellen aufführen oder die Optionen
--databases
oder
--all-databases
verwenden, dann werden
Speicherauszüge ganzer Datenbanken erstellt.
Um eine Liste der Optionen zu erhalten, die Ihre Version von mysqldump unterstützt, führen Sie mysqldump --help aus.
Wenn Sie mysqldump ohne die Optionen
--quick
oder --opt
ausführen, lädt mysqldump den gesamten
Ergebnissatz in den Speicher, bevor der Speicherauszug
erstellt wird. Dies kann bei einem Speicherauszug einer
großen Datenbank ein Problem darstellen. Standardmäßig ist
die Option --opt
aktiviert, kann aber mit
--skip-opt
deaktiviert werden.
Wenn Sie eine relativ aktuelle Kopie von
mysqldump zur Erzeugung eines
Speicherauszugs verwenden, der in einen sehr alten MySQL
Server geladen werden soll, dann sollten Sie die Optionen
--opt
oder --extended-insert
nicht benutzen. Verwenden Sie stattdessen
--skip-opt
.
mysqldump unterstützt die folgenden Optionen:
--help
, -?
Zeigt eine Hilfemeldung an und wird dann beendet.
--add-drop-database
Fügt eine DROP DATABASE
-Anweisung vor
jede CREATE DATABASE
-Anweisung ein.
--add-drop-table
Fügt eine DROP TABLE
-Anweisung vor
jede CREATE TABLE
-Anweisung ein.
--add-locks
Setzt jeden Tabellenspeicherauszug zwischen eine
LOCK TABLES
- und eine UNLOCK
TABLES
-Anweisung. Hierdurch werden die
Einfügevorgänge beim Neuladen der Speicherauszugsdatei
beschleunigt. Siehe auch Abschnitt 7.2.16, „Geschwindigkeit von INSERT
-Anweisungen“.
--all-databases
, -A
Erstellt einen Speicherauszug aller Tabellen in allen
Datenbanken. Dies entspricht der Option
--databases
bei gleichzeitiger Nennung
aller Datenbanken auf der Befehlszeile.
--all-tablespaces
, -Y
Fügt zum Tabellenspeicherauszug alle SQL-Anweisungen
hinzu, die zur Erstellung von Tablespaces für eine
NDB Cluster
-Tabelle erforderlich sind.
Diese Informationen können nur auf diese Weise in der
Ausgabe von mysqldump angegeben werden.
Die Option ist derzeit nur für MySQL-Cluster-Tabellen
relevant.
Diese Option wurde in MySQL 5.1.6 hinzugefügt.
--allow-keywords
Erlaubt die Erstellung von Spaltennamen, die Schlüsselwörter sind. Dies funktioniert, indem jedem Spaltennamen der Tabellenname vorangestellt wird.
--comments[={0|1}]
Wenn 0
angegeben wird, unterdrückt die
Option zusätzliche Informationen in der
Speicherauszugsdatei wie etwa Programmversion,
Serverversion und Host. --skip-comments
hat den gleichen Effekt wie --comments=0
.
Der Standardwert ist 1
, d. h., die
genannten Informationen sind enthalten.
--compact
Erzeugt eine weniger ausführliche Ausgabe. Die Option
unterdrückt Kommentare und aktiviert die Optionen
--skip-add-drop-table
,
--no-set-names
,
--skip-disable-keys
und
--skip-add-locks
.
--compatible=
name
Erzeugt eine Ausgabe, bei der die Kompatibilität mit
anderen Datenbanksystemen oder älteren MySQL Servern
höher ist. name
kann folgende Werte
annehmen: ansi
,
mysql323
, mysql40
,
postgresql
, oracle
,
mssql
, db2
,
maxdb
,
no_key_options
,
no_table_options
oder
no_field_options
. Um mehrere Werte zu
verwenden, trennen Sie diese durch Kommata. Diese Werte
haben dieselbe Bedeutung wie die entsprechenden Optionen
zur Einstellung des SQL-Modus am Server. Siehe auch
Abschnitt 5.2.5, „Der SQL-Modus des Servers“.
Die Option garantiert keine Kompatibilität mit anderen
Servern. Vielmehr aktiviert sie nur diejenigen
SQL-Moduswerte, die zum gegebenen Zeitpunkt verfügbar
sind, um die Kompatibilität der Speicherauszugsausgabe zu
erhöhen. So führt --compatible=oracle
weder eine Zuordnung von Datentypen zu Oracle-Typen durch
noch wird die Oracle-Kommentarsyntax verwendet.
--complete-insert
, -c
Verwendet vollständige
INSERT
-Anweisungen, die auch
Spaltennamen enthalten.
--compress
, -C
Komprimiert alle Daten, die zwischen Client und Server ausgetauscht werden, sofern beide die Komprimierung unterstützen.
--create-options
Fügt alle MySQL-spezifischen Tabellenoptionen in die
CREATE TABLE
-Anweisungen ein.
--databases
, -B
Erstellt einen Speicherauszug mehrerer Datenbanken.
Normalerweise betrachtet mysqldump das
erste Namensargument auf der Befehlszeile als Datenbank-
und alle nachfolgenden Argumente als Tabellennamen. Bei
dieser Option werden jedoch alle Namensargumente als
Datenbanknamen betrachtet. CREATE
DATABASE
- und USE
-Anweisungen
werden für jede neue Datenbank in die Ausgabe eingefügt.
--debug[=
,
debug_options
]-#
[
debug_options
]
Schreibt ein Debuglog. Der String
debug_options
heißt häufig
'd:t:o,
.
Standardwert ist
file_name
''d:t:o,/tmp/mysqldump.trace'
.
--default-character-set=
charset_name
Verwendet charset_name
als
Standardzeichensatz. Siehe auch
Abschnitt 5.11.1, „Der für Daten und zum Sortieren benutzte Zeichensatz“. Sofern nicht angegeben,
verwendet mysqldump
utf8
.
--delayed-insert
Schreibt INSERT DELAYED
- statt
INSERT
-Anweisungen.
--delete-master-logs
Löscht auf einem Master-Replikationsserver nach
Erstellung des Speicherauszugs die Binärlogs. Diese
Option aktiviert automatisch
--master-data
.
--disable-keys
, -K
Setzt bei jeder Tabelle die
INSERT
-Anweisungen zwischen
/*!40000 ALTER TABLE
- und tbl_name
DISABLE KEYS
*/;/*!40000 ALTER TABLE
-Anweisungen. Dies beschleunigt das Laden der
Speicherauszugsdatei, weil die Indizes nach Einfügen
aller Datensätze erstellt werden. Diese Option ist nur
bei tbl_name
ENABLE KEYS
*/;MyISAM
-Tabellen wirksam.
--extended-insert
, -e
Verwendet die INSERT
-Syntax für
mehrere Datensätze (diese enthält verschiedene
VALUES
-Listen). Ergebnis sind eine
kleinere Speicherauszugsdatei und beschleunigte
Einfügeoperationen beim Neuladen der Datei.
--fields-terminated-by=…
,
--fields-enclosed-by=…
,
--fields-optionally-enclosed-by=…
,
--fields-escaped-by=…
,
--lines-terminated-by=…
Diese Optionen werden mit der Option -T
verwendet und haben dieselben Bedeutungen wie die
jeweiligen Klauseln für LOAD DATA
INFILE
. Siehe auch Abschnitt 13.2.5, „LOAD DATA INFILE
“.
--first-slave
, -x
Veraltet. Heißt jetzt --lock-all-tables
.
--flush-logs
, -F
Synchronisiert die Logdateien des MySQL Servers auf
Festplatte, bevor der Speicherauszugsvorgang gestartet
wird. Diese Option erfordert die Berechtigung
RELOAD
. Beachten Sie, dass, wenn Sie
diese Option in Verbindung mit der Option
--all-databases
(bzw.
-A
) verwenden, die Logs für
jede Datenbank, für die ein Speicherauszug erstellt
wird, synchronisiert werden. Eine Ausnahme
liegt vor, wenn Sie --lock-all-tables
oder --master-data
verwenden: In diesem
Fall werden die Logs nur einmal geschrieben, und zwar in
dem Augenblick, in dem alle Tabellen gesperrt sind. Wenn
Sie wollen, dass Speicherauszug und Logsynchronisierung im
exakt gleichen Moment erfolgen, sollten Sie
--flush-logs
wahlweise gemeinsam mit
--lock-all-tables
oder
--master-data
verwenden.
--force
, -f
Setzt die Ausführung auch dann fort, wenn ein SQL-Fehler während eines Speicherauszugsvorgangs auftritt.
--host=
,
host_name
-h
host_name
Speichert den Speicherauszug der Daten vom MySQL Server
auf den angegebenen Host. Der Standardhost ist
localhost
.
--hex-blob
Erstellt den Speicherauszug unter Verwendung der
Hexadezimalnotation (z. B. wird aus
'abc'
0x616263
).
Betroffen sind die Datentypen BINARY
,
VARBINARY
, BLOB
und
BIT
.
--lock-all-tables
, -x
Sperrt datenbankübergreifend alle Tabellen. Dieses wird
erreicht, indem eine globale Lesesperre für die
Gesamtdauer des Speicherauszugs erwirkt wird. Die Option
schaltet --single-transaction
und
--lock-tables
automatisch ab.
--lock-tables
, -l
Sperrt alle Tabellen vor Beginn des Speicherauszugs. Die
Tabellen werden im Falle von
MyISAM
-Tabellen mit READ
LOCAL
gesperrt, um nebenläufige
Einfügeoperationen durchführen zu können. Bei
transaktionssicheren Tabellen wie
InnoDB
und BDB
ist
--single-transaction
eine wesentlich
bessere Option, denn sie erfordert überhaupt kein Sperren
der Tabellen.
Beachten Sie, dass, wenn Sie Speicherauszüge mehrerer
Datenbanken erstellen, --lock-tables
die
Tabellen für jede Datenbank separat sperrt. Insofern
stellt diese Option nicht sicher, dass die Tabellen in der
Speicherauszugsdatei datenbankübergreifend logisch
konsistent sind. Die Tabellen in verschiedenen
Datenbanken, von denen ein Speicherauszug erstellt wird,
befinden sich unter Umständen in vollkommen
unterschiedlichen Zuständen.
--master-data[=
value
]
Schreibt Dateinamen und Position des Binärlogs in die
Ausgabe. Diese Option erfordert die Berechtigung
RELOAD
, und das Binärlog muss
aktiviert sein. Wenn der Optionswert 1 ist, werden
Position und Dateiname in die Form einer CHANGE
MASTER
-Anweisung in die Ausgabe des
Speicherauszugs geschrieben. Dies ermöglicht den Start
eines Slave-Servers an der korrekten Position in den
Binärlogs des Masters, wenn Sie diesen SQL-Speicherauszug
des Masters zur Konfiguration eines Slaves einsetzen. Wenn
der Optionswert 2 ist, dann wird die CHANGE
MASTER
-Anweisung als SQL-Kommentar geschrieben.
Dies ist auch die Standardaktion, wenn
value
nicht angegeben wird.
Die Option --master-data
aktiviert
--lock-all-tables
, sofern
--single-transaction
nicht ebenfalls
angegeben ist (in diesem Fall wird eine globale Lesesperre
nur für einen kurzen Zeitraum zum Beginn des
Speicherauszugsvorgangs erwirkt). (Siehe auch die
Beschreibung zu --single-transaction
.) In
allen Fällen erfolgen Vorgänge an Logs im exakten Moment
des Speicherauszugs. Die Option schaltet
--lock-tables
automatisch ab.
--no-create-db
, -n
Diese Option unterdrückt die CREATE
DATABASE
-Anweisungen, die andernfalls in der
Ausgabe enthalten wären, wenn die Optionen
--databases
oder
--all-databases
angegeben wurden.
--no-create-info
, -t
Es werden keine CREATE
TABLE
-Anweisungen geschrieben, die jede
gespeicherte Tabelle neu erstellen.
--no-data
, -d
Schreibt keine Datensatzinformationen für die Tabelle.
Dies ist recht nützlich, wenn Sie einen Speicherauszug
nur für die CREATE TABLE
-Anweisung
für die Tabelle erstellen wollen.
--opt
Dies ist eine Kurzform, die für folgende Option steht:
--add-drop-table --add-locks --create-options
--disable-keys --extended-insert --lock-tables --quick
--set-charset
. Ergebnis sollte ein schneller
Speicherauszugsprozess sein, an dessen Ende eine
Speicherauszugsdatei steht, die problemlos in einen MySQL
Server eingeladen werden kann.
Standardmäßig ist diese Option aktiviert, kann
aber mit --skip-opt
deaktiviert
werden. Um nur einige der mit
--opt
aktivierten Optionen zu
deaktivieren, verwenden Sie die entsprechenden
--skip
-Optionen (z. B.
--skip-add-drop-table
oder
--skip-quick
).
--password[=
,
password
]-p[
password
]
Verwendet das angegebene Passwort zur Verbindung mit dem
Server. Wenn Sie die Kurzform der Option
(-p
) verwenden, dürfen Sie
kein Leerzeichen zwischen Option und
Passwort setzen. Lassen Sie den Wert
password
auf die Option
--password
bzw. -p
folgend weg, dann werden Sie zur Eingabe des Passworts
aufgefordert.
Die Angabe eines Passworts direkt auf der Befehlszeile ist als nicht sicher einzuordnen. Siehe auch Abschnitt 5.9.6, „Wie Sie Ihre Kennwörter sicher halten“.
--port=
,
port_num
-P
port_num
Die TCP/IP-Portnummer, die für die Verbindung verwendet werden soll.
--protocol={TCP|SOCKET|PIPE|MEMORY}
Das zu verwendende Verbindungsprotokoll.
--quick
, -q
Diese Option ist nützlich, um einen Speicherauszug großer Tabellen zu erstellen. Hier wird mysqldump gezwungen, die Datensätze für eine Tabelle datensatzweise vom Server abzurufen, statt vor dem Schreiben die gesamte Ergebnismenge zu holen und sie temporär im Speicher abzulegen.
--quote-names
, -Q
Setzt Datenbank-, Tabellen- und Spaltennamen in
‘`
’-Zeichen. Wenn der
SQL-Modus ANSI_QUOTES
aktiviert ist,
werden die Namen in die
‘"
’-Anführungszeichen
gesetzt. Die Option ist standardmäßig aktiviert. Sie
kann mit --skip-quote-names
deaktiviert
werden, aber diese Option sollte nach anderen Optionen wie
etwa --compatible
angegeben werden, mit
denen --quote-names
aktiviert werden
könnte.
--replace
Schreibt REPLACE
- statt
INSERT
-Anweisungen. Wurde in MySQL
5.1.3 hinzugefügt.
--result-file=
,
file
-r
file
Die Ausgabe erfolgt direkt in die angegebene Datei. Diese
Option sollte unter Windows benutzt werden, um die
Konvertierung von Zeilenumbrüchen
(‘\n
’) in Folgen von
Absatzschaltung und Zeilenumbruch
(‘\r\n
’) zu verhindern.
--routines
, -R
Erstellt einen Speicherauszug gespeicherter Routinen
(Funktionen und Prozeduren) aus
Datenbankspeicherauszügen. Die mit
---routines
erzeugte Ausgabe enthält
CREATE PROCEDURE
- und CREATE
FUNCTION
-Anweisungen zur Neuerstellung der
Routinen. Allerdings enthalten diese Anweisungen keine
Attribute wie die Routinendefinition oder die Zeitstempel
für Erstellung und Änderung. Das bedeutet, dass die
Routinen, wenn sie neu geladen werden, mit dem
Definitionssatz für den neu ladenden Benutzer und den
Zeitstempeln für den Zeitpunkt des Neuladens erstellt
werden.
Wenn Sie Routinen benötigen, die mit den
Originalattributen für Definition und Zeitstempel neu
erstellt wurden, verwenden Sie --routines
nicht. Stattdessen erstellen Sie unter Verwendung eines
MySQL-Kontos, das die erforderlichen Berechtigungen für
die Datenbank mysql
hat, direkt einen
Speicherauszug des Inhalts der Tabelle
mysql.proc
und laden diesen Inhalt dann
neu.
Diese Option wurde in MySQL 5.1.2 hinzugefügt. Zuvor war ein Speicherauszug gespeicherter Routinen nicht möglich.
--set-charset
Fügt SET NAMES
zur Ausgabe hinzu. Die Option ist standardmäßig
aktiviert. Um die default_character_set
SET NAMES
-Anweisung
zu unterdrücken, verwenden Sie
--skip-set-charset
.
--single-transaction
Diese Option setzt eine SQL-Anweisung
BEGIN
ab, bevor der Speicherauszug vom
Server durchgeführt wird. Sie ist nur bei
transaktionssicheren Tabellen wie
InnoDB
und BDB
nützlich, denn der Speicherauszug spiegelt den
konsistenten Zustand der Datenbank zu dem Zeitpunkt wider,
an dem BEGIN
abgesetzt wurde, ohne dass
Anwendungen gesperrt werden.
Wenn Sie diese Option verwenden, sollten Sie beachten,
dass ein Speicherauszug nur von
InnoDB
-Tabellen in einem konsistenten
Zustand erstellt werden kann. MyISAM
-
oder HEAP
-Tabellen, für die unter
Verwendung dieser Option ein Speicherauszug erstellt wird,
können ihren Zustand trotzdem noch ändern.
Die Optionen --single-transaction
und
--lock-tables
schließen sich gegenseitig
aus, weil LOCK TABLES
implizit das
Schreiben anhängiger Transaktionen auslöst.
Um Speicherauszüge großer Tabellen zu erstellen, sollten
Sie diese Option mit --quick
kombinieren.
--socket=
,
path
-S
path
Bei Verbindungen mit localhost
ist dies
die zu verwendende Unix-Socketdatei bzw. (unter Windows)
der Name der zu verwendenden Named Pipe.
--skip-comments
Siehe Beschreibung zu --comments
.
--tab=
,
path
-T
path
Erzeugt tabulatorgetrennte Datendateien. Für jede
Tabelle, für die ein Speicherauszug erstellt wurde,
erzeugt mysqldump eine
-Datei,
welche die tbl_name
sqlCREATE TABLE
-Anweisung, mit
der die Tabelle erstellt wird, enthält, und eine
mit den Daten dieser Tabelle. Der Optionswert ist das
Verzeichnis, in das die Dateien geschrieben werden.
tbl_name
.txt
Standardmäßig werden die
.txt
-Datendateien mit
Tabulatorzeichen zwischen den Spaltenwerten und einem
Zeilenumbruch am Ende jeder Zeile formatiert. Das Format
kann aber auch explizit mit den Optionen
--fields-
und
xxx
--lines--
angegeben werden.
xxx
Hinweis: Diese Option
sollte nur dann verwendet werden, wenn
mysqldump auf demselben Computer läuft
wie der Server mysqld. Sie benötigen
die Berechtigung FILE
, und der Server
muss eine Berechtigung zum Schreiben von Dateien in das
von Ihnen angegebene Verzeichnis haben.
--tables
Setzt die Option --databases
bzw.
-B
außer Kraft. Alle auf die Option
folgenden Namensargumente werden als Tabellennamen
betrachtet.
--triggers
Erstellt einen Speicherauszug für Trigger für jede
Tabelle, für die ein Speicherauszug erstellt wurde. Die
Option ist standardmäßig aktiviert. Sie können sie
mithilfe von --skip-triggers
deaktivieren.
--tz-utc
Fügt SET TIME_ZONE='+00:00'
zur
Speicherauszugsdatei hinzu, sodass
TIMESTAMP
-Spalten in den Speicherauszug
integriert und dann auch auf Server in anderen Zeitzonen
geladen werden können. Ohne diese Option werden
TIMESTAMP
-Spalten in den Zeitzonen
gespeichert und geladen, die für den Quell- bzw.
Zielserver lokal sind; dies kann Werteänderungen zur
Folge haben. Außerdem schützt --tz-utc
gegen sommerzeitbedingte Änderungen.
--tz-utc
ist standardmäßig aktiviert.
Um es zu deaktivieren, verwenden Sie
--skip-tz-utc
. Diese Option wurde in
MySQL 5.1.2 hinzugefügt.
--user=
,
user_name
-u
user_name
Verwendet den angegebenen MySQL-Benutzernamen zur Verbindung mit dem Server.
--verbose
, -v
Ausführlicher Modus. Es werden zusätzliche Angaben zu den Aktivitäten des Programms ausgegeben.
--version
, -V
Zeigt die Versionsinformation an und wird dann beendet.
--where='
,
where_condition
'-w
'
where_condition
'
Fügt nur diejenigen Datensätze in den Speicherauszug
ein, die aufgrund der WHERE
-Bedingung
ausgewählt werden. Beachten Sie, dass die Bedingung
zwingend in Anführungszeichen gesetzt werden muss, wenn
sie Leerzeichen oder andere Zeichen enthält, die Ihr
Befehls-Interpreter als Sonderzeichen interpretiert.
Ein paar Beispiele:
--where="user='jimf'" -w"userid>1" -w"userid<1"
--xml
, -X
Schreibt die Ausgabe des Speicherauszugs als sauber formatiertes XML.
Sie können mit der Syntax
--
auch die folgenden Variablen einstellen:
var_name
=value
max_allowed_packet
Maximale Größe des Puffers für die Client/Server-Kommunikation. Der Maximalwert beträgt 1 Gbyte.
net_buffer_length
Ausgangsgröße des Puffers für die
Client/Server-Kommunikation. Wenn Sie Einfügeanweisungen
für mehrere Datensätze (wie etwa mit den Optionen
--extended-insert
oder
--opt
) erstellen, legt
mysqldump Datensätze an, deren
maximale Länge durch net_buffer_length
festgelegt ist. Wenn Sie den Wert dieser Variablen
erhöhen, sollten Sie auch sicherstellen, dass die
Variable net_buffer_length
am MySQL
Server mindestens genauso groß ist.
Es ist ferner möglich, Variablen über die Syntax
--set-variable=
oder var_name
=value
-O
einzustellen. Diese Syntax ist jedoch
veraltet.
var_name
=value
Die häufigste Anwendung von mysqldump ist wahrscheinlich die Erstellung eines Backups einer vollständigen Datenbank:
shell> mysqldump --opt db_name
> backup-file.sql
Die Speicherauszugsdatei können Sie wie folgt wieder in den Server einlesen.
shell> mysql db_name
< backup-file.sql
Oder aber so:
shell> mysql -e "source /path-to-backup/backup-file.sql
" db_name
mysqldump ist ferner sehr nützlich zum Ausfüllen von Datenbanken durch Kopieren von Daten von einem MySQL Server auf einen anderen:
shell> mysqldump --opt db_name
| mysql --host=remote_host
-C db_name
Sie können mit einem einzigen Befehl einen Speicherauszug mehrerer Datenbanken erstellen:
shell> mysqldump --databases db_name1
[db_name2
...] > my_databases.sql
Um einen Speicherauszug aller Datenbanken zu erstellen,
verwenden Sie die Option --all-databases
:
shell> mysqldump --all-databases > all_databases.sql
Bei InnoDB
-Tabellen bietet
mysqldump
die Möglichkeit, eine
Online-Sicherung zu erstellen:
shell> mysqldump --all-databases --single-transaction > all_databases.sql
Diese Datensicherung muss vor Beginn des
Speicherauszugsvorgangs lediglich (mit FLUSH TABLES
WITH READ LOCK
) eine globale Lesesperre für alle
Tabellen erwirken. Sobald diese Sperre aktiv ist, werden die
Koordinaten des Binärlogs ausgelesen, und die Sperre wird
aufgehoben. Wenn beim Absetzen der
FLUSH
-Anweisung gerade eine umfangreiche
Änderungsanweisung ausgeführt wird, dann – und nur dann!
– kann der MySQL Server stehen bleiben, bis diese lange
Anweisung ausgeführt ist; danach ist der Server sperrfrei.
Wenn die vom MySQL Server empfangenen Änderungsanweisungen
(in Bezug auf ihre Ausführungsdauer) kurz sind, sollte die
anfängliche Sperrperiode auch bei vielen Änderungen nicht
spürbar sein.
Bei der Point-in-Time-Wiederherstellung (die auch als „Roll-Forward“ bezeichnet wird, wenn Sie ein altes Backup wiederherstellen und die seitdem durchgeführten Änderungen neu aufspielen müssen) ist es häufig nützlich, das Binärlog zu rotieren (siehe Abschnitt 5.12.3, „Die binäre Update-Logdatei“) oder zumindest die Binärlogkoordinaten zu kennen, denen der Speicherauszug entspricht:
shell> mysqldump --all-databases --master-data=2 > all_databases.sql
Oder:
shell>mysqldump --all-databases --flush-logs --master-data=2
> all_databases.sql
Die gleichzeitige Verwendung von
--master-data
und
--single-transaction
stellt eine praktische
Möglichkeit dar, ein für die Point-in-Time-Wiederherstellung
geeignetes Onlinebackup zu erstellen, wenn Tabellen in der
InnoDB
-Engine gespeichert sind.
Weitere Informationen zur Erstellung von Backups finden Sie in Abschnitt 5.10.1, „Datenbank-Datensicherungen“, und Abschnitt 5.10.2, „Beispielhaftes Vorgehen zur Datensicherung und Wiederherstellung“.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.