Inhaltsverzeichnis
Es gibt eine Vielzahl verschiedener MySQL-Clientprogramme, die Verbindungen mit dem Server herstellen, um auf Datenbanken zuzugreifen oder administrative Aufgaben durchzuführen. Auch andere Hilfsprogramme sind verfügbar. Diese stellen keine Clientverbindung mit dem Server her, sondern führen MySQL-spezifische Operationen durch.
In diesem Kapitel bieten wir einen kurzen Überblick über diese Programme und beschreiben sie nachfolgend jeweils im Detail. In der Beschreibung der Programme sind die Syntax zum Aufruf und die unterstützten Optionen enthalten. In Kapitel 4, Benutzung von MySQL-Programmen, finden Sie allgemeine Informationen zum Aufruf von Programmen und zur Angabe von Programmoptionen.
Die folgende Liste stellt eine kurze Beschreibung der MySQL-Clientprogramme und Hilfsprogramme dar:
Mit diesem Hilfsprogramm können Sie
MyISAM
-Tabellen beschreiben, überprüfen,
optimieren und reparieren. Siehe auch
Abschnitt 8.2, „myisamchk — Hilfsprogramm für die Tabellenwartung von MyISAM“.
Ein Hilfsprogramm, das den Inhalt einer
MyISAM
-Logdatei verarbeitet. Siehe auch
Abschnitt 8.4, „myisampack — Erzeugung komprimierter, schreibgeschützter MyISAM Tabellen“.
Ein Hilfsprogramm, das MyISAM
-Tabellen
komprimiert und so kleinere schreibgeschützte Tabellen
erzeugt. Siehe auch Abschnitt 8.4, „myisampack — Erzeugung komprimierter, schreibgeschützter MyISAM Tabellen“.
Befehlszeilen-Tool zur interaktiven Eingabe von SQL-Anweisungen und zur Ausführung solcher Anweisungen aus einer Datei im Stapelbetriebsmodus. Siehe auch Abschnitt 8.5, „mysql — Das MySQL-Befehlszeilenwerkzeug mysql“.
Ein Skript, welches die Zugriffsberechtigungen für eine Kombination aus Hostnamen, Benutzernamen und Datenbank überprüft. Siehe auch Abschnitt 8.6, „mysqlaccess — Client für die Überprüfung von Zugriffsberechtigungen“.
Ein Client, der administrative Operationen durchführt. Hierzu gehören etwa das Erstellen und Löschen von Datenbanken, das Neuladen der Grant-Tabellen, das Synchronisieren von Tabellen auf Festplatte und das Neuöffnen von Logdateien. mysqladmin kann auch verwendet werden, um Versions-, Prozess- und Statusinformationen vom Server abzurufen. Siehe auch Abschnitt 8.7, „mysqladmin — Client für die Verwaltung eines MySQL Servers“.
Ein Hilfsprogramm zum Lesen von Anweisungen aus einem Binärlog. Die im Binärlog enthaltene Abfolge der ausgeführten Anweisungen kann zur Wiederherstellung nach einem Absturz nützlich sein. Siehe auch Abschnitt 8.8, „mysqlbinlog — Hilfsprogramm für die Verarbeitung binärer Logdateien“.
Ein Client zur Wartung von Tabellen. Überprüft, repariert, analysiert und optimiert Tabellen. Siehe auch Abschnitt 8.9, „mysqlcheck — Hilfsprogramm für die Wartung und Reparatur von Tabellen“.
Ein Client, der eine MySQL-Datenbank in Form von SQL-Anweisungen oder als tabulatorgetrennte Texte in eine Datei speichert. Siehe auch Abschnitt 8.10, „mysqldump — Programm zur Datensicherung“.
Ein Hilfsprogramm, welches schnelle Backups von
MyISAM
-Tabellen erstellt, während der
Server ausgeführt wird. Siehe auch
Abschnitt 8.11, „mysqlhotcopy — Backup-Programm für Datenbanken“.
Ein Client, der Textdateien mithilfe von LOAD DATA
INFILE
in die jeweiligen Tabellen importiert. Siehe
auch Abschnitt 8.12, „mysqlimport — Programm zum Datenimport“.
Ein Client, der Informationen zu Datenbanken, Tabellen, Spalten und Indizes anzeigt. Siehe auch Abschnitt 8.13, „mysqlshow — Anzeige von Informationen über Datenbanken, Tabellen und Spalten“.
Ein Client, dessen Zweck die Emulation einer Clientlast für einen MySQL Server ist und der zeitbezogene Angaben der einzelnen Operationsstufen meldet. Er simuliert den Zugriff mehrerer Clients auf den Server. Abschnitt 8.14, „mysqlslap — Client zur Lastemulation“.
Ein Hilfsprogramm, mit dem Prozesse terminiert werden, bei denen eine Übereinstimmung für einen Mustervergleich vorliegt. Abschnitt 8.15, „mysql_zap — Prozesse beenden, die einem Muster entsprechen“.
Ein Hilfsprogramm, das die Bedeutung von System- oder MySQL-Fehlercodes anzeigt. Siehe auch Abschnitt 8.16, „perror — Erklärung der Fehlercodes“.
Ein Hilfsprogramm, das Strings in eingegebenem Text ersetzt. Siehe auch Abschnitt 8.17, „replace — Hilfsprogramm für String-Ersetzungen“.
MySQL AB bietet auch eine Anzahl von Tools mit grafischer Oberfläche an, um MySQL Server zu administrieren oder anderweitig zu bearbeiten. Grundlegende Informationen zu diesen Programmen finden Sie in Kapitel 4, Benutzung von MySQL-Programmen.
Jedes MySQL-Programm akzeptiert viele verschiedene Optionen. Die
meisten Programme enthalten eine Option --help
,
über die Sie eine vollständige Beschreibung der verschiedenen
Programmoptionen erhalten können. Probieren Sie z. B.
mysql --help aus.
MySQL-Clientprogramme, die unter Verwendung der MySQL-Client/Server-Bibliothek mit dem Server kommunizieren, verwenden die folgenden Umgebungsvariablen:
MYSQL_UNIX_PORT | die vorgabeseitige Unix-Socketdatei. Sie wird für Verbindungen mit
localhost verwendet. |
MYSQL_TCP_PORT | die Standardportnummer. Wird für TCP/IP-Verbindungen verwendet. |
MYSQL_PWD | das Standardpasswort. |
MYSQL_DEBUG | gibt Trace-Optionen für das Debuggen an. |
TMPDIR | Verzeichnis, in dem Temporärtabellen und -dateien erstellt werden. |
Die Verwendung von MYSQL_PWD
ist nicht sicher.
Siehe auch Abschnitt 5.9.6, „Wie Sie Ihre Kennwörter sicher halten“.
Sie können die standardmäßigen oder durch Umgebungsvariablen festgelegten Optionswerte für alle Standardprogramme außer Kraft setzen, indem Sie andere Optionen in einer Optionsdatei oder über die Befehlszeile angeben. Siehe auch Abschnitt 4.3, „Angabe von Programmoptionen“.
Das Hilfsprogramm myisamchk holt
Informationen zu Ihren Datenbanktabellen und überprüft,
repariert und optimiert sie. myisamchk
funktioniert bei MyISAM
-Tabellen (d. h.
Tabellen, die über .MYD
- und
.MYI
-Dateien zum Speichern von Daten und
Indizes verfügen).
Rufen Sie myisamchk wie folgt auf:
shell> myisamchk [options
] tbl_name
...
Mithilfe von Optionen geben Sie myisamchk an, was es tun soll. Diese Optionen sind in den folgenden Abschnitten beschrieben. Eine Liste der Optionen erhalten Sie ferner, indem Sie myisamchk --help aufrufen.
Ohne Angabe von Optionen überprüft myisamchk Ihre Tabelle; dies ist die Standardoperation. Um weitere Informationen abzurufen oder myisamchk zur Durchführung von Korrekturmaßnahmen anzuweisen, geben Sie die Optionen wie nachfolgend beschrieben an.
tbl_name
ist dabei die
Datenbanktabelle, die Sie überprüfen oder reparieren wollen.
Führen Sie myisamchk in einem anderen als
dem Datenbankverzeichnis aus, dann müssen Sie den Pfad zum
Datenbankverzeichnis angeben, weil
myisamchk sonst nicht weiß, wo es die
Datenbank suchen soll. Eigentlich ist es
myisamchk sogar egal, ob die Dateien, die
Sie verarbeiten wollen, sich im Datenbankverzeichnis befinden.
Sie können die Dateien, die einer Datenbanktabelle
entsprechen, an eine andere Position kopieren und
Wiederherstellungsoperationen auch dort vornehmen.
Bei Bedarf können Sie auf der Befehlszeile auch mehrere
Tabellen für myisamchk angeben. Ferner ist
es möglich, eine Tabelle durch Angabe ihrer Indexdatei
(d. h. der Datei mit der Dateierweiterung
.MYI
) auszuwählen. Auf diese Weise
können Sie alle Tabellen in einem Verzeichnis auswählen,
indem Sie das Muster *.MYI
verwenden.
Befinden Sie sich beispielsweise in einem
Datenbankverzeichnis, dann können Sie alle dort vorhandenen
MyISAM
-Tabellen wie folgt überprüfen:
shell> myisamchk *.MYI
Befinden Sie sich nicht im Datenbankverzeichnis, dann können Sie alle dort vorhandenen Tabellen trotzdem überprüfen, indem Sie den Verzeichnispfad angeben:
shell> myisamchk /path/to/database_dir/*.MYI
Sie können sogar alle Tabellen in allen Datenbanken überprüfen. Hierzu geben Sie den Pfad zum MySQL-Datenverzeichnis mit Jokerzeichen an:
shell> myisamchk /path/to/datadir
/*/*.MYI
Die empfohlene Vorgehensweise zur schnellen Überprüfung
aller MyISAM
-Tabellen ist die folgende:
shell> myisamchk --silent --fast /path/to/datadir
/*/*.MYI
Wenn Sie alle MyISAM
-Tabellen überprüfen
und alle ggf. beschädigten Tabellen reparieren wollen,
können Sie den folgenden Befehl verwenden:
shell>myisamchk --silent --force --fast --update-state \
--key_buffer_size=64M --sort_buffer_size=64M \
--read_buffer_size=1M --write_buffer_size=1M \
/path/to/datadir/
*/*.MYI
Dieser Befehl setzt mindestens 64 Mbyte freien Arbeitsspeicher
voraus. Weitere Informationen zur Speicherzuweisung bei
myisamchk finden Sie in
Abschnitt 8.2.5, „Speicherbenutzung von myisamchk
“.
Sie müssen sicherstellen, dass kein anderes Programm die Tabellen verwendet, während Sie myisamchk ausführen. Andernfalls kann bei der Ausführung von myisamchk folgende Fehlermeldung angezeigt werden:
warning: clients are using or haven't closed the table properly
Das bedeutet, dass Sie gerade versuchen, eine Tabelle zu überprüfen, die von einem anderen Programm (z. B. dem Server mysqld) verändert wurde, welches die Datei noch nicht geschlossen hat oder abgestürzt ist, bevor es die Datei korrekt schließen konnte.
Wenn mysqld läuft, müssen Sie durch
Verwendung von FLUSH TABLES
das
Synchronisieren aller Änderungen an Tabellen erzwingen, die
noch im Speicher gepuffert sind. Nachfolgend müssen Sie
sicherstellen, dass kein anderes Programm die Tabellen
verwendet, während Sie myisamchk
ausführen. Die einfachste Möglichkeit, dieses Problem zu
umgehen, ist die Tabellenüberprüfung mit CHECK
TABLE
anstelle von myisamchk.
Die in diesem Abschnitt beschriebenen Optionen können für alle Arten von Wartungsvorgängen verwendet werden, die von myisamchk an Tabellen vorgenommen werden. Die nachfolgenden Abschnitte beschreiben dann Optionen, die spezifisch für bestimmte Operationen wie die Überprüfung oder Reparatur von Tabellen sind.
--help
, -?
Zeigt eine Hilfemeldung an und wird dann beendet.
--debug=
debug_options
,
-# debug_options
Schreibt ein Debuglog. Der String
debug_options
heißt häufig
'd:t:o,
.
file_name
'
--silent
, -s
Stummer Modus. Eine Ausgabe erfolgt nur, wenn ein Fehler
auftritt. Sie können -s
zweimal angeben
(-ss
), um myisamchk
vollständig zum Verstummen zu bringen.
--verbose
, -v
Ausführlicher Modus. Es werden zusätzliche Angaben zu
den Aktivitäten des Programms ausgegeben. Die Option kann
gemeinsam mit -d
und -e
eingesetzt werden. Verwenden Sie -v
mehrfach (-vv
, -vvv
), um
noch mehr Angaben auszugeben.
--version
, -V
Zeigt die Versionsinformation an und wird dann beendet.
--wait
, -w
Statt mit einem Fehler beendet zu werden, wenn die Tabelle gesperrt ist, wartet das Programm, bis die Sperre aufgehoben ist, und fährt dann mit der Ausführung fort. Beachten Sie, dass, wenn Sie mysqld mit deaktivierter externer Sperrung ausführen, die Tabelle nur durch einen weiteren myisamchk-Befehl gesperrt werden kann.
Sie können mit der Syntax
--
auch die folgenden Variablen einstellen:
var_name
=value
Variable | Standardwert |
decode_bits | 9 |
ft_max_word_len | versionsspezifisch |
ft_min_word_len | 4 |
ft_stopword_file | integrierte Liste |
key_buffer_size | 523264 |
myisam_block_size | 1024 |
read_buffer_size | 262136 |
sort_buffer_size | 2097144 |
sort_key_blocks | 16 |
stats_method | nulls_unequal |
write_buffer_size | 262136 |
Welche myisamchk-Variablen unterstützt werden und welche Standardwerte sie haben, ermitteln Sie mit myisamchk --help:
sort_buffer_size
wird benutzt, wenn die
Schlüssel durch Sortierung repariert werden, was bei
Verwendung von --recover
der Normalfall ist.
key_buffer_size
verwenden Sie bei der
Überprüfung der Tabelle mit --extend-check
oder aber dann, wenn die Schlüssel durch Einfügen von
Schlüsseldatensätzen in die Tabelle (ähnlich normalen
Einfügeoperationen) repariert werden. Die Reparatur über den
Schlüsselpuffer wird in den folgenden Fällen verwendet:
Sie verwenden --safe-recover
.
Die zur Sortierung der Schlüssel erforderlichen
Temporärdateien wären mehr als doppelt so groß wie bei
der direkten Erstellung der Schlüsseldatei. Dies passiert
häufig, wenn Sie große Schlüsselwerte für
CHAR
-, VARCHAR
- oder
TEXT
-Spalten haben, weil im Zuge des
Sortiervorgangs die vollständigen Schlüsselwerte
gespeichert werden müssen. Wenn Sie viel Speicher für
temporäre Daten haben und die Reparatur durch Sortierung
mithilfe von myisamchk erzwingen
wollen, verwenden Sie die Option
--sort-recover
.
Die Reparatur über den Schlüsselpuffer benötigt wesentlich weniger Festplattenspeicher als die Sortierung, ist allerdings auch langsamer.
Wenn Sie eine schnellere Reparatur wünschen, setzen Sie die
Variablen key_buffer_size
und
sort_buffer_size
auf einen Wert von ca. 25
Prozent Ihres verfügbaren Speichers. Sie können beide
Variablen auf hohe Werte setzen, da immer nur eine von ihnen
gleichzeitig verwendet wird.
myisam_block_size
ist die Größe, die für
Indexblöcke verwendet wird.
stats_method
beeinflusst, wie
NULL
-Werte bei der Erfassung von
Indexstatistiken behandelt werden, wenn die Option
--analyze
angegeben wurde. Sie agiert wie die
Systemvariable myisam_stats_method
. Weitere
Informationen entnehmen Sie der Beschreibung von
myisam_stats_method
in
Abschnitt 5.2.2, „Server-Systemvariablen“, und
Abschnitt 7.4.7, „Sammlung von MyISAM
-Indexstatistiken“.
ft_min_word_len
und
ft_max_word_len
geben die minimale bzw.
maximale Wortlänge für FULLTEXT
-Indizes
an. ft_stopword_file
gibt die Datei mit den
Stoppwörtern an. Diese Optionen müssen unter den nachfolgend
beschriebenen Umständen eingestellt werden.
Wenn Sie mit myisamchk eine Operation
durchführen, die Tabellenindizes verändert (dies können
etwa Reparatur- oder Analyseoperationen sein), dann werden die
FULLTEXT
-Indizes unter Verwendung der
standardmäßigen Volltextparameterwerte für die minimale und
maximale Wortlänge und die Stoppwortdatei verwendet, sofern
Sie nichts anderes angeben. Dies kann dazu führen, dass
Abfragen fehlschlagen.
Das Problem tritt auf, weil diese Parameter nur dem Server
bekannt sind. Sie werden nicht in den
MyISAM
-Indexdateien gespeichert. Um das
Problem zu umgehen, wenn Sie die minimale oder maximale
Wortlänge oder die Stoppwortdatei am Server geändert haben,
geben Sie dieselben Werte ft_min_word_len
,
ft_max_word_len
und
ft_stopword_file
für
myisamchk an, die Sie für
mysqld verwendet haben. Haben Sie also
beispielsweise die Mindestwortlänge auf 3 gesetzt, dann
können Sie eine Tabelle mit myisamchk wie
folgt reparieren:
shell> myisamchk --recover --ft_min_word_len=3 tbl_name
.MYI
Wenn Sie gewährleisten wollen, dass
myisamchk und der Server dieselben Werte
für Volltextparameter verwenden, können Sie sie jeweils in
die Abschnitte [mysqld]
und
[myisamchk]
einer Optionsdatei eintragen:
[mysqld] ft_min_word_len=3 [myisamchk] ft_min_word_len=3
Eine Alternative zur Verwendung von
myisamchk besteht in der Nutzung von
REPAIR TABLE
, ANALYZE
TABLE
, OPTIMIZE TABLE
oder
ALTER TABLE
. Diese Anweisungen werden vom
Server ausgeführt, der die korrekten Werte der
Volltextparameter kennt.
myisamchk unterstützt die folgenden Optionen für Operationen zur Tabellenüberprüfung:
--check
, -c
Überprüft die Tabelle auf Fehler. Dies ist die Standardoption; sie wird verwendet, wenn Sie keine Option angeben, die ausdrücklich einen Operationstyp spezifiziert.
--check-only-changed
, -C
Überprüft nur Tabellen, die seit der letzten Überprüfung geändert wurden.
--extend-check
, -e
Überprüft die Tabelle sehr gründlich. Das kann recht lange dauern, wenn die Tabelle viele Indizes hat. Sie sollten die Option nur in Extremfällen einsetzen. Normalerweise sollten Sie mit myisamchk oder myisamchk --medium-check ermitteln können, ob Fehler in einer Tabelle vorhanden sind.
Wenn Sie --extend-check
verwenden und
viel Speicher haben, können Sie die Variable
key_buffer_size
auf einen großen Wert
setzen. Hierdurch wird der Reparaturvorgang schneller
ausgeführt.
--fast
, -F
Überprüft nur Tabellen, die nicht ordnungsgemäß geschlossen wurden.
--force
, -f
Führt eine Reparaturoperation automatisch aus, wenn
myisamchk Fehler in der Tabelle findet.
Der Reparaturtyp ist derselbe, der auch mit der Option
--recover
bzw. -r
angegeben wird.
--information
, -i
Gibt informative Statistiken zur überprüften Tabelle aus.
--medium-check
, -m
Führt eine Überprüfung durch, die schneller ist als
eine --extend-check
-Operation. Hierdurch
werden nur 99,99 Prozent aller Fehler gefunden (dies
sollte allerdings in den meisten Fällen ausreichend
sein).
--read-only
, -T
Kennzeichnet die Tabelle nicht als überprüft. Das kann praktisch sein, wenn Sie mit myisamchk eine Tabelle überprüfen, die gerade von einer anderen Anwendung benutzt wird, welche keine Sperrung verwendet. Dies kann beispielsweise mysqld sein, wenn es mit deaktivierter externer Sperrung ausgeführt wird.
--update-state
, -U
Speichert Daten in der .MYI
-Datei,
die angeben, wann die Tabelle zum letzten Mal überprüft
wurde und ob sie abgestürzt war. Diese Option sollten Sie
verwenden, um die Option
--check-only-changed
optimal nutzen zu
können, nicht jedoch, wenn der Server
mysqld die Tabelle verwendet und ohne
externe Sperrung ausgeführt wurde.
myisamchk unterstützt die folgenden Optionen für Operationen zur Tabellenreparatur:
--backup
, -B
Erstellt ein Backup der Datei .MYD
als
.
file_name
-time
.BAK
--character-sets-dir=
path
Das Verzeichnis, in dem Zeichensätze installiert sind. Siehe auch Abschnitt 5.11.1, „Der für Daten und zum Sortieren benutzte Zeichensatz“.
--correct-checksum
Korrigiert die Prüfsummeninformation für die Tabelle.
--data-file-length=
len
,
-D len
Gibt die maximale Länge der Datendatei an (zur Neuerstellung der Datendatei, wenn diese „voll“ ist).
--extend-check
, -e
Führt eine Reparatur durch, die alle Datensätze aus der Datendatei wiederherzustellen versucht, bei denen dies möglich ist. Normalerweise werden hierdurch auch viele nicht mehr erforderliche Datensätze gefunden. Verwenden Sie diese Option nur, wenn Sie vollkommen verzweifelt sind.
--force
, -f
Überschreibt alte Zwischendateien (Dateien mit Namen wie
)
anstatt abzubrechen.
tbl_name
.TMD
--keys-used=
,
val
-k
val
Bei myisamchk ist die Option ein Bitwert, der angibt, welche Indizes aktualisiert werden müssen. Jedes Binärbit des Optionswerts entspricht einem Tabellenindex, wobei der erste Index Bit 0 ist. Der Optionswert 0 deaktiviert Änderungen an allen Indizes, was zur Beschleunigung von Einfügeoperationen genutzt werden kann. Deaktivierte Indizes können mit myisamchk -r reaktiviert werden.
--parallel-recover
, -p
Verwendet dieselbe Methode wie -r
und
-n
, erstellt aber alle Schlüssel
parallel unter Verwendung verschiedener Threads.
Der Code hat bislang nur Betaqualität.
Verwendung auf eigene Gefahr!
--quick
, -q
Beschleunigt die Reparatur, da die Datendatei nicht geändert wird. Sie können diese Option zweimal angeben, um die Änderung der Originaldatendatei durch myisamchk im Falle von Schlüsseldubletten zu erzwingen.
--recover
, -r
Führt eine Reparatur aus, die praktisch jedes Problem
behebt (ausgenommen sind eindeutige Schlüssel, die nicht
eindeutig sind – ein Fehler, der bei
MyISAM
-Tabellen extrem selten
vorkommt). Wenn Sie eine Tabelle wiederherstellen wollen,
sollten Sie diese Option zuerst ausprobieren.
--safe-recover
sollten Sie nur verwenden,
wenn myisamchk meldet, dass die Tabelle
mit --recover
nicht wiederhergestellt
werden kann. (In dem unwahrscheinlichen Fall, dass
--recover
fehlschlägt, bleibt die
Datendatei intakt.)
Wenn Sie sehr viel Speicher haben, sollten Sie den Wert
von sort_buffer_size
erhöhen.
--safe-recover
, -o
Führt eine Reparatur unter Verwendung einer alten
Wiederherstellungsmethode durch, die alle Datensätze der
Reihe nach ausliest und alle Indexbäume entsprechend den
gefundenen Datensätzen aktualisiert. Dies ist um eine
Größenordnung langsamer als --recover
,
kann aber ein paar sehr unwahrscheinliche Fälle beheben,
die --recover
nicht korrigiert. Diese
Methode verwendet überdies wesentlich weniger
Festplattenspeicher als --recover
.
Normalerweise sollten Sie zuerst eine Reparatur mit
--recover
durchführen und
--safe-recover
nur dann verwenden, wenn
--recover
fehlschlägt.
Wenn Sie sehr viel Speicher haben, sollten Sie den Wert
von key_buffer_size
erhöhen.
--set-collation=
name
Gibt die für die Tabellen zu verwendende Sortierung an. Dabei wird der Zeichensatzname implizit durch den ersten Teil des Sortierungsnamens festgelegt.
--sort-recover
, -n
Erzwingt die Verwendung der Sortierung zur Auflösung von Schlüsseln durch myisamchk auch für den Fall, dass die Temporärdateien sehr groß werden würden.
--tmpdir=
path
, -t
path
Pfad zu dem Verzeichnis, in dem die Temporärdateien
gespeichert werden. Wenn diese Einstellung nicht
vorgenommen wird, verwendet myisamchk
den Wert der Umgebungsvariablen TMPDIR
.
tmpdir
kann eine Liste der
Verzeichnispfade enthalten, in denen zyklisch abwechselnd
die Temporärdateien erstellt werden. Die Verzeichnispfade
sind unter Unix mit Doppelpunkten
(‘:
’) und unter Windows,
NetWare und OS/2 mit Semikola
(‘;
’) voneinander zu
trennen.
--unpack
, -u
Entpackt eine Tabelle, die mit myisampack gepackt wurde.
myisamchk unterstützt die folgenden Optionen für andere Vorgänge als die Überprüfung und Reparatur von Tabellen:
--analyze
, -a
Analysiert die Verteilung der Schlüsselwerte. Hierdurch
wird die Leistungsfähigkeit von Joins verbessert, denn
der Join-Optimierer kann die Reihenfolge, in der die
Tabellen verknüpft werden, und die zu verwendenden
Indizes besser auswählen. Um Angaben zur
Schlüsselverteilung zu erhalten, verwenden Sie den Befehl
myisamchk --description --verbose
tbl_name
oder die
Anweisung SHOW INDEX FROM
.
tbl_name
--description
, -d
Gibt eine Beschreibung der Tabelle aus.
--set-auto-increment[=
,
value
]-A[
value
]
Erzwingt für neue Datensätze den Start der
AUTO_INCREMENT
-Nummerierung beim
angegebenen Wert (oder einem höheren Wert, sofern
Datensätze mit derart großen
AUTO_INCREMENT
-Werten bereits vorhanden
sind). Wenn value
nicht
angegeben wurde, beginnen die
AUTO_INCREMENT
-Zahlen für neue
Datensätze beim höchsten derzeit in der Tabelle
vorhandenen Wert plus 1.
--sort-index
, -S
Sortiert die Blöcke des Indexbaums in absteigender Reihenfolge. Hierdurch werden Suchvorgänge optimiert und Tabellenscans, die Indizes benutzen, beschleunigt.
--sort-records=
N
, -R
N
Sortiert Datensätze nach einem bestimmten Index.
Hierdurch werden Ihre Daten stärker lokalisiert, und
bereichsbasierte SELECT
- und
ORDER BY
-Operationen, die diesen Index
benutzen, werden beschleunigt. (Wenn Sie diese Option zur
Sortierung einer Tabelle zum ersten Mal verwenden, kann
sie sehr langsam arbeiten.) Um die Indexnummern einer
Tabelle zu bestimmen, verwenden Sie SHOW
INDEX
. Hierdurch werden die Indizes einer
Tabelle in derselben Reihenfolge angezeigt, in der sie
auch myisamchk erkennt. Die Indizes
sind beginnend mit 1 nummeriert.
Wenn die Schlüssel nicht gepackt sind
(PACK_KEYS=0)
), dann haben sie dieselbe
Länge. Insofern überschreibt
myisamchk, wenn es Datensätze sortiert
und verschiebt, einfach nur Datensatzoffsets im Index.
Sind die Schlüssel hingegen gepackt
(PACK_KEYS=1
), dann muss
myisamchk die Schlüsselblöcke zuerst
entpacken, dann die Indizes neu erstellen und die
Schlüsselblöcke abschließend wieder packen. (In diesem
Fall ist die Neuerstellung der Indizes schneller als die
Aktualisierung der Offsets für jeden Index.)
Die Speicherreservierung ist für die Ausführung von myisamchk sehr wichtig. myisamchk verwendet niemals mehr Speicher als über seine speicherbezogenen Variablen angegeben. Wenn Sie myisamchk für sehr große Tabellen verwenden, sollten Sie zunächst entscheiden, wie viel Speicher Sie verwenden wollen. Standardmäßig werden zur Durchführung von Reparaturen nur etwa 3 Mbyte benutzt. Durch Verwendung höherer Werte können Sie die Verarbeitungsgeschwindigkeit von myisamchk beschleunigen. Wenn Sie beispielsweise mehr als 32 Mbyte RAM haben, könnten Sie Optionen wie die folgenden (zusätzlich zu ggf. anderen angegebenen Optionen) verwenden:
shell>myisamchk --sort_buffer_size=16M --key_buffer_size=16M \
--read_buffer_size=1M --write_buffer_size=1M ...
Die Nutzung von --sort_buffer_size=16M
sollte
in den meisten Fällen ausreichend sein.
Beachten Sie, dass myisamchk
Temporärdateien in TMPDIR
benutzt. Wenn
TMPDIR
auf ein Speicherdateisystem
verweist, kann es leicht zu Problemen aufgrund mangelnden
Hauptspeichers kommen. In diesem Fall führen Sie
myisamchk mit der Option
--tmpdir=
aus,
um ein Verzeichnis auf einem Dateisystem anzugeben, auf dem
mehr Speicher zur Verfügung steht.
path
Bei der Reparatur benötigt myisamchk auch eine Menge Festplattenkapazität.
Die doppelte Größe der Datendatei (einmal für die
Originaldatei, einmal für die Kopie). Dieser
Festplattenspeicher wird nicht benötigt, wenn Sie eine
Reparatur mit der Option --quick
durchführen, denn in diesem Fall wird nur die Indexdatei
neu erstellt. Der Festplattenspeicher muss auf demselben
Dateisystem wie die ursprüngliche Datendatei vorhanden
sein! (Das liegt daran, dass die Kopie im gleichen
Verzeichnis erstellt wird wie die Originaldatei.)
Platz für die neue Indexdatei, die die alte Datei ersetzt. Die alte Indexdatei wird zu Beginn der Reparaturoperation gekürzt, d. h., Sie können diesen Speicherbedarf in der Regel ignorieren. Der Festplattenspeicher muss auf demselben Dateisystem wie die ursprüngliche Indexdatei vorhanden sein!
Wenn Sie --recover
oder
--sort-recover
(nicht aber
--safe-recover
) verwenden, benötigen Sie
Platz für einen Sortierpuffer. Die folgende Formel
ermöglicht die Berechnung der erforderlichen Kapazität:
(largest_key
+row_pointer_length
) ×number_of_rows
× 2
Sie können die Länge der Schlüssel und
row_pointer_length
mit
myisamchk -dv
tbl_name
überprüfen. Diese Festplattenkapazität wird im
Temporärverzeichnis reserviert, das mit
TMPDIR
oder
--tmpdir=
angegeben wird.
path
Sollte während der Reparatur ein Problem in Bezug auf den
Festplattenspeicher auftreten, dann können Sie
--safe-recover
statt
--recover
verwenden.
myisamlog verarbeitet den Inhalt einer
MyISAM
-Logdatei.
Rufen Sie myisamlog wie folgt auf:
shell> myisamlog [options
] [log_file
[tbl_name
] ...]
Die Standardoperation ist die Aktualisierung
(-u
). Erfolgt eine Wiederherstellung (Option
-r
), dann werden alle Schreiboperationen und
ggf. Änderungen und Löschungen durchgeführt. Fehler werden
nur gezählt. Der Standardname der Logdatei lautet
myisam.log
, sofern kein Argument
log_file
übergeben wurde. Werden
auf der Befehlszeile Tabellen angegeben, dann werden auch nur
diese Tabellen aktualisiert.
myisamlog versteht die folgenden Optionen:
-?
, -I
Zeigt eine Hilfemeldung an und wird dann beendet.
-c
N
Führt nur N
Befehle aus.
-f
N
Gibt die maximale Anzahl offener Dateien an.
-i
Zeigt vor dem Beenden zusätzliche Informationen an.
-o
offset
Gibt den Startoffset an.
-p
N
Entfernt N
Komponenten aus dem
Pfad.
-r
Führt eine Wiederherstellungsoperation durch.
-R
record_pos_file
record_pos
Gibt die Datensatzpositionsdatei und die Datensatzposition an.
-u
Führt eine Aktualisierungsoperation durch.
-v
Ausführlicher Modus. Es werden zusätzliche Angaben zu den Aktivitäten des Programms ausgegeben. Diese Option kann mehrfach angegeben werden, um den Umfang der Ausgabe kontinuierlich zu erhöhen.
-w
write_file
Gibt die zu schreibende Datei an.
-V
Zeigt Versionsinformationen an.
Das Hilfsprogramm myisampack komprimiert
MyISAM
-Tabellen. Es komprimiert dabei jede
Spalte in der Tabelle separat. Normalerweise erzielt
myisampack für die Datendatei
Komprimierungsraten von 40 bis 70 Prozent.
Wird die Tabelle später verwendet, dann liest der Server die zur Dekomprimierung der Spalten erforderlichen Angaben in den Speicher ein. Hierdurch wird die Leistungsfähigkeit beim Zugriff auf einzelne Datensätze erheblich verbessert, da Sie nur genau einen Datensatz dekomprimieren müssen.
Sofern möglich, verwendet MySQL mmap()
für die Speicherzuordnung bei komprimierten Tabellen.
Funktioniert mmap()
nicht, dann nutzt MySQL
ersatzweise normale Schreib- und Leseoperationen für Dateien.
Beachten Sie bitte Folgendes:
Wenn der mysqld-Server mit deaktivierter externer Sperrung aufgerufen wurde, sollte myisampack nicht aufgerufen werden, sofern die Möglichkeit besteht, dass die Tabelle während des Komprimierungsvorgangs durch den Server aktualisiert werden könnte. Am besten wird der Server vor der Komprimierung der Tabellen beendet.
Wenn eine Tabelle gepackt wurde, ist sie schreibgeschützt. Dies ist normalerweise auch beabsichtigt (z. B. beim Zugriff auf komprimierte Tabellen auf einer CD). Die Möglichkeit, in eine gepackte Tabelle zu schreiben, ist von uns zur mittel- bis langfristigen Implementierung vorgesehen.
myisampack kann
BLOB
- oder
TEXT
-Spalten packen. (Das ältere
Programm pack_isam für
ISAM
-Tabellen bot diese Möglichkeit
nicht.)
Rufen Sie myisampack wie folgt auf:
shell> myisampack [options
] file_name
...
Jedes Dateinamensargument sollte der Name einer Indexdatei
(.MYI
-Datei) sein. Wenn Sie sich nicht im
Datenbankverzeichnis befinden, sollten Sie auch den Pfadnamen
zu der Datei angeben. Die Erweiterung
.MYI
dürfen Sie nach Belieben weglassen.
Nachdem Sie eine Tabelle mit myisampack komprimiert haben, sollten Sie myisamchk -rq zur Neuerstellung der Indizes verwenden. Siehe Abschnitt 8.2, „myisamchk — Hilfsprogramm für die Tabellenwartung von MyISAM“.
myisampack unterstützt die folgenden Optionen:
--help
, -?
Zeigt eine Hilfemeldung an und wird dann beendet.
--backup
, -b
Erstellt ein Backup der Datendateien aller Tabellen. Die
Sicherungsdateien erhalten den Namen
.
tbl_name
.OLD
--debug[=
,
debug_options
]-#
[
debug_options
]
Schreibt ein Debuglog. Der String
debug_options
heißt häufig
'd:t:o,
.
file_name
'
--force
, -f
Erzeugt auch dann eine gepackte Tabelle, wenn diese
größer als die Ursprungstabelle wird oder noch eine
Zwischendatei von myisampack vorhanden
ist. (myisampack erzeugt im Verlauf der
Komprimierung eine Zwischendatei namens
im Datenbankverzeichnis. Wenn Sie
myisampack terminieren, dann wird die
tbl_name
.TMD.TMD
-Datei unter Umständen nicht
gelöscht.) Normalerweise wird
myisampack mit einem Fehler beendet,
wenn es eine vorhandene Datei
findet. Mit tbl_name
.TMD--force
packt
myisampack die Tabelle jedoch in jedem
Fall.
--join=
,
big_tbl_name
-j
big_tbl_name
Fasst alle auf der Befehlszeile aufgeführten Tabellen zu
einer großen Tabelle
big_tbl_name
zusammen. Alle
Tabellen, die zusammengefasst werden sollen,
müssen eine identische Struktur
aufweisen (d. h. gleiche Spaltennamen und -typen, gleiche
Indizes usw.).
--packlength=
,
len
-p
len
Gibt die Speichergröße für die Datensatzlänge (in Byte) an. Der Wert darf zwischen 1 und 3 liegen. myisampack speichert alle Datensätze mit 1, 2 oder 3 Byte langen Längenzeigern. In den meisten normalen Fällen kann myisampack den korrekten Längenwert bestimmen, bevor es mit dem Packen der Datei beginnt. Es kann allerdings während des Packvorgangs feststellen, dass es eine geringere Länge hätte verwenden können. In diesem Fall gibt myisampack einen Hinweis aus, dass Sie, wenn Sie dieselbe Datei beim nächsten Mal packen, eine geringere Datensatzlänge verwenden können.
--silent
, -s
Stummer Modus. Eine Ausgabe erfolgt nur, wenn ein Fehler auftritt.
--test
, -t
Die Tabelle wird nicht gepackt, sondern das Packen wird lediglich geprüft.
--tmpdir=
,
path
-T
path
Verwendet das angegebene Verzeichnis als Position, an der myisamchk Temporärdateien erstellt.
--verbose
, -v
Ausführlicher Modus. Gibt Informationen zum Fortschritt des Komprimierungsvorgangs und -ergebnisses aus.
--version
, -V
Zeigt die Versionsinformation an und wird dann beendet.
--wait
, -w
Sorgt dafür, dass der Packvorgang nach einer Wartezeit neu versucht wird, wenn die Tabelle gerade verwendet wird. Wenn der mysqld-Server mit deaktivierter externer Sperrung aufgerufen wurde, sollte myisampack nicht aufgerufen werden, sofern die Möglichkeit besteht, dass die Tabelle während des Komprimierungsvorgangs durch den Server aktualisiert werden könnte.
Die nachfolgend gezeigte Befehlsfolge veranschaulicht eine typische Tabellenkomprimierungssitzung:
shell>ls -l station.*
-rw-rw-r-- 1 monty my 994128 Apr 17 19:00 station.MYD -rw-rw-r-- 1 monty my 53248 Apr 17 19:00 station.MYI -rw-rw-r-- 1 monty my 5767 Apr 17 19:00 station.frm shell>myisamchk -dvv station
MyISAM file: station Isam-version: 2 Creation time: 1996-03-13 10:08:58 Recover time: 1997-02-02 3:06:43 Data records: 1192 Deleted blocks: 0 Datafile parts: 1192 Deleted data: 0 Datafile pointer (bytes): 2 Keyfile pointer (bytes): 2 Max datafile length: 54657023 Max keyfile length: 33554431 Recordlength: 834 Record format: Fixed length table description: Key Start Len Index Type Root Blocksize Rec/key 1 2 4 unique unsigned long 1024 1024 1 2 32 30 multip. text 10240 1024 1 Field Start Length Type 1 1 1 2 2 4 3 6 4 4 10 1 5 11 20 6 31 1 7 32 30 8 62 35 9 97 35 10 132 35 11 167 4 12 171 16 13 187 35 14 222 4 15 226 16 16 242 20 17 262 20 18 282 20 19 302 30 20 332 4 21 336 4 22 340 1 23 341 8 24 349 8 25 357 8 26 365 2 27 367 2 28 369 4 29 373 4 30 377 1 31 378 2 32 380 8 33 388 4 34 392 4 35 396 4 36 400 4 37 404 1 38 405 4 39 409 4 40 413 4 41 417 4 42 421 4 43 425 4 44 429 20 45 449 30 46 479 1 47 480 1 48 481 79 49 560 79 50 639 79 51 718 79 52 797 8 53 805 1 54 806 1 55 807 20 56 827 4 57 831 4 shell>myisampack station.MYI
Compressing station.MYI: (1192 records) - Calculating statistics normal: 20 empty-space: 16 empty-zero: 12 empty-fill: 11 pre-space: 0 end-space: 12 table-lookups: 5 zero: 7 Original trees: 57 After join: 17 - Compressing file 87.14% Remember to run myisamchk -rq on compressed tables shell>ls -l station.*
-rw-rw-r-- 1 monty my 127874 Apr 17 19:00 station.MYD -rw-rw-r-- 1 monty my 55296 Apr 17 19:04 station.MYI -rw-rw-r-- 1 monty my 5767 Apr 17 19:00 station.frm shell>myisamchk -dvv station
MyISAM file: station Isam-version: 2 Creation time: 1996-03-13 10:08:58 Recover time: 1997-04-17 19:04:26 Data records: 1192 Deleted blocks: 0 Datafile parts: 1192 Deleted data: 0 Datafile pointer (bytes): 3 Keyfile pointer (bytes): 1 Max datafile length: 16777215 Max keyfile length: 131071 Recordlength: 834 Record format: Compressed table description: Key Start Len Index Type Root Blocksize Rec/key 1 2 4 unique unsigned long 10240 1024 1 2 32 30 multip. text 54272 1024 1 Field Start Length Type Huff tree Bits 1 1 1 constant 1 0 2 2 4 zerofill(1) 2 9 3 6 4 no zeros, zerofill(1) 2 9 4 10 1 3 9 5 11 20 table-lookup 4 0 6 31 1 3 9 7 32 30 no endspace, not_always 5 9 8 62 35 no endspace, not_always, no empty 6 9 9 97 35 no empty 7 9 10 132 35 no endspace, not_always, no empty 6 9 11 167 4 zerofill(1) 2 9 12 171 16 no endspace, not_always, no empty 5 9 13 187 35 no endspace, not_always, no empty 6 9 14 222 4 zerofill(1) 2 9 15 226 16 no endspace, not_always, no empty 5 9 16 242 20 no endspace, not_always 8 9 17 262 20 no endspace, no empty 8 9 18 282 20 no endspace, no empty 5 9 19 302 30 no endspace, no empty 6 9 20 332 4 always zero 2 9 21 336 4 always zero 2 9 22 340 1 3 9 23 341 8 table-lookup 9 0 24 349 8 table-lookup 10 0 25 357 8 always zero 2 9 26 365 2 2 9 27 367 2 no zeros, zerofill(1) 2 9 28 369 4 no zeros, zerofill(1) 2 9 29 373 4 table-lookup 11 0 30 377 1 3 9 31 378 2 no zeros, zerofill(1) 2 9 32 380 8 no zeros 2 9 33 388 4 always zero 2 9 34 392 4 table-lookup 12 0 35 396 4 no zeros, zerofill(1) 13 9 36 400 4 no zeros, zerofill(1) 2 9 37 404 1 2 9 38 405 4 no zeros 2 9 39 409 4 always zero 2 9 40 413 4 no zeros 2 9 41 417 4 always zero 2 9 42 421 4 no zeros 2 9 43 425 4 always zero 2 9 44 429 20 no empty 3 9 45 449 30 no empty 3 9 46 479 1 14 4 47 480 1 14 4 48 481 79 no endspace, no empty 15 9 49 560 79 no empty 2 9 50 639 79 no empty 2 9 51 718 79 no endspace 16 9 52 797 8 no empty 2 9 53 805 1 17 1 54 806 1 3 9 55 807 20 no empty 3 9 56 827 4 no zeros, zerofill(2) 2 9 57 831 4 no zeros, zerofill(1) 2 9
myisampack zeigt die folgenden Informationen an:
normal
Anzahl der Spalten, für die keine zusätzliche Komprimierung verwendet wird.
empty-space
Anzahl der Spalten, die ausschließlich aus Leerzeichen bestehende Werte enthalten. Diese benötigen genau ein Bit.
empty-zero
Anzahl der Spalten, die ausschließlich aus binären Nullen bestehende Werte enthalten. Diese benötigen genau 1 Bit.
empty-fill
Anzahl der Integer-Spalten, die nicht den gesamten
Bytebereich des entsprechenden Typs besetzen. Diese werden
auf einen kleineren Typ umgestellt. So kann beispielsweise
eine BIGINT
-Spalte (8 Byte) als
TINYINT
-Spalte (1 Byte) gespeichert
werden, wenn alle in ihr enthaltenen Werte zwischen
-128
und 127
liegen.
pre-space
Anzahl der Dezimalspalten, die mit Leerzeichen am Anfang gespeichert werden. In diesem Fall enthält jeder Wert die Anzahl dieser Leerzeichen.
end-space
Anzahl der Spalten, die viele Leerzeichen am Ende aufweisen. In diesem Fall enthält jeder Wert die Anzahl dieser Leerzeichen.
table-lookup
Die Spalte enthielt nur eine kleine Anzahl verschiedener
Werte und wurde deswegen vor der Komprimierung in eine
ENUM
-Spalte konvertiert.
zero
Anzahl der Spalten, in der alle Werte null sind.
Original trees
Anfängliche Anzahl der Huffman-Bäume.
After join
Anzahl der separaten Huffman-Bäume, die nach dem Verknüpfen von Bäumen zum Zwecke der Speicherersparnis übrig bleiben.
Nachdem eine Tabelle komprimiert wurde, zeigt myisamchk -dvv zusätzliche Informationen zu allen Tabellenspalten an:
Type
Der Datentyp. Der Wert kann die folgenden Deskriptoren enthalten:
constant
Alle Datensätze haben denselben Wert.
no endspace
Leerzeichen am Ende nicht speichern.
no endspace, not_always
Leerzeichen am Ende nicht speichern, für alle Werte keine Komprimierung für Leerzeichen am Ende durchführen.
no endspace, no empty
Leerzeichen am Ende nicht speichern. Leere Werte nicht speichern.
table-lookup
Die Spalte wurde in eine
ENUM
-Spalte konvertiert.
zerofill(
N
)
Die N
höchstwertigen Bytes
im Wert sind immer 0 und werden nicht gespeichert.
no zeros
Nullen nicht speichern.
always zero
Nullwerte werden nur mit einem Bit gespeichert.
Huff tree
Anzahl der mit der Spalte verknüpften Huffman-Bäume.
Bits
Anzahl der im Huffman-Baum verwendeten Bits.
Nachdem Sie myisampack ausgeführt haben, müssen Sie myisamchk starten, um die Indizes neu zu erstellen. Zur gleichen Zeit können Sie auch die Indexblöcke sortieren und Statistiken erstellen, die der MySQL-Optimierer benötigt, um effizienter arbeiten zu können:
shell> myisamchk -rq --sort-index --analyze tbl_name
.MYI
Nachdem Sie die gepackte Tabelle im MySQL-Datenbankverzeichnis installiert haben, sollten Sie mysqladmin flush-tables ausführen, um die Verwendung der neuen Tabelle durch mysqld zu erzwingen.
Um eine gepackte Tabelle zu entpacken, verwenden Sie die
Option --unpack
für
myisamchk.
mysql ist eine einfache SQL-Shell (mit
GNU-readline
-Fähigkeiten). Es unterstützt
interaktiven wie auch nichtinteraktiven Einsatz. Bei
interaktiver Nutzung werden die Abfrageergebnisse im
ASCII-Tabellenformat angezeigt. Wird es hingegen
nichtinteraktiv verwendet (z. B. als Filter), dann wird das
Ergebnis durch Tabulatoren getrennt aufgelistet. Das
Ausgabeformat kann mit den folgenden Befehlsoptionen
beeinflusst werden.
Wenn Sie bei großen Ergebnismengen Probleme aufgrund
mangelnden Speichers haben, verwenden Sie die Option
--quick
. Hierdurch wird
mysql gezwungen, die Ergebnisse
datensatzweise vom Server abzurufen, statt vor der Anzeige die
gesamte Ergebnismenge zu holen und sie temporär im Speicher
abzulegen. Dies wird durch Rückgabe der Ergebnismenge
mithilfe der C-API-Funktion
mysql_use_result()
in der
Client/Server-Bibliothek statt mit
mysql_store_result()
ermöglicht.
Die Verwendung von mysql ist ganz leicht. Rufen Sie es einfach wie folgt über die Eingabeaufforderung Ihres Befehls-Interpreters auf:
shell> mysql db_name
Oder:
shell> mysql --user=user_name
--password=your_password
db_name
Geben Sie dann eine SQL-Anweisung ein, die auf
‘;
’, \g
oder
\G
endet, und betätigen Sie die
Eingabetaste.
Sie können SQL-Anweisungen wie folgt in einer Skriptdatei (Stapelverarbeitungsdatei) ausführen:
shell> mysql db_name
< script.sql
> output.tab
mysql unterstützt die folgenden Optionen:
Zeigt eine Hilfemeldung an und wird dann beendet.
Gibt die Ergebnisse mit einem Tabulator als Spaltentrennzeichen aus. Jeder Datensatz beginnt in einer neuen Zeile. Bei dieser Option verwendet mysql die Verlaufsdatei nicht.
Das Verzeichnis, in dem Zeichensätze installiert sind. Siehe auch Abschnitt 5.11.1, „Der für Daten und zum Sortieren benutzte Zeichensatz“.
Komprimiert alle Daten, die zwischen Client und Server ausgetauscht werden, sofern beide die Komprimierung unterstützen.
--database=
,
db_name
-D
db_name
Die zu verwendende Datenbank. Diese Option ist in erster Linie für Optionsdateien gedacht.
--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/mysql.trace'
.
Gibt einige Debuginformationen aus, wenn das Programm beendet wird.
--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“.
--execute=
,
statement
-e
statement
Führt die Anweisung aus und wird dann beendet. Das
Standardausgabeformat entspricht dem mit
--batch
erzeugten. Einige Beispiele
finden Sie in Abschnitt 4.3.1, „Befehlszeilenoptionen für mysqld“.
Das Programm wird auch dann fortgesetzt, wenn ein SQL-Fehler auftritt.
--host=
,
host_name
-h
host_name
Stellt eine Verbindung zum MySQL Server auf dem angegebenen Host her.
Erzeugt eine HTML-formatierte Ausgabe.
Ignoriert Leerzeichen nach Funktionsnamen. Die Auswirkung
dieser Option wird in der Erläuterung zu
IGNORE_SPACE
in
Abschnitt 5.2.5, „Der SQL-Modus des Servers“, beschrieben.
Aktiviert oder deaktiviert die
LOCAL
-Funktionalität für
LOAD DATA INFILE
. Ohne angegebenen Wert
aktiviert die Option LOCAL
. Die Option
kann als --local-infile=0
oder als
--local-infile=1
angegeben werden, wenn
LOCAL
ausdrücklich deaktiviert bzw.
aktiviert werden soll. Die Aktivierung von
LOCAL
wirkt sich nicht aus, wenn die
Unterstützung durch den Server fehlt.
Aktiviert benannte mysql-Befehle. Neben
Befehlen im Kurzformat sind auch solche mit langen Namen
zulässig. Beispielsweise werden sowohl
quit
als auch \q
akzeptiert. Siehe auch Abschnitt 8.5.2, „mysql-Befehle“.
Das automatische Rehashing wird unterbunden. Diese Option
sorgt zwar für einen schnelleren Start von
mysql, aber Sie müssen den Befehl
rehash
absetzen, wenn Sie die
Vervollständigung von Tabellen- und Spaltennamen
verwenden wollen.
Unterbindet die Ausgabe eines Warntons bei Auftreten eines Fehlers.
Deaktiviert benannte Befehle. Verwenden Sie nur die Form
\*
oder setzen Sie benannte Befehle nur
am Anfang einer Zeile ein, die mit einem Semikolon
(‘;
’) endet.
mysql startet standardmäßig mit
aktivierter Option. Allerdings
funktionieren Befehle im langen Format auch bei dieser
Option noch in der ersten Zeile. Siehe auch
Abschnitt 8.5.2, „mysql-Befehle“.
Die Abfrageergebnisse sollen nicht mit dem Pager (d. h. nicht seitenweise) ausgegeben werden. Abschnitt 8.5.2, „mysql-Befehle“, enthält eine eingehendere Beschreibung zum Pager.
Unterbindet das Kopieren der Ausgabe in einer Datei. Abschnitt 8.5.2, „mysql-Befehle“, enthält eine eingehendere Beschreibung von Tee-Dateien.
Ignoriert alle Anweisungen mit Ausnahme derjenigen, die an die auf der Befehlszeile genannte Standarddatenbank gerichtet sind. Dies ist nützlich, um Aktualisierungen anderer Datenbanken im Binärlog zu übergehen.
Verwendet den angegebenen Befehl zur Anzeige der
Abfrageausgabe Seite für Seite. Wird der Befehl
weggelassen, dann wird der Standardpager verwendet, der in
Ihrer Umgebungsvariable PAGER
gespeichert ist. Gültige Pager sind
less, more,
cat [> filename] usw. Diese Option
wird nur unter Unix verwendet. Im Stapelbetrieb
funktioniert sie nicht. Abschnitt 8.5.2, „mysql-Befehle“,
enthält eine eingehendere Beschreibung zum Pager.
--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“.
Die TCP/IP-Portnummer, die für die Verbindung verwendet werden soll.
Setzt die Eingabeaufforderung auf das angegebene Format.
Standardwert ist mysql>
. Die
Sondersequenzen, die die Eingabeaufforderung enthalten
kann, sind unter Abschnitt 8.5.2, „mysql-Befehle“,
beschrieben.
--protocol={TCP|SOCKET|PIPE|MEMORY}
Das zu verwendende Verbindungsprotokoll.
Unterbindet die Zwischenspeicherung der einzelnen Abfrageergebnisse (d. h., jeder Datensatz wird direkt beim Empfang angezeigt). Hierdurch kann der Server verlangsamt werden, wenn die Ausgabe aussetzt. Bei dieser Option verwendet mysql die Verlaufsdatei nicht.
Schreibt Spaltenwerte ohne Konvertierung mit
Escape-Zeichen. Wird häufig mit der Option
--batch
verwendet.
Wenn die Verbindung zum Server abbricht, wird automatisch
eine Wiederverbindung versucht. Bei jedem
Verbindungsabbruch wird genau ein Wiederverbindungsversuch
unternommen. Um diese Versuche zu unterbinden, verwenden
Sie --skip-reconnect
.
--safe-updates
,
--i-am-a-dummy
, -U
Gestattet nur diejenigen UPDATE
- und
DELETE
-Anweisungen, die über
Schlüsselwerte angeben, welche Datensätze zu ändern
sind. Wenn Sie diese Option in einer Optionsdatei
angegeben haben, können Sie sie mithilfe von
--safe-updates
auf der Befehlszeile
außer Kraft setzen. Weitere Informationen zu dieser
Option finden Sie in Abschnitt 8.5.4, „mysql: Tipps“.
Sendet kein Passwort im alten (d. h. vor MySQL 4.1.1 gültigen) Format an den Server. Hierdurch werden Verbindungen auf solche Server beschränkt, die das neue Passwortformat verwenden.
Sorgt dafür, dass – sofern erforderlich – nach jeder Anweisung Warnungen angezeigt werden. Diese Option gilt für den interaktiven und den Stapelbetrieb.
Ignoriert SIGINT
-Signale (diese werden
normalerweise durch Eingabe von
Strg+C
abgesetzt).
Stummer Modus. Erzeugt weniger Ausgabedaten. Diese Option kann mehrfach angegeben werden, um den Umfang der Ausgabe kontinuierlich zu verringern.
Schreibt keine Spaltennamen in die Ergebnisse.
Schreibt keine Zeilennummern für Fehler. Dies ist praktisch, wenn Sie Ergebnisdateien vergleichen wollen, die Fehlermeldungen enthalten.
Bei Verbindungen mit localhost
ist dies
die zu verwendende Unix-Socketdatei bzw. (unter Windows)
der Name der zu verwendenden Named Pipe.
Zeigt die Ausgabe im Tabellenformat an. Dies ist das Standardverhalten bei interaktivem Betrieb und kann zudem für die Ausgabe im Stapelbetrieb verwendet werden.
Hängt eine Kopie der Ausgabe an die angegebene Datei an. Diese Option funktioniert im Stapelbetrieb nicht. Eine eingehendere Beschreibung von Tee-Dateien finden Sie in Abschnitt 8.5.2, „mysql-Befehle“.
Synchronisiert den Puffer nach jeder Abfrage.
--user=
,
user_name
-u
user_name
Verwendet den angegebenen MySQL-Benutzernamen zur Verbindung mit dem Server.
Ausführlicher Modus. Es werden zusätzliche Angaben zu
den Aktivitäten des Programms erzeugt. Diese Option kann
mehrfach angegeben werden, um den Umfang der Ausgabe
kontinuierlich zu erhöhen. (Beispielsweise erzeugt
-v -v -v
auch im Stapelbetrieb eine
Ausgabe im Tabellenformat.)
Zeigt die Versionsinformation an und wird dann beendet.
Gibt die Abfrageausgabe vertikal angeordnet aus (d. h.
eine Zeile pro Spaltenwert). Ohne diese Option können Sie
die vertikale Ausgabe für einzelne Anweisungen festlegen,
indem Sie sie mit \G
abschließen.
Wenn die Verbindung nicht hergestellt werden kann, erfolgt anstelle eines Abbruchs nach einer Wartezeit ein neuer Verbindungsversuch.
Erzeugt eine XML-formatierte Ausgabe.
Sie können mit der Syntax
--
auch die folgenden Variablen einstellen:
var_name
=value
Anzahl der Sekunden bis zur Zeitüberschreitung der
Verbindung. (Der Vorgabewert ist 0
.)
Maximaler Umfang der vom Server gesendeten oder empfangenen Pakete. (Der Vorgabewert ist 16 Mbyte.)
Das automatische Limit für Datensätze in einem Join bei
Verwendung von --safe-updates
. (Der
Vorgabewert beträgt 1.000.000.)
Puffergröße für die TCP/IP- und Socketkommunikation. (Der Vorgabewert ist 16 Kbyte.)
Automatisches Limit für
SELECT
-Anweisungen bei Verwendung von
--safe-updates
. (Der Vorgabewert beträgt
1.000.)
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
Unter Unix schreibt der mysql-Client einen
Eintrag mit ausgeführten Anweisungen in eine Verlaufsdatei.
Standardmäßig heißt diese Verlaufsdatei
.mysql_history
und wird im
Stammverzeichnis erstellt. Durch Einstellen der
Umgebungsvariablen MYSQL_HISTFILE
können
Sie eine andere Datei angeben.
Wenn Sie keine Verlaufsdatei führen wollen, entfernen Sie
zunächst .mysql_history
(sofern
vorhanden) und verwenden daraufhin eine der folgenden
Methoden:
Setzen Sie die Variable MYSQL_HISTFILE
auf /dev/null
. Damit diese
Einstellung bei jeder Anmeldung angewendet wird, müssen
Sie sie in eine der Startdateien Ihrer Shell schreiben.
Erstellen Sie .mysql_history
als
symbolische Verknüpfung auf
/dev/null
:
shell> ln -s /dev/null $HOME/.mysql_history
Dies müssen Sie nur einmal tun.
mysql sendet jede von Ihnen abgesetzte
SQL-Anweisung zur Ausführung an den Server. Es gibt aber auch
eine Reihe von Befehlen, die mysql selbst
interpretiert. Eine Liste dieser Befehle erhalten Sie, indem
Sie help
oder \h
an der
Eingabeaufforderung mysql>
eingeben:
mysql> help
List of all MySQL commands:
Note that all text commands must be first on line and end with ';'
? (\?) Synonym for `help'.
clear (\c) Clear command.
connect (\r) Reconnect to the server. Optional arguments are db and host.
delimiter (\d) Set statement delimiter. NOTE: Takes the rest of the line as
new delimiter.
edit (\e) Edit command with $EDITOR.
ego (\G) Send command to mysql server, display result vertically.
exit (\q) Exit mysql. Same as quit.
go (\g) Send command to mysql server.
help (\h) Display this help.
nopager (\n) Disable pager, print to stdout.
notee (\t) Don't write into outfile.
pager (\P) Set PAGER [to_pager]. Print the query results via PAGER.
print (\p) Print current command.
prompt (\R) Change your mysql prompt.
quit (\q) Quit mysql.
rehash (\#) Rebuild completion hash.
source (\.) Execute an SQL script file. Takes a file name as an argument.
status (\s) Get status information from the server.
system (\!) Execute a system shell command.
tee (\T) Set outfile [to_outfile]. Append everything into given
outfile.
use (\u) Use another database. Takes database name as argument.
warnings (\W) Show warnings after every statement.
nowarning (\w) Don't show warnings after every statement.
Für jeden Befehl gibt es eine Lang- und eine Kurzform. Anders als bei der Langform wird die Groß-/Kleinschreibung bei der Kurzform unterschieden. Der Langform eines Befehls kann optional ein Semikolon als Trennzeichen folgen; dieses sollte bei der Kurzform weggelassen werden.
Für den Befehl delimiter
sollten Sie die
Verwendung des Backslashs (‘\
’)
vermeiden, da dieser bei MySQL als Escape-Zeichen dient.
Die Befehle edit, nopager, pager und system funktionieren nur unter Unix.
Der Befehl status
bietet Informationen zur
Verbindung und zum verwendeten Server. Wenn der Client mit
--safe-updates
gestartet wurde, gibt
status
auch die Werte für die
mysql-Variablen aus, die sich auf Ihre
Abfragen auswirken.
Um Abfragen und ihre Ausgaben zu loggen, verwenden Sie den
Befehl tee. Alle auf dem Bildschirm
angezeigten Daten werden an eine angegebene Datei angehängt.
Dies kann auch zu Debugzwecken sehr praktisch sein. Sie
können diese Funktion auf der Befehlszeile mit der Option
--tee
oder interaktiv mit dem Befehl
tee aktivieren. Die Datei
tee kann interaktiv mit dem Befehl
notee deaktiviert werden. Die erneute
Ausführung von tee reaktiviert das Loggen
wieder. Wird kein Parameter angegeben, dann wird die vorherige
Datei verwendet. Beachten Sie, dass tee
Abfrageergebnisse nach jeder Anweisung synchronisiert –
unmittelbar bevor mysql die nächste
Eingabeaufforderung anzeigt.
Mithilfe der Option --pager
können Sie
Abfrageergebnisse im interaktiven Modus mit Unix-Programmen
wie less, more o. Ä.
durchsuchen. Wenn Sie keinen Wert für die Option angeben,
überprüft mysql den Wert der
Umgebungsvariablen PAGER
und setzt den
Pager auf diesen Wert. Interaktiv lässt sich das Paging
mithilfe des Befehls pager aktivieren und
mit nopager deaktivieren. Der Befehl nimmt
ein optionales Argument entgegen; ist es vorhanden, dann wird
das entsprechende Pager-Programm ausgewählt. Ohne
Argumentangabe wird der Pager, der über die Befehlszeile
angegeben wurde, oder stdout
ausgewählt
(sofern überhaupt kein Pager festgelegt wurde).
Die seitenweise Ausgabe funktioniert nur unter Unix, da sie
die Funktion popen()
verwendet, die unter
Windows nicht existiert. Unter Windows kann stattdessen die
Option tee zur Speicherung der
Abfrageausgabe verwendet werden, auch wenn dies in bestimmten
Situationen zum Durchsuchen der Ausgabe nicht so praktisch ist
wie pager.
Es folgen ein paar Tipps zum Befehl pager:
Sie können damit in eine Datei schreiben, und die Ergebnisse landen dann auch nur in dieser Datei:
mysql> pager cat > /tmp/log.txt
Sie können auch Optionen für das Programm übergeben, das Sie als Pager verwenden wollen:
mysql> pager less -n -i -S
Beachten Sie die Option -S
im obigen
Beispiel. Sie kann zum Durchblättern sehr breiter
Abfrageergebnisse recht praktisch sein. Manchmal sind sehr
breite Ergebnismengen auf dem Bildschirm schlecht zu
lesen. Die Option -S
für den Befehl
less kann die Lesbarkeit der Ergebnisse
erheblich steigern, denn sie erlaubt das horizontale
Scrolling mit den Pfeiltasten auf der Computertastatur.
Sie können die Option -S
auch interaktiv
innerhalb von less verwenden, um das
horizontale Scrolling nach Belieben ein- und
auszuschalten. Weitere Informationen finden Sie auf der
Manpage zu less:
shell> man less
Sie können zur Verarbeitung der Ausgabe sehr komplexe Pager-Befehle angeben:
mysql>pager cat | tee /dr1/tmp/res.txt \
| tee /dr2/tmp/res2.txt | less -n -i -S
In diesem Beispiel würde der Befehl die Abfrageergebnisse
an zwei Dateien in zwei verschiedenen Verzeichnissen auf
zwei separaten Dateisystemen senden, die als
/dr1
und /dr2
eingebunden sind. Via less werden die
Ergebnisse aber auch auf dem Bildschirm angezeigt.
Sie können die Funktionen von tee und pager auch kombinieren. Wenn Sie eine tee-Datei aktivieren und pager auf less setzen, können Sie die Ergebnisse mit dem Programm less durchsuchen und gleichzeitig alles an eine Datei anhängen. Der Unterschied zwischen tee unter Unix, wenn es mit dem pager-Befehl verwendet wird, und dem in mysql integrierten tee-Befehl besteht darin, dass das integrierte tee auch dann funktioniert, wenn der Unix-Befehl tee nicht vorhanden ist. Außerdem loggt das integrierte tee alles, was auf dem Bildschirm ausgegeben wird; im Gegensatz dazu wird von dem unter Unix mit pager verwendeten tee nicht so viel protokolliert. Zudem lässt sich das tee-Dateiloggen interaktiv aus mysql heraus ein- und ausschalten. Dies ist nützlich, wenn Sie nur einige, nicht aber alle Abfragen in einer Datei loggen wollen.
Die Standardeingabeaufforderung mysql>
kann umkonfiguriert werden. Der String zur Definition der
Eingabeaufforderung kann die folgenden Spezialsequenzen
enthalten:
Option | Beschreibung |
\v | Serverversion |
\d | Standarddatenbank |
\h | Serverhost |
\p | aktuelle TCP/IP-Port bzw. aktuelle Socketdatei |
\u | Ihr Benutzername |
\U | Ihr vollständiger
-Kontenname |
\\ | literales ‘\ ’-Backslash-Zeichen |
\n | Zeilenwechselzeichen |
\t | Tabulatorzeichen |
\ | Leerzeichen (folgt dem Backslash) |
\_ | Leerzeichen |
\R | aktuelle Uhrzeit im 24-Stunden-Format (0 - 23) |
\r | aktuelle Uhrzeit im 12-Stunden-Format (1 - 12) |
\m | Minuten der aktuellen Uhrzeit |
\y | aktuelles Jahr (zweistellig) |
\Y | aktuelles Jahr (vierstellig) |
\D | aktuelles vollständiges Datum |
\s | Sekunden der aktuellen Uhrzeit |
\w | aktueller Wochentag, angegeben mit drei Buchstaben („Mon“, „Tue“ usw.) |
\P | AM/PM |
\o | aktueller Monat im numerischen Format |
\O | aktueller Monat, angegeben mit drei Buchstaben („Jan“, „Feb“ usw.) |
\c | Zähler, der bei jeder von Ihnen abgesetzten Anweisung hochgezählt wird |
\S | Semikolon |
\' | einfaches Anführungszeichen |
\" | doppeltes Anführungszeichen |
‘\
’ gefolgt von einem
beliebigen anderen Buchstaben wird zu genau diesem Buchstaben.
Wenn Sie den Befehl prompt
ohne Argument
eingeben, setzt mysql die
Eingabeaufforderung auf die Standardform
(mysql>
) zurück.
Sie können die Eingabeaufforderung auf verschiedene Weise einstellen:
Sie verwenden eine Umgebungsvariable.
Sie können der Umgebungsvariablen
MYSQL_PS1
als Wert einen
Eingabeaufforderungs-String zuweisen. Zum Beispiel:
shell> export MYSQL_PS1="(\u@\h) [\d]> "
Sie verwenden eine
Befehlszeilenoption. Sie können für
mysql die Option
--prompt
auf der Befehlszeile angeben.
Zum Beispiel:
shell> mysql --prompt="(\u@\h) [\d]> "
(user@host) [database]>
Sie verwenden eine Optionsdatei. Sie
können die Option prompt
im Abschnitt
[mysql]
einer beliebigen
MySQL-Optionsdatei (z. B.
/etc/my.cnf
oder
.my.cnf
) in Ihrem Stammverzeichnis
angeben. Zum Beispiel:
[mysql] prompt=(\\u@\\h) [\\d]>\\_
Beachten Sie in diesem Beispiel die doppelten Backslashs.
Wenn Sie die Eingabeaufforderung mit der Option
prompt
in einer Optionsdatei
einstellen, sollten Sie die Backslashes verdoppeln, wenn
Sie bestimmte Optionen für die Eingabeaufforderung
angeben. Es gibt eine Reihe von Überschneidungen zwischen
den zulässigen Optionen für die Eingabeaufforderung und
den speziellen Escape-Sequenzen, die in Optionsdateien
erkannt werden. (Diese Sequenzen sind in
Abschnitt 4.3.2, „my.cnf-Optionsdateien“, aufgelistet.) Diese
Überschneidungen können bei Verwendung einzelner
Backslashs Probleme verursachen. So wird etwa
\s
als Leerzeichen statt als aktueller
Sekundenwert interpretiert. Das folgende Beispiel zeigt,
wie Sie eine Eingabeaufforderung in einer Optionsdatei so
definieren, dass die aktuelle Uhrzeit im Format
HH:MM:SS>
enthalten ist:
[mysql] prompt="\\r:\\m:\\s> "
Sie stellen die Eingabeaufforderung interaktiv
ein. Sie können Ihre Eingabeaufforderung auch
interaktiv mithilfe des Befehls prompt
(oder \R
) einstellen. Zum Beispiel:
mysql>prompt (\u@\h) [\d]>\_
PROMPT set to '(\u@\h) [\d]>\_' (user
@host
) [database
]> (user
@host
) [database
]> prompt Returning to default PROMPT of mysql> mysql>
Der Client mysql wird normalerweise interaktiv verwendet. Das sieht etwa so aus:
shell> mysql db_name
Es ist allerdings auch möglich, SQL-Anweisungen in einer
Datei abzulegen und mysql dann anzuweisen,
seine Eingabe aus dieser Datei auszulesen. Zu diesem Zweck
erstellen Sie eine Textdatei
text_file
, die die Anweisungen
enthält, die Sie ausführen wollen. Danach rufen Sie
mysql wie folgt auf:
shell> mysql db_name
< text_file
Wenn Sie als Erstes eine USE
-Anweisung in die
Datei setzen, müssen Sie den Datenbanknamen nicht mehr auf
der Befehlszeile angeben:
db_name
shell> mysql < text_file
Wird mysql bereits ausgeführt, dann
können Sie eine SQL-Skriptdatei mithilfe des Befehls
source
oder \.
ausführen:
mysql>source
mysql>file_name
\.
file_name
In bestimmten Fällen kann es sinnvoll sein, ein Skript Fortschrittsinformationen für den Benutzer anzeigen zu lassen. Hierzu können Sie Anweisungen wie die folgende einfügen:
SELECT '<info_to_display>' AS ' ';
Die gezeigte Anweisung gibt
<info_to_display>
aus.
Weitere Informationen zum Stapelbetrieb finden Sie in
Abschnitt 3.5, „mysql
im Stapelbetrieb“.
Dieser Abschnitt beschreibt einige Methoden, mit deren Hilfe Sie mysql effizienter benutzen können.
Die Lesbarkeit bestimmter Abfrageergebnisse wird erhöht,
wenn diese nicht in einem horizontalen, sondern einem
vertikalen Tabellenformat angezeigt werden. Die Abfrage wird
vertikal angezeigt, indem sie mit \G
statt mit einem Semikolon abgeschlossen wird. So lassen sich
etwa längere Textwerte mit Zeilenumbrüchen häufig besser
lesen, wenn sie vertikal ausgegeben werden:
mysql> SELECT * FROM mails WHERE LENGTH(txt) < 300 LIMIT 300,1\G
*************************** 1. row ***************************
msg_nro: 3068
date: 2000-03-01 23:29:50
time_zone: +0200
mail_from: Monty
reply: monty@no.spam.com
mail_to: "Thimble Smith" <tim@no.spam.com>
sbj: UTF-8
txt: >>>>> "Thimble" == Thimble Smith writes:
Thimble> Hi. I think this is a good idea. Is anyone familiar
Thimble> with UTF-8 or Unicode? Otherwise, I'll put this on my
Thimble> TODO list and see what happens.
Yes, please do that.
Regards,
Monty
file: inbox-jani-1
hash: 190402944
1 row in set (0.09 sec)
Für MySQL-Neulinge kann die Startoption
--safe-updates
(bzw.
--i-am-a-dummy
, was den gleichen Effekt
hat) ausgesprochen nützlich sein. Sie hilft in Fällen, in
denen Sie eine DELETE FROM
-Anweisung
abgesetzt, aber die tbl_name
WHERE
-Klausel
vergessen haben. Normalerweise werden durch eine solche
Anweisung nämlich alle Datensätze in der Tabelle
gelöscht. Mit --safe-updates
können Sie
Datensätze nur dann löschen, wenn die Schlüsselwerte
angegeben sind, mit denen sie identifiziert werden. Auf
diese Weise werden Unfälle verhindert.
Wenn Sie die Option --safe-updates
benutzen, setzt mysql beim Herstellen der
Verbindung zum MySQL Server die folgende Anweisung ab:
SET SQL_SAFE_UPDATES=1,SQL_SELECT_LIMIT=1000, SQL_MAX_JOIN_SIZE=1000000;
Siehe auch Abschnitt 13.5.3, „SET
“.
Die Anweisung SET
hat die folgenden
Auswirkungen:
Sie dürfen eine UPDATE
- oder
DELETE
-Anweisung nur dann ausführen,
wenn Sie einen Schlüssel-Constraint in der
WHERE
-Klausel spezifiziert oder eine
LIMIT
-Klausel angegeben haben (oder
beides). Zum Beispiel:
UPDATEtbl_name
SETnot_key_column
=val
WHEREkey_column
=val
; UPDATEtbl_name
SETnot_key_column
=val
LIMIT 1;
Der Server beschränkt alle umfangreichen
SELECT
-Ergebnisse auf 1.000
Datensätze, sofern die Anweisung keine
LIMIT
-Klausel enthält.
Der Server bricht tabellenübergreifende
SELECT
-Anweisungen ab, bei denen
voraussichtlich mehr als 1.000.000
Datensatzkombinationen untersucht werden müssten.
Um andere Grenzen als 1.000 und 1.000.000 anzugeben, können
Sie die Vorgaben mithilfe der Optionen
--select_limit
und
--max_join_size
außer Kraft setzen:
shell> mysql --safe-updates --select_limit=500 --max_join_size=10000
Wenn die Verbindung zwischen dem mysql-Client und dem Server während des Versands einer Abfrage abbricht, dann versucht der Client, die Verbindung sofort und automatisch wiederherzustellen, und sendet die Abfrage dann erneut. Ihre vorherige Verbindung ist aber auch dann, wenn mysql die Neuverbindung gelingt, definitiv beendet, d. h., alle vorherigen Sitzungsobjekte und Einstellungen sind verloren: Temporärtabellen, Autocommit-Modus und benutzerdefinierte und Sitzungsvariablen. Außerdem wird für alle aktuellen Transaktionen ein Rollback durchgeführt. Dieses Verhalten kann für Sie gefährlich sein. Beachten Sie das folgende Beispiel, in dem der Server heruntergefahren und neu gestartet wurde, ohne dass Sie davon erfahren haben:
mysql>SET @a=1;
Query OK, 0 rows affected (0.05 sec) mysql>INSERT INTO t VALUES(@a);
ERROR 2006: MySQL server has gone away No connection. Trying to reconnect... Connection id: 1 Current database: test Query OK, 1 row affected (1.30 sec) mysql>SELECT * FROM t;
+------+ | a | +------+ | NULL | +------+ 1 row in set (0.05 sec)
Die Benutzervariable @a
ist mit der
Verbindung verloren gegangen und nach der Neuverbindung
undefiniert. Wenn wichtig ist, dass mysql
in dem Fall, dass die Verbindung abreißt, mit einem Fehler
beendet wird, dann können Sie den
mysql-Client mit der Option
--skip-reconnect
starten.
mysqlaccess ist ein Diagnosetool, das Yves
Carlier für die MySQL-Distribution erstellt hat. Es
überprüft die Zugriffsberechtigungen für eine Kombination
aus Hostnamen, Benutzernamen und Datenbank. Beachten Sie, dass
mysqlaccess den Zugriff nur mithilfe der
Tabellen user
, db
und
host
überprüft. Nicht verifiziert werden
Tabellen-, Spalten- oder Routineberechtigungen, die in den
Tabellen tables_priv
,
columns_priv
bzw.
procs_priv
festgelegt sind.
Rufen Sie mysqlaccess wie folgt auf:
shell> mysqlaccess [host_name
[user_name
[db_name
]]] [options
]
mysqlaccess versteht die folgenden Optionen:
--help
, -?
Zeigt eine Hilfemeldung an und wird dann beendet.
--brief
, -b
Erzeugt Berichte in einem einzeiligen tabellarischen Format.
--commit
Kopiert die neuen Zugriffsberechtigungen aus den Temporärtabellen in die ursprünglichen Grant-Tabellen. Damit die neuen Berechtigungen angewendet werden, müssen die Grant-Tabellen auf Festplatte synchronisiert werden. (Führen Sie hierzu etwa den Befehl mysqladmin reload aus.)
--copy
Lädt die temporären Grant-Tabellen aus den Originaltabellen.
--db=
,
db_name
-d
db_name
Gibt den Datenbanknamen an.
--debug=
N
Gibt die Debugstufe an. N
ist
ein Integer zwischen 0 und 3.
--host=
,
host_name
-h
host_name
Der in den Zugriffsberechtigungen zu verwendende Hostname.
--howto
Zeigt einige Beispiele für die Verwendung von mysqlaccess an.
--old_server
Legt fest, dass der Server ein alter MySQL Server (vor
MySQL 3.21) ist, der vollständige
WHERE
-Klauseln noch nicht verarbeiten
kann.
--password[=
,
password
]-p[
password
]
Verwendet das angegebene Passwort zur Verbindung mit dem
Server. 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“.
--plan
Zeigt Vorschläge und Ideen für zukünftige Releases an.
--preview
Zeigt die Unterschiede in den Berechtigungen nach der Durchführung von Änderungen in den Grant-Tabellen an.
--relnotes
Zeigt die Versionshinweise an.
--rhost=
,
host_name
-H
host_name
Stellt eine Verbindung zum MySQL Server auf dem angegebenen Host her.
--rollback
Macht die letzten Änderungen an den temporären Grant-Tabellen rückgängig.
--spassword[=
,
password
]-P[
password
]
Verwendet das angegebene Passwort zur Verbindung als
Superuser mit dem Server. 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“.
--superuser=
,
user_name
-U
user_name
Gibt den Benutzernamen zur Verbindung als Superuser an.
--table
, -t
Erzeugt Berichte im Tabellenformat.
--user=
,
user_name
-u
user_name
Der in den Zugriffsberechtigungen zu verwendende Benutzername.
--version
, -v
Zeigt die Versionsinformation an und wird dann beendet.
Wenn Ihre MySQL-Distribution an einer anderen als der
Standardposition installiert ist, müssen Sie die Position
ändern, an der mysqlaccess das
Vorhandensein des mysql-Clients erwartet.
Sie müssen das Skript mysqlaccess
im
Bereich der Zeile 18 editieren. Suchen Sie nach einer Zeile
ähnlich der folgenden:
$MYSQL = '/usr/local/bin/mysql'; # path to mysql executable
Ändern Sie den Pfad so ab, dass er die Position wiedergibt,
an der mysql tatsächlich auf Ihrem System
gespeichert ist. Andernfalls erhalten Sie den Fehler
Broken pipe
, wenn Sie
mysqlaccess ausführen.
mysqladmin ist ein Client zur Durchführung administrativer Aufgaben. Sie können damit Konfiguration und aktuellen Status des Servers überprüfen, Datenbanken erstellen und löschen und vieles mehr.
Rufen Sie mysqladmin wie folgt auf:
shell> mysqladmin [options
] command
[command-arg
] [command
[command-arg
]] ...
mysqladmin unterstützt die in der folgenden Liste beschriebenen Befehle. Einige Befehle nehmen auf den Befehlsnamen folgend ein Argument entgegen.
create
db_name
Erstellt eine neue Datenbank namens
db_name
.
debug
Weist den Server an, Debuginformationen in das Fehlerlog zu schreiben.
drop
db_name
Löscht die Datenbank namens
db_name
und alle in ihr
enthaltenen Tabellen.
extended-status
Zeigt die Serverstatusvariablen und ihre jeweiligen Werte an.
flush-hosts
Synchronisiert alle Daten in den Host-Cache.
flush-logs
Schreibt alle Logs auf Festplatte.
flush-privileges
Lädt die Grant-Tabellen neu (wie
reload
).
flush-status
Löscht die Statusvariablen.
flush-tables
Synchronisiert alle Tabellen auf Festplatte.
flush-threads
Synchronisiert den Thread-Cache.
kill
id
,id
,…
Terminiert Server-Threads. Werden mehrere Thread-Kennungswerte übergeben, dann dürfen in der Liste keine Leerzeichen enthalten sein.
old-password
new-password
Entspricht dem Befehl password
,
speichert das Passwort aber im alten (vor MySQL 4.1
verwendeten) Hashing-Format. (Siehe auch
Abschnitt 5.8.9, „Kennwort-Hashing ab MySQL 4.1“.)
password
new-password
Legt ein neues Passwort fest. Hierdurch wird das Passwort
des Kontos, das Sie bei mysqladmin zur
Verbindung mit dem Server verwenden, auf
new-password
gesetzt. Wenn Sie
also beim nächsten Mal mysqladmin
(oder ein anderes Clientprogramm) über dieses Konto
aufrufen, müssen Sie das neue Passwort angeben.
Wenn der Wert new-password
Leerzeichen oder andere Zeichen enthält, die von Ihrem
Befehls-Interpreter als Sonderzeichen interpretiert
werden, dann müssen Sie es in Anführungszeichen setzen.
Dabei sind unter Windows in jedem Fall doppelte statt
einfache Anführungszeichen zu benutzen, da Letztere bei
der Verarbeitung nicht entfernt, sondern als Teil des
Passworts betrachtet werden. Zum Beispiel:
shell> mysqladmin password "my new password"
ping
Überprüft, ob der Server ausgeführt wird. Der
Rückgabestatus von mysqladmin ist 0,
wenn der Server läuft, andernfalls 1. 0 ist auch im Falle
eines Fehlers wie Access denied
das
Ergebnis, denn hierbei hat der Server die Verbindung zwar
abgewiesen, wird aber trotzdem ausgeführt.
processlist
Zeigt eine Liste aktiver Server-Threads an. Dies ähnelt
der Ausgabe der Anweisung SHOW
PROCESSLIST
. Wird die Option
--verbose
angegeben, dann entspricht die
Ausgabe derjenigen von SHOW FULL
PROCESSLIST
. (Siehe auch
Abschnitt 13.5.4.19, „SHOW PROCESSLIST
“.)
reload
Lädt die Grant-Tabellen neu.
refresh
Synchronisiert alle Tabellen und schließt und öffnet die Logdateien.
shutdown
Beendet den Server.
start-slave
Startet die Replikation auf einem Slave-Server.
status
Zeigt eine kurze Meldung zum Serverstatus an.
stop-slave
Beendet die Replikation auf einem Slave-Server.
variables
Zeigt die Serversystemvariablen und ihre jeweiligen Werte an.
version
Zeigt Versionsinformationen vom Server an.
Alle Befehle lassen sich auf ein beliebiges eindeutiges Präfix kürzen. Zum Beispiel:
shell> mysqladmin proc stat
+----+-------+-----------+----+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+-------+-----------+----+---------+------+-------+------------------+
| 51 | monty | localhost | | Query | 0 | | show processlist |
+----+-------+-----------+----+---------+------+-------+------------------+
Uptime: 1473624 Threads: 1 Questions: 39487
Slow queries: 0 Opens: 541 Flush tables: 1
Open tables: 19 Queries per second avg: 0.0268
Die Ausgabe des Befehls mysqladmin status zeigt die folgenden Werte an:
Dauer seit dem Serverstart (in Sekunden).
Anzahl der aktiven Threads (Clients).
Anzahl der Abfragen, die seit dem Serverstart von Clients eingegangen sind.
Anzahl der Abfragen, die länger als die durch
long_query_time
angegebene Anzahl von
Sekunden dauerten. Siehe auch
Abschnitt 5.12.4, „Die Logdatei für langsame Anfragen“.
Anzahl der Tabellen, die vom Server geöffnet wurden.
Anzahl der vom Server ausgeführten
flush-*
-, refresh
-
und reload
-Befehle.
Anzahl der derzeit offenen Tabellen.
Umfang des Speichers, der direkt von
mysqld reserviert wurde. Der Wert wird
nur angezeigt, wenn MySQL mit der Option
--with-debug=full
kompiliert wurde.
Maximaler Umfang des Speichers, der direkt von
mysqld reserviert wurde. Der Wert wird
nur angezeigt, wenn MySQL mit der Option
--with-debug=full
kompiliert wurde.
Wenn Sie mysqladmin shutdown beim Herstellen einer Verbindung zu einem lokalen Server mithilfe einer Unix-Socketdatei ausführen, wartet mysqladmin, bis die Prozesskennungsdatei des Servers entfernt wurde, um sicherzustellen, dass der Server korrekt beendet wurde.
mysqladmin unterstützt die folgenden Optionen:
--help
, -?
Zeigt eine Hilfemeldung an und wird dann beendet.
--character-sets-dir=
path
Das Verzeichnis, in dem Zeichensätze installiert sind. Siehe auch Abschnitt 5.11.1, „Der für Daten und zum Sortieren benutzte Zeichensatz“.
--compress
, -C
Komprimiert alle Daten, die zwischen Client und Server ausgetauscht werden, sofern beide die Komprimierung unterstützen.
--count=
,
N
-c
N
Anzahl der Iterationen, die für die wiederholte
Befehlsausführung erforderlich sind. Funktioniert nur mit
der Option --sleep
.
--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/mysqladmin.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“.
--force
, -f
Fordert für den Befehl drop
keine
Bestätigung an. Bei mehreren Befehlen erfolgt auch bei
Auftreten eines Fehlers kein Abbruch.
db_name
--host=
,
host_name
-h
host_name
Stellt eine Verbindung zum MySQL Server auf dem angegebenen Host her.
--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.
--relative
, -r
Zeigt bei gemeinsamer Verwendung mit der Option
--sleep
den Unterschied zwischen
aktuellem und vorherigem Wert. Derzeit funktioniert diese
Option nur mit dem Befehl
extended-status
.
--silent
, -s
Wenn keine Verbindung zum Server hergestellt werden kann, erfolgt eine stillschweigende Beendigung.
--sleep=
,
delay
-i
delay
Führt Befehle wiederholt aus, wobei dazwischen die mit
delay
angegebene Anzahl von
Sekunden verstreicht. Die Option --count
bestimmt die Anzahl der Iterationen.
--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.
--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 zur Tätigkeit des Programms ausgegeben.
--version
, -V
Zeigt die Versionsinformation an und wird dann beendet.
--vertical
, -E
Erzeugt eine vertikale Ausgabe. Dies ähnelt
--relative
, die Ausgabe erfolgt jedoch
vertikal.
--wait[=
,
count
]-w[
count
]
Wenn die Verbindung nicht hergestellt werden kann, erfolgt
anstelle eines Abbruchs nach einer Wartezeit ein neuer
Verbindungsversuch. Wenn ein
count
-Wert spezifiziert wird,
gibt dieser die Anzahl der Wiederholungsversuche an.
Standardmäßig erfolgt genau eine Wiederholung.
Sie können mit der Syntax
--
auch die folgenden Variablen einstellen:
var_name
=value
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 Binärlogdateien, die der Server erzeugt, sind im Binärformat geschrieben. Um diese Dateien in Textform zu untersuchen, verwenden Sie das Hilfsprogramm mysqlbinlog.
Rufen Sie mysqlbinlog wie folgt auf:
shell> mysqlbinlog [options
] log_file
...
Um beispielsweise den Inhalt einer Binärlogdatei namens
binlog.000003
anzuzeigen, verwenden Sie
folgenden Befehl:
shell> mysqlbinlog binlog.0000003
Die Ausgabe enthält alle Ereignisse, die in
binlog.000003
enthalten sind. Zu den
einzelnen Ereignisdaten gehören u. a. die ausgeführte
Anweisung, die Ausführungsdauer der Anweisung, die
Thread-Kennung des absetzenden Clients und der Zeitstempel der
Ausführung.
Die Ausgabe von mysqlbinlog kann – beispielsweise durch Verwendung als Eingabe für mysql – neu ausgeführt werden, um die Anweisungen im Log erneut anzuwenden. Dies ist etwa zur Wiederherstellung nach einem Serverabsturz praktisch. Mehr Anwendungsbeispiele finden Sie im weiteren Verlauf dieses Abschnitts.
Normalerweise verwenden Sie mysqlbinlog zum
direkten Auslesen von Binärlogdateien und zu deren Anwendung
auf den lokalen MySQL Server. Es ist ferner möglich,
Binärlogs von einem entfernten Server auszulesen, indem Sie
die Option --read-from-remote-server
verwenden. Wenn Sie entfernte Binärlogs auslesen, kann mit
Verbindungsparameteroptionen angegeben werden, wie die
Verbindung zum Server herzustellen ist. Diese Optionen sind
--host
, --password
,
--port
, --protocol
,
--socket
und --user
; sie
werden allerdings ignoriert, wenn Sie nicht auch die Option
--read-from-remote-server
angeben.
Sie können mit mysqlbinlog auch Relay-Logdateien auslesen, die von einem Slave-Server in einer Replikationskonfiguration geschrieben wurden. Relay-Logs haben das gleiche Format wie Binärlogdateien.
Weitere Informationen zu Binär- und Relay-Logs finden Sie in Abschnitt 5.12.3, „Die binäre Update-Logdatei“, und Abschnitt 6.4.4, „Relay- und Statusdateien bei der Replikation“.
mysqlbinlog unterstützt die folgenden Optionen:
--help
, -?
Zeigt eine Hilfemeldung an und wird dann beendet.
--base64-output
Gibt alle Binärlogeinträge unter Verwendung der base64-Kodierung aus. Dies dient nur Debugzwecken. Logs, die mithilfe dieser Option erzeugt wurden, sollten nicht auf Produktionssysteme angewendet werden. Diese Option wurde in MySQL 5.1.5 hinzugefügt.
--database=
,
db_name
-d
db_name
Listet Einträge nur für genau diese Datenbank auf (nur lokales Log).
--force-read
, -f
Mit dieser Option gibt mysqlbinlog, wenn es ein Binärlogereignis liest, das es nicht erkennt, eine Warnung aus, ignoriert das Ereignis und fährt fort. Ohne diese Option beendet sich mysqlbinlog beim Lesen eines solchen Ereignisses.
--hexdump
, -H
Zeigt einen hexadezimalen Speicherauszug des Logs in Kommentaren an. Diese Ausgabe kann für das Debuggen der Replikation hilfreich sein. Das Format des hexadezimalen Speicherauszugs wird im weiteren Verlauf dieses Abschnitts beschrieben. Diese Option wurde in MySQL 5.1.2 hinzugefügt.
--host=
,
host_name
-h
host_name
Holt das Binärlog vom MySQL Server des angegebenen Hosts.
--local-load=
,
path
-l
path
Bereitet lokale Temporärdateien für LOAD DATA
INFILE
im angegebenen Verzeichnis vor.
--offset=
,
N
-o
N
Überspringt die ersten N
Einträge im Log.
--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 zur Verbindung mit einem entfernten Server verwendet werden soll.
--position=
,
N
-j
N
Veraltet. Verwenden Sie stattdessen
--start-position
.
--protocol={TCP|SOCKET|PIPE|MEMORY}
Das zu verwendende Verbindungsprotokoll.
--read-from-remote-server
,
-R
Liest das Binärlog von einem MySQL Server, statt eine
lokale Logdatei auszulesen. Sofern diese Option nicht
angegeben ist, werden auch alle weiteren
Verbindungsparameteroptionen ignoriert. Diese Optionen
sind --host
, --password
,
--port
, --protocol
,
--socket
und --user
.
--result-file=
,
name
-r
name
Die Ausgabe erfolgt direkt in die angegebene Datei.
--server-id=
id
Extrahiert nur diejenigen Ereignisse, die vom Server mit der angegebenen Serverkennung stammen. Diese Option wurde in MySQL 5.1.4 hinzugefügt.
--short-form
, -s
Zeigt nur die im Log enthaltenen Anweisungen (d. h. keine zusätzlichen Informationen) an.
--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.
--start-datetime=
datetime
Startet das Auslesen des Binärlogs beim ersten Ereignis,
dessen Zeitstempel dem durch
datetime
angegebenen oder einem
späteren Zeitpunkt entspricht. Der
datetime
-Wert ist relativ zur
lokalen Zeitzone des Computers, auf dem Sie
mysqlbinlog ausführen. Der Wert sollte
in einem Format angegeben sein, das für die
DATETIME
- oder
TIMESTAMP
-Datentypen unterstützt wird.
Zum Beispiel:
shell> mysqlbinlog --start-datetime="2005-12-25 11:25:56" binlog.000003
Diese Option ist für eine Point-in-Time-Wiederherstellung nützlich. Siehe auch Abschnitt 5.10.2, „Beispielhaftes Vorgehen zur Datensicherung und Wiederherstellung“.
--stop-datetime=
datetime
Beendet das Auslesen des Binärlogs beim ersten Ereignis,
dessen Zeitstempel dem durch
datetime
angegebenen oder einem
späteren Zeitpunkt entspricht. Diese Option ist für eine
Point-in-Time-Wiederherstellung nützlich. Informationen
zum datetime
-Wert finden Sie
weiter oben in der Beschreibung zur Option
--start-datetime
.
--start-position=
N
Startet das Auslesen des Binärlogs beim ersten Ereignis,
dessen Position dem Argument N
entspricht.
--stop-position=
N
Beendet das Auslesen des Binärlogs beim ersten Ereignis,
dessen Position N
oder höher
ist.
--to-last-log
, -t
Beendet die Verarbeitung nicht am Ende des bei einem MySQL
Server angeforderten Binärlogs, sondern fährt mit der
Ausgabe bis zum Ende des letzten Binärlogs fort. Wenn Sie
die Ausgabe zum selben MySQL Server leiten, kann dies eine
Endlosschleife verursachen. Diese Option erfordert
--read-from-remote-server
.
--disable-log-bin
, -D
Deaktiviert das binäre Loggen. Dies ist nützlich zur
Vermeidung einer Endlosschleife, wenn Sie die Option
--to-last-log
verwenden und die Ausgabe
an denselben MySQL Server senden. Ferner ist die Option
praktisch bei der Datenwiederherstellung nach einem
Absturz: Sie vermeiden hiermit eine Duplizierung der
protokollierten Anweisungen.
Für diese Option benötigen Sie die Berechtigung
SUPER
. Sie sorgt dafür, dass
mysqlbinlog in seine Ausgabe eine
SET SQL_LOG_BIN=0
-Anweisung einfügt,
um das binäre Loggen der restlichen Ausgabe zu
deaktivieren. Die SET
-Anweisung wird
nur dann ausgeführt, wenn Sie die Berechtigung
SUPER
haben.
--user=
,
user_name
-u
user_name
Verwendet den angegebenen MySQL-Benutzernamen zur Verbindung mit dem entfernten Server.
--version
, -V
Zeigt die Versionsinformation an und wird dann beendet.
Sie können mit der Syntax
--
auch die folgenden Variablen einstellen:
var_name
=value
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
Sie können die Ausgabe von mysqlbinlog in den Client mysql umleiten, um die im Binärlog enthaltenen Anweisungen auszuführen. Diese Vorgehensweise dient der Wiederherstellung nach einem Absturz bei Vorhandensein eines alten Backups (siehe Abschnitt 5.10.1, „Datenbank-Datensicherungen“). Zum Beispiel:
shell> mysqlbinlog binlog.000001 | mysql
Oder:
shell> mysqlbinlog binlog.[0-9]* | mysql
Sie können die Ausgabe von mysqlbinlog stattdessen auch in eine Textdatei umleiten, wenn Sie das Anweisungslog zunächst modifizieren müssen (indem Sie beispielsweise Anweisungen entfernen, deren Ausführung Sie aus irgendeinem Grund nicht wünschen). Nach der Editierung der Datei führen Sie die enthaltenen Anweisungen aus, indem Sie sie als Eingabe für das Programm mysql verwenden.
mysqlbinlog verfügt über eine Option
--start-position
, die nur diejenigen
Anweisungen ausgibt, deren Position mindestens der angegebenen
Position entspricht (die angegebene Position muss mit dem
Start genau eines Ereignisses zusammenfallen). Ferner sind
Optionen zum Beenden und Starten bei Erkennung eines
Ereignisses mit einem angegebenen Zeitpunkt (Datum und
Uhrzeit) vorhanden. Dies ermöglicht Ihnen die Durchführung
einer Point-in-Time-Wiederherstellung mithilfe der Option
--stop-datetime
: Sie können so etwa eine
Wiederherstellung nach dem Prinzip „Datenbanken auf den
Stand von heute, 10:30 Uhr, setzen“ durchführen.
Wenn Sie mehr als nur ein Binärlog auf dem MySQL Server ausführen wollen, besteht die sichere Methode darin, alle Logs über dieselbe Serververbindung zu verarbeiten. Das folgende Beispiel veranschaulicht, welche Vorgehensweise unsicher sein könnte:
shell>mysqlbinlog binlog.000001 | mysql # DANGER!!
shell>mysqlbinlog binlog.000002 | mysql # DANGER!!
Eine derartige Verarbeitung von Binärlogs über verschiedene
Serververbindungen verursacht Probleme, wenn die erste
Logdatei eine CREATE TEMPORARY
TABLE
-Anweisung und das zweite Log eine Anweisung
enthält, die die Temporärtabelle verwendet. Wenn der erste
mysql-Prozess beendet wird, löscht der
Server die Temporärtabelle. Versucht der zweite
mysql-Prozess nun auf die Tabelle
zuzugreifen, dann meldet der Server eine „unbekannte
Tabelle“.
Um solche Probleme zu vermeiden, verwenden Sie stets die gleiche Verbindung zur Ausführung der Inhalte aller Binärlogs, die Sie verarbeiten wollen. Nachfolgend ist eine Möglichkeit beschrieben, dies zu erreichen:
shell> mysqlbinlog binlog.000001 binlog.000002 | mysql
Ein weiterer Ansatz besteht darin, alle Logs in eine einzelne Datei zu schreiben und diese Datei dann zu verarbeiten:
shell>mysqlbinlog binlog.000001 > /tmp/statements.sql
shell>mysqlbinlog binlog.000002 >> /tmp/statements.sql
shell>mysql -e "source /tmp/statements.sql"
mysqlbinlog kann eine Ausgabe erzeugen, die
eine LOAD DATA INFILE
-Operation ohne die
ursprüngliche Datendatei reproduziert.
mysqlbinlog kopiert die Daten in eine
Temporärdatei und schreibt eine LOAD DATA LOCAL
INFILE
-Anweisung, die diese Datei referenziert. Die
Standardposition des Verzeichnisses, in das diese Dateien
geschrieben werden, ist systemspezifisch. Um ein Verzeichnis
explizit anzugeben, verwenden Sie die Option
--local-load
.
Da mysqlbinlog LOAD DATA
INFILE
- in LOAD DATA LOCAL
INFILE
-Anweisungen konvertiert (d. h.
LOCAL
ergänzt), müssen sowohl der Client
als auch der Server, den Sie zur Verarbeitung der Anweisungen
verwenden, so konfiguriert sein, dass LOCAL
unterstützt wird. Siehe auch
Abschnitt 5.7.4, „Sicherheitsprobleme mit LOAD DATA LOCAL
“.
Warnung: Die für die
LOAD DATA LOCAL
-Anweisungen erstellten
Temporärdateien werden nicht automatisch
gelöscht, weil sie benötigt werden, bis Sie diese
Anweisungen tatsächlich ausführen. Sie sollten die
Temporärdateien also selbst entfernen, wenn Sie das
Anweisungslog nicht mehr benötigen. Die Dateien befinden sich
im Temporärdateiverzeichnis und haben Namen wie
original_file_name-#-#
.
Die Option --hexdump
erzeugt einen
hexadezimalen Speicherauszug („Hex-Dump“) des
Loginhalts in Kommentaren:
shell> mysqlbinlog --hexdump master-bin.000001
Beim obigen Befehl sieht die Ausgabe etwa so aus:
/*!40019 SET @@session.max_insert_delayed_threads=0*/; /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/; # at 4 #051024 17:24:13 server id 1 end_log_pos 98 # Position Timestamp Type Master ID Size Master Pos Flags # 00000004 9d fc 5c 43 0f 01 00 00 00 5e 00 00 00 62 00 00 00 00 00 # 00000017 04 00 35 2e 30 2e 31 35 2d 64 65 62 75 67 2d 6c |..5.0.15.debug.l| # 00000027 6f 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |og..............| # 00000037 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| # 00000047 00 00 00 00 9d fc 5c 43 13 38 0d 00 08 00 12 00 |.......C.8......| # 00000057 04 04 04 04 12 00 00 4b 00 04 1a |.......K...| # Start: binlog v 4, server v 5.0.15-debug-log created 051024 17:24:13 # at startup ROLLBACK;
Die Hex-Dump-Ausgabe enthält derzeit die nachfolgend aufgeführten Elemente. Das Format kann sich allerdings bei zukünftigen Versionen ändern.
Position
: Byteposition in der Logdatei.
Timestamp
: Zeitstempel des Ereignisses.
Im gezeigten Beispiel ist '9d fc 5c 43'
die Darstellung von '051024 17:24:13'
in hexadezimaler Form.
Type
: Typ des Logereignisses. Im
gezeigten Beispiel bedeutet '0f'
, dass
das Beispielereignis
FORMAT_DESCRIPTION_EVENT
ist. Die
nachfolgende Tabelle listet mögliche Typen auf.
Geben Sie nun Folgendes ein: | Name | Bedeutung |
00 | UNKNOWN_EVENT | Dieses Ereignis sollte keinesfalls im Log vorhanden sein. |
01 | START_EVENT_V3 | Zeigt den Anfang einer Logdatei an, die von MySQL 4 oder früher geschrieben wurde. |
02 | QUERY_EVENT | Der häufigste Ereignistyp. Er bezeichnet Anweisungen, die auf dem Master-Server ausgeführt wurden. |
03 | STOP_EVENT | Gibt an, dass der Master beendet wurde. |
04 | ROTATE_EVENT | Wird geschrieben, wenn der Master eine neue Logdatei eröffnet. |
05 | INTVAR_EVENT | Wird hauptsächlich für AUTO_INCREMENT -Werte und in
Situationen verwendet, in denen die
LAST_INSERT_ID() -Funktion in
der Anweisung verwendet wird. |
06 | LOAD_EVENT | Wird für LOAD DATA INFILE in MySQL 3.23 verwendet. |
07 | SLAVE_EVENT | Für zukünftige Verwendung reserviert. |
08 | CREATE_FILE_EVENT | Wird für LOAD DATA INFILE -Anweisungen verwendet.
Hiermit wird der Start der Ausführung einer
solchen Anweisung angezeigt. Auf dem Slave-Server
wird eine Temporärdatei erstellt. Wird nur in
MySQL 4 verwendet. |
09 | APPEND_BLOCK_EVENT | Enthält Daten, die in einer LOAD DATA
INFILE -Anweisung verwendet werden. Die
Daten werden in einer Temporärdatei auf dem Slave
gespeichert. |
0a | EXEC_LOAD_EVENT | Wird für LOAD DATA INFILE -Anweisungen verwendet. Der
Inhalt der Temporärdatei wird in der Tabelle auf
dem Slave gespeichert. Wird nur in MySQL 4
verwendet. |
0b | DELETE_FILE_EVENT | Rollback einer LOAD DATA INFILE -Anweisung. Die
Temporärdatei auf dem Slave sollte gelöscht
werden. |
0c | NEW_LOAD_EVENT | Wird für LOAD DATA INFILE in MySQL 4 und früher
verwendet. |
0d | RAND_EVENT | Wird für den Versand von Informationen zu Zufallswerten benutzt, wenn
die Funktion RAND() in der
Anweisung verwendet wird. |
0e | USER_VAR_EVENT | Dient der Replikation von Benutzervariablen. |
0f | FORMAT_DESCRIPTION_EVENT | Zeigt den Anfang einer Logdatei an, die von MySQL 5 oder später geschrieben wurde. |
10 | XID_EVENT | Ereignis, welches das Schreiben einer XA-Transaktion anzeigt. |
11 | BEGIN_LOAD_QUERY_EVENT | Wird für LOAD DATA INFILE -Anweisungen in MySQL 5 und
höher verwendet. |
12 | EXECUTE_LOAD_QUERY_EVENT | Wird für LOAD DATA INFILE -Anweisungen in MySQL 5 und
höher verwendet. |
13 | TABLE_MAP_EVENT | Für zukünftige Verwendung reserviert. |
14 | WRITE_ROWS_EVENT | Für zukünftige Verwendung reserviert. |
15 | UPDATE_ROWS_EVENT | Für zukünftige Verwendung reserviert. |
16 | DELETE_ROWS_EVENT | Für zukünftige Verwendung reserviert. |
Master ID
: Serverkennung des Masters,
der das Ereignis erstellt hat.
Size
: Größe des Ereignisses in Byte.
Master Pos
: Position des Ereignisses in
der ursprünglichen Logdatei auf dem Master.
Flags
: 16 Flags. Zurzeit werden die
nachfolgend aufgeführten Flags verwendet. Die übrigen
sind für zukünftige Verwendung reserviert.
Flag | Name | Bedeutung |
01 | LOG_EVENT_BINLOG_IN_USE_F | Logdatei korrekt geschlossen. (Wird nur in
FORMAT_DESCRIPTION_EVENT
verwendet.) Wenn bei einem Ereignis
FORMAT_DESCRIPTION_EVENT das
Flag gesetzt ist (d. h. wenn der Flagwert
beispielsweise '01 00' lautet),
dann wurde die Logdatei nicht korrekt geschlossen.
In aller Regel liegt dies an einem Absturz des
Masters (etwa aufgrund eines Stromausfalls). |
02 | Für zukünftige Verwendung reserviert. | |
04 | LOG_EVENT_THREAD_SPECIFIC_F | Ist gesetzt, wenn das Ereignis von der Verbindung abhängig ist, über
die es erfolgte (z. B. '04
00' ). Ein solcher Fall liegt etwa vor,
wenn das Ereignis Temporärtabellen verwendet. |
08 | LOG_EVENT_SUPPRESS_USE_F | Wird unter bestimmten Umständen gesetzt, wenn das Ereignis nicht von der Standarddatenbank abhängt. |
Die übrigen Flags sind für eine zukünftige Verwendung reserviert.
Der Client mysqlcheck prüft, repariert, optimiert und analysiert Tabellen.
mysqlcheck ähnelt hinsichtlich seines Funktionsumfangs myisamchk, funktioniert aber anders. Der wesentliche Unterschied besteht darin, dass mysqlcheck verwendet werden muss, wenn der Server mysqld ausgeführt wird, wohingegen myisamchk verwendet werden sollte, wenn er nicht läuft. Der Vorteil der Verwendung von mysqlcheck besteht darin, dass Sie den Server nicht beenden müssen, um Ihre Tabellen zu überprüfen oder zu reparieren.
mysqlcheck verwendet die SQL-Anweisungen
CHECK TABLE
, REPAIR
TABLE
, ANALYZE TABLE
und
OPTIMIZE TABLE
auf eine für den Benutzer
praktische Weise. Das Programm bestimmt, welche Anweisungen
für die gewünschte Operation durchzuführen sind, und sendet
diese Anweisungen dann zur Ausführung an den Server. Weitere
Informationen dazu, bei welchen Speicher-Engines die
jeweiligen Anweisungen funktionieren, finden Sie in
Kapitel 13, SQL-Anweisungssyntax.
Die MyISAM
-Speicher-Engine unterstützt
alle vier Anweisungen, d. h., mysqlcheck
kann zur Durchführung aller vier Operationen an
MyISAM
-Tabellen verwendet werden. Andere
Speicher-Engines unterstützen nicht unbedingt alle
Operationen. Gegebenenfalls wird eine Fehlermeldung angezeigt.
Wenn beispielsweise test.t
eine
MEMORY
-Tabelle ist, dann führt der
Versuch, sie zu überprüfen, zu folgendem Ergebnis:
shell> mysqlcheck test t
test.t
note : The storage engine for the table doesn't support check
Es gibt drei Möglichkeiten, mysqlcheck aufzurufen:
shell>mysqlcheck [
shell>options
]db_name
[tables
]mysqlcheck [
shell>options
] --databasesdb_name1
[db_name2
db_name3
...]mysqlcheck [
options
] --all-databases
Wenn Sie auf db_name
folgend keine
Tabellen aufführen oder die Optionen
--databases
oder
--all-databases
verwenden, dann werden ganze
Datenbanken überprüft.
mysqlcheck bietet eine im Vergleich zu
anderen Clientprogrammen spezielle Funktion. Das
Standardverhalten des Überprüfens von Tabellen
(--check
) kann geändert werden, indem die
Binärdatei umbenannt wird. Wenn Sie ein Tool benötigen, das
Tabellen standardmäßig repariert, sollten Sie einfach eine
Kopie von mysqlcheck namens
mysqlrepair oder eine symbolische
Verknüpfung zu mysqlcheck namens
mysqlrepair erstellen. Wenn Sie dann
mysqlrepair aufrufen, werden die Tabellen
standardmäßig repariert.
Die folgenden Namen können verwendet werden, um das Standardverhalten von mysqlcheck zu ändern:
mysqlrepair | Die Standardoption ist --repair . |
mysqlanalyze | Die Standardoption ist --analyze . |
mysqloptimize | Die Standardoption ist --optimize . |
mysqlcheck unterstützt die folgenden Optionen:
--help
, -?
Zeigt eine Hilfemeldung an und wird dann beendet.
--all-databases
, -A
Überprüft alle Tabellen in allen Datenbanken. Dies
entspricht der Option --databases
bei
gleichzeitiger Nennung aller Datenbanken auf der
Befehlszeile.
--all-in-1
, -1
Statt eine Anweisung für jede Tabelle einzeln abzusetzen, wird eine einzelne Anweisung für jede Datenbank ausgeführt, die alle zu verarbeitenden Tabellen aus dieser Datenbank benennt.
--analyze
, -a
Analysiert die Tabellen.
--auto-repair
Wenn eine überprüfte Tabelle beschädigt ist, wird sie automatisch repariert. Reparaturarbeiten werden erledigt, nachdem alle Tabellen überprüft wurden.
--character-sets-dir=
path
Das Verzeichnis, in dem Zeichensätze installiert sind. Siehe auch Abschnitt 5.11.1, „Der für Daten und zum Sortieren benutzte Zeichensatz“.
--check
, -c
Überprüft die Tabellen auf Fehler. Dies ist die Standardoperation.
--check-only-changed
, -C
Überprüft nur solche Tabellen, die seit der letzten Überprüfung geändert oder aber nicht korrekt geschlossen wurden.
--compress
Komprimiert alle Daten, die zwischen Client und Server ausgetauscht werden, sofern beide die Komprimierung unterstützen.
--databases
, -B
Verarbeitet alle Tabellen in den aufgeführten Datenbanken. Normalerweise betrachtet mysqlcheck das erste Namensargument auf der Befehlszeile als Datenbank- und alle nachfolgenden Argumente als Tabellennamen. Bei dieser Option hingegen werden alle Namensargumente als Datenbanknamen behandelt.
--debug[=
,
debug_options
]-#
[
debug_options
]
Schreibt ein Debuglog. Der String
debug_options
heißt häufig
'd:t:o,
.
file_name
'
--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“.
--extended
, -e
Wenn Sie diese Option zur Überprüfung von Tabellen einsetzen, ist sichergestellt, dass diese hundertprozentig konsistent sind; der Vorgang dauert allerdings sehr lange.
Wenn Sie die Option bei der Reparatur von Tabellen einsetzen, wird eine erweiterte Reparatur durchgeführt, deren Ausführung nicht nur extrem lange dauert, sondern die auch eine Menge überflüssiger Datensätze erzeugt!
--fast
, -F
Überprüft nur Tabellen, die nicht ordnungsgemäß geschlossen wurden.
--force
, -f
Das Programm wird auch dann fortgesetzt, wenn ein SQL-Fehler auftritt.
--host=
,
host_name
-h
host_name
Stellt eine Verbindung zum MySQL Server auf dem angegebenen Host her.
--medium-check
, -m
Führt eine Überprüfung durch, die schneller ist als
eine --extended
-Operation. Hierdurch
werden nur 99,99 Prozent aller Fehler gefunden (dies
sollte allerdings in den meisten Fällen ausreichend
sein).
--optimize
, -o
Optimiert die Tabellen.
--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
Wenn Sie mit dieser Option Tabellen überprüfen, wird verhindert, dass die Datensätze auf falsche Verknüpfungen geprüft werden. Dies ist die schnellste Prüfmethode.
Wenn Sie die Option bei der Reparatur von Tabellen einsetzen, wird versucht, nur den Indexbaum zu reparieren. Dies ist die schnellste Reparaturmethode.
--repair
, -r
Führt eine Reparatur durch, die fast alle Fehler beheben kann. Ausgenommen sind lediglich eindeutige Schlüssel, die nicht eindeutig sind.
--silent
, -s
Stummer Modus. Gibt nur Fehlermeldungen aus.
--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.
--tables
Setzt die Option --databases
bzw.
-B
außer Kraft. Alle auf die Option
folgenden Namensargumente werden als Tabellennamen
betrachtet.
--user=
,
user_name
-u
user_name
Verwendet den angegebenen MySQL-Benutzernamen zur Verbindung mit dem Server.
--verbose
, -v
Ausführlicher Modus. Gibt Informationen zu den verschiedenen Stufen des Programmablaufs aus.
--version
, -V
Zeigt die Versionsinformation an und wird dann beendet.
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“.
mysqlhotcopy ist ein Perl-Skript, das
ursprünglich von Tim Bunce entwickelt und beigetragen wurde.
Es erstellt mithilfe von LOCK TABLES
,
FLUSH TABLES
und cp
oder
scp
ein schnelles Backup der Datenbank.
Dieses Skript stellt die schnellste Möglichkeit dar, eine
Sicherungskopie der Datenbank oder einzelner Tabellen zu
erstellen, kann aber nur auf dem Computer ausgeführt werden,
auf dem auch die Datenbankverzeichnisse gespeichert sind.
mysqlhotcopy erlaubt lediglich die
Sicherung von MyISAM
-Tabellen. Es läuft
unter Unix und NetWare.
shell> mysqlhotcopy db_name
[/path/to/new_directory
]
shell> mysqlhotcopy db_name_1
... db_name_n
/path/to/new_directory
Gesichert werden Tabellen in der angegebenen Datenbank, die einem regulären Ausdruck entsprechen:
shell> mysqlhotcopy db_name
./regex
/
Der reguläre Ausdruck für den Tabellennamen kann verneint
werden, indem man ihm eine Tilde
(‘~
’) voranstellt:
shell> mysqlhotcopy db_name
./~regex
/
mysqlhotcopy unterstützt die folgenden Optionen:
--help
, -?
Zeigt eine Hilfemeldung an und wird dann beendet.
--addtodest
Benennt das Zielverzeichnis (sofern vorhanden) nicht um, sondern fügt nur Dateien hinzu.
--allowold
Bricht nicht ab, wenn das Ziel vorhanden ist, sondern
benennt es durch Anhängen des Suffix
_old
um.
--checkpoint=
db_name
.tbl_name
Fügt Prüfpunkteinträge in die angegebene Datenbank
db_name
und Tabelle
tbl_name
ein.
--chroot=
path
Basisverzeichnis des
chroot-Käfigs, auf dem
mysqld läuft. Der Wert
path
sollte mit dem der Option
--chroot
übereinstimmen, die für
mysqld angegeben wurde.
--debug
Aktiviert die Debugausgabe.
--dryrun
, -n
Meldet Aktionen, ohne sie auszuführen.
--flushlog
Synchronisiert Logs, nachdem alle Tabellen gesperrt wurden.
--host=
,
host_name
-h
host_name
Hostname des lokalen Hosts, der zur Herstellung einer
TCP/IP-Verbindung zum lokalen Server verwendet wird.
Standardmäßig erfolgt die Verbindung zu
localhost
über eine Unix-Socketdatei.
--keepold
Gibt an, dass das vorherige (umbenannte) Ziel nach Abschluss nicht gelöscht wird.
--method=
command
Methode zum Kopieren von Dateien (cp
oder scp
).
--noindices
Gibt an, dass vollständige Indexdateien nicht Bestandteil der Sicherung sind. Hierdurch wird die Sicherung beschleunigt, und die Backup-Datei wird kleiner. Die Indizes der neu geladenen Tabellen lassen sich später mit myisamchk -rq rekonstruieren.
--password=
,
password
-p
password
Verwendet das angegebene Passwort zur Verbindung mit dem Server. Beachten Sie, dass der Passwortwert – anders als bei anderen MySQL-Programmen – bei dieser Option nicht optional ist. Wenn Sie das Passwort nicht auf der Befehlszeile angeben wollen, können Sie auch eine Optionsdatei verwenden.
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 zur Verbindung mit dem lokalen Server verwendet werden soll.
--quiet
, -q
Stummer Modus (außer bei Fehlern).
--record_log_pos=
db_name
.tbl_name
Zeichnet den Status von Master und Slave in der
angegebenen Datenbank db_name
und Tabelle tbl_name
auf.
--regexp=
expr
Kopiert alle Datenbanken, deren Namen dem angegebenen regulären Ausdruck entsprechen.
--resetmaster
Setzt das Binärlog nach Sperren aller Tabellen zurück.
--resetslave
Setzt die Datei master.info
nach
Sperren aller Tabellen zurück.
--socket=
,
path
-S
path
Unix-Socketdatei, die für die Verbindung verwendet werden soll.
--suffix=
str
Suffix für Namen kopierter Datenbanken.
--tmpdir=
path
Das Temporärverzeichnis. Vorgabe ist
/tmp
.
--user=
,
user_name
-u
user_name
Verwendet den angegebenen MySQL-Benutzernamen zur Verbindung mit dem Server.
mysqlhotcopy liest die Abschnitte
[client]
und
[mysqlhotcopy]
aus Optionsdateien aus.
Um mysqlhotcopy auszuführen, müssen Sie
Zugriff auf die Dateien der zu sichernden Tabellen haben und
benötigen zudem die Berechtigung SELECT
für diese Tabellen sowie die Berechtigung
RELOAD
(damit Sie FLUSH
TABLES
ausführen können).
perldoc
bietet eine umfassende
Dokumentation zu mysqlhotcopy
einschließlich Informationen zur Struktur der Tabellen, die
für die Optionen --checkpoint
und
--record_log_pos
erforderlich sind:
shell> perldoc mysqlhotcopy
Der Client mysqlimport stellt eine
Befehlszeilenoberfläche für die SQL-Anweisung LOAD
DATA INFILE
bereit. Die meisten Optionen für
mysqlimport entsprechen direkt Klauseln der
LOAD DATA INFILE
-Syntax. Siehe auch
Abschnitt 13.2.5, „LOAD DATA INFILE
“.
Rufen Sie mysqlimport wie folgt auf:
shell> mysqlimport [options
] db_name
textfile1
[textfile2
...]
Bei jeder Textdatei, die auf der Befehlszeile angegeben wird,
entfernt mysqlimport die
Dateinamenserweiterung und bestimmt anhand des Ergebnisses den
Namen der Tabelle, in die der Inhalt der Datei importiert
werden soll. So würden beispielsweise die Dateien mit den
Namen patient.txt
,
patient.text
und
patient
alle in eine Tabelle namens
patient
importiert.
mysqlimport unterstützt die folgenden Optionen:
--help
, -?
Zeigt eine Hilfemeldung an und wird dann beendet.
--columns=
,
column_list
-c
column_list
Diese Option nimmt eine kommagetrennte Liste der Spaltennamen als Wert entgegen. Die Reihenfolge der Spaltennamen gibt an, wie die Spalten in der Datendatei den Tabellenspalten zuzuordnen sind.
--compress
, -C
Komprimiert alle Daten, die zwischen Client und Server ausgetauscht werden, sofern beide die Komprimierung unterstützen.
--debug[=
,
debug_options
]-#
[
debug_options
]
Schreibt ein Debuglog. Der String
debug_options
heißt häufig
'd:t:o,
.
file_name
'
--delete
, -D
Leert die Tabelle vor dem Import der Textdatei.
--fields-terminated-by=…
,
--fields-enclosed-by=…
,
--fields-optionally-enclosed-by=…
,
--fields-escaped-by=…
,
--lines-terminated-by=…
Diese Optionen haben dieselbe Bedeutung wie die
entsprechenden Klauseln für LOAD DATA
INFILE
. Siehe auch Abschnitt 13.2.5, „LOAD DATA INFILE
“.
--force
, -f
Ignoriert Fehler. Wenn beispielsweise eine Tabelle für
eine Textdatei nicht vorhanden ist, wird ggf. mit der
Verarbeitung weiterer vorhandener Dateien fortgefahren.
Ohne --force
wird
mysqlimport beendet, wenn eine Tabelle
nicht vorhanden ist.
--host=
,
host_name
-h
host_name
Importiert Daten in den MySQL Server auf dem angegebenen
Host. Der Standardhost ist localhost
.
--ignore
, -i
Siehe Beschreibung zu --replace
.
--ignore-lines=
N
Ignoriert die ersten N
Zeilen
der Datendatei.
--local
, -L
Liest die Eingabedateien lokal vom Clienthost.
--lock-tables
, -l
Sperrt alle Tabellen für Schreiboperationen, bevor mit der Verarbeitung der Textdateien begonnen wird. Hierdurch ist sichergestellt, dass alle Tabellen auf dem Server synchronisiert sind.
--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.
--replace
, -r
Die Optionen --replace
und
--ignore
steuern den Umgang mit
eingegebenen Datensätzen, die Duplikate vorhandener
Datensätze mit eindeutigen Schlüsselwerten darstellen.
Wenn Sie --replace
angeben, ersetzen die
neuen die vorhandenen Datensätze, die denselben
eindeutigen Schlüsselwert aufweisen. Bei Angabe von
--ignore
hingegen werden neue
Datensätze, deren eindeutiger Schlüsselwert bereits
einem vorhandenen Datensatz zugewiesen ist, ignoriert.
Geben Sie keine Option an, dann tritt ein Fehler auf, wenn
ein doppelter Schlüsselwert gefunden wird; in diesem Fall
wird der Rest der Textdatei ignoriert.
--silent
, -s
Stummer Modus. Eine Ausgabe erfolgt nur, wenn ein Fehler auftritt.
--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.
--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.
Die nachfolgende Beispielsitzung veranschaulicht die Verwendung von mysqlimport:
shell>mysql -e 'CREATE TABLE imptest(id INT, n VARCHAR(30))' test
shell>ed
a 100 Max Sydow 101 Count Dracula . w imptest.txt 32 q shell>od -c imptest.txt
0000000 1 0 0 \t M a x S y d o w \n 1 0 0000020 1 \t C o u n t D r a c u l a \n 0000040 shell>mysqlimport --local test imptest.txt
test.imptest: Records: 2 Deleted: 0 Skipped: 0 Warnings: 0 shell>mysql -e 'SELECT * FROM imptest' test
+------+---------------+ | id | n | +------+---------------+ | 100 | Max Sydow | | 101 | Count Dracula | +------+---------------+
Mit dem Client mysqlshow können Sie Informationen zu den vorhandenen Datenbanken, deren Tabellen oder den Spalten oder Indizes einer Tabelle schnell anzeigen.
mysqlshow stellt eine
Befehlszeilenoberfläche für mehrere
SQL-SHOW
-Anweisungen bereit. Siehe auch
Abschnitt 13.5.4, „SHOW
“. Dieselben Informationen können Sie
auch durch direkte Verwendung dieser Anweisungen abrufen. Sie
können sie beispielsweise über das Clientprogramm
mysql absetzen.
Rufen Sie mysqlshow wie folgt auf:
shell> mysqlshow [options
] [db_name
[tbl_name
[col_name
]]]
Wenn keine Datenbank angegeben wird, erscheint eine Liste aller Datenbanknamen.
Wird keine Tabelle angegeben, dann werden alle passenden Tabellen in der Datenbank angezeigt.
Wird keine Spalte angegeben, dann werden alle passenden Spalten und Spaltentypen in der Tabelle angezeigt.
Die Ausgabe zeigt nur die Namen derjenigen Datenbanken, Tabellen oder Spalten an, für die Sie ausreichende Berechtigungen haben.
Enthält das letzte Argument Shell- oder SQL-spezifische
Jokerzeichen (‘*
’,
‘?
’,
‘%
’ oder
‘_
’), dann werden nur
diejenigen Namen gezeigt, die den jeweiligen Jokerzeichen
entsprechen. Enthält ein Datenbankname Unterstriche, dann
sollten diese mit einem Backslash (bei manchen Unix-Shells
zwingend auch mit zwei Backslashs) markiert werden, um eine
Liste der passenden Tabellen oder Spalten zu erhalten. Die
Zeichen ‘*
’ und
‘?
’ werden in die
SQL-Jokerzeichen ‘%
’ und
‘_
’ konvertiert. Dies kann zu
Verwirrung führen, wenn Sie versuchen, die Spalten einer
Tabelle mit einem ‘_
’ im Namen
anzuzeigen, denn in diesem Fall zeigt Ihnen
mysqlshow nur die Tabellennamen an, die dem
Muster entsprechen. Dieses Problem lässt sich allerdings ganz
einfach beheben, indem Sie am Ende der Befehlszeile ein
zusätzliches ‘%
’ als separates
Argument anhängen.
mysqlshow unterstützt die folgenden Optionen:
--help
, -?
Zeigt eine Hilfemeldung an und wird dann beendet.
--character-sets-dir=
path
Das Verzeichnis, in dem Zeichensätze installiert sind. Siehe auch Abschnitt 5.11.1, „Der für Daten und zum Sortieren benutzte Zeichensatz“.
--compress
, -C
Komprimiert alle Daten, die zwischen Client und Server ausgetauscht werden, sofern beide die Komprimierung unterstützen.
--debug[=
,
debug_options
]-#
[
debug_options
]
Schreibt ein Debuglog. Der String
debug_options
heißt häufig
'd:t:o,
.
file_name
'
--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“.
--host=
,
host_name
-h
host_name
Stellt eine Verbindung zum MySQL Server auf dem angegebenen Host her.
--keys
, -k
Zeigt die Tabellenindizes an.
--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.
--show-table-type
Zeigt eine Spalte an, die den Tabellentyp angibt (wie bei
SHOW FULL TABLES
). Der Typ ist
BASE TABLE
oder
VIEW
.
--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.
--status
, -i
Zeigt zusätzliche Informationen zu jeder Tabelle an.
--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. Diese Option kann mehrfach verwendet werden, um den Umfang der angezeigten Informationen zu erhöhen.
--version
, -V
Zeigt die Versionsinformation an und wird dann beendet.
mysqlslap ist ein Diagnoseprogramm, dessen Zweck die Emulation einer Clientlast für einen MySQL Server ist und das zeitbezogene Angaben der einzelnen Operationsstufen meldet. Das Programm simuliert den Zugriff mehrerer Clients auf den Server. mysqlslap wurde in MySQL 5.1.4 hinzugefügt.
Rufen Sie mysqlslap wie folgt auf:
shell> mysqlslap [options
]
mysqlslap unterstützt die folgenden Optionen:
--help
, -?
Zeigt eine Hilfemeldung an und wird dann beendet.
--auto-generate-sql
, -a
Erzeugt automatisch SQL-Anweisungen, wenn diese nicht in Dateien oder als Befehlsoptionen übergeben wurden.
--compress
, -C
Komprimiert alle Daten, die zwischen Client und Server ausgetauscht werden, sofern beide die Komprimierung unterstützen.
--concurrency
, -c
Anzahl der zu simulierenden Clients beim Absetzen der
SELECT
-Anweisung.
--create=
value
Datei oder String, der bzw. die zur Erstellung der Tabelle verwendet wird.
--create-schema=
value
Schema, in dem die Tests ausgeführt werden. Diese Option wurde in MySQL 5.1.5 hinzugefügt.
--csv[=
file
]
Erzeugt eine Ausgabe von Werten in kommagetrennter Form. Die Ausgabe erfolgt in die angegebene Datei oder, wenn keine Datei angegeben ist, in die Standardausgabe. Diese Option wurde in MySQL 5.1.5 hinzugefügt.
--debug[=
,
debug_options
]-#
[
debug_options
]
Schreibt ein Debuglog. Der String
debug_options
heißt häufig
'd:t:o,
.
file_name
'
--delimiter=
,
str
-F
str
Trennzeichen, das in SQL-Anweisungen verwendet wird, die in Dateien oder über Befehlsoptionen angegeben werden.
--engine=
,
engine_name
-e
engine_name
Speicher-Engine, die zur Erstellung der Tabelle verwendet wird.
--host=
,
host_name
-h
host_name
Stellt eine Verbindung zum MySQL Server auf dem angegebenen Host her.
--iterations=
,
N
-i
N
Häufigkeit, mit der die Tests durchgeführt werden.
--lock-directory=
path
Verzeichnis, das zur Speicherung von Sperren verwendet wird. Diese Option wurde in MySQL 5.1.5 hinzugefügt.
--number-char-cols=
,
N
-x
N
Anzahl der VARCHAR
-Spalten, die
verwendet werden, wenn
--auto-generate-sql
angegeben ist.
--number-int-cols=
,
N
-y
N
Anzahl der INT
-Spalten, die verwendet
werden, wenn --auto-generate-sql
angegeben ist.
--number-of-queries=
N
Anzahl der Abfragen, auf die jeder Client ungefähr beschränkt wird. Diese Option wurde in MySQL 5.1.5 hinzugefügt.
--only-print
Stellt keine Verbindung mit Datenbanken her. mysqlslap gibt dann nur aus, was es gemacht hätte. Diese Option wurde in MySQL 5.1.5 hinzugefügt.
--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.
--preserve-schema
Behält das Schema der mysqlslap-Ausführung bei. Diese Option wurde in MySQL 5.1.5 hinzugefügt.
--query=
,
value
-q
value
Datei oder String, der bzw. die die
SELECT
-Anweisung enthält, die zum
Abrufen von Daten verwendet wird.
--silent
, -s
Stummer Modus. Es erfolgt keine Ausgabe.
--skip-query
, -Q
Führt keine SELECT
-Anweisungen aus.
--slave
Folgt den Master-Sperren für andere
mysqlslap-Clients. Verwenden Sie diese
Option, wenn Sie die Synchronisation zu einem
Master-Server mit --lock-directory
und
NFS beabsichtigen. Diese Option wurde in MySQL 5.1.5
hinzugefügt.
--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.
--use-threads
Unter Unix werden standardmäßig
fork()
-Aufrufe verwendet. Bei dieser
Option werden stattdessen
pthread-Aufrufe benutzt. Unter Windows
werden pthread
-Aufrufe ohnehin
standardmäßig verwendet, d. h., die Option hat keine
Auswirkungen. Diese Option wurde in MySQL 5.1.6
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.
mysql_zap terminiert Prozesse, die mit einem Muster übereinstimmen. Das Programm verwendet den Befehl ps und Unix-Signale, läuft also unter Unix und Unix-ähnlichen Systemen.
Rufen Sie mysql_zap wie folgt auf:
shell> mysql_zap [-signal
] [-?Ift] pattern
Eine Übereinstimmung mit einem Prozess liegt vor, wenn die
Ausgabezeile von ps das Muster enthält.
Standardmäßig fordert mysql_zap für die
Terminierung eines Prozesses immer eine Bestätigung an. Geben
Sie y
ein, um den Prozess zu terminieren,
oder q
, um mysql_zap zu
beenden. Bei jeder anderen Antwort versucht
mysql_zap nicht, den Prozess zu
terminieren.
Sofern die Option
-
angegeben
ist, wird auf diese Weise der Name oder die Nummer des Signals
festgelegt, das an die betreffenden Prozesse zu senden ist.
Andernfalls versucht mysql_zap, einen
Prozess zunächst mit signal
TERM
(Signal 15) und
nachfolgend mit KILL
(Signal 9) zu beenden.
mysql_zap versteht die folgenden weiteren Optionen:
--help
, -?
,
-I
Zeigt eine Hilfemeldung an und wird dann beendet.
-f
Erzwingungsmodus. mysql_zap versucht, jeden Prozess zu terminieren, ohne eine Bestätigung anzufordern.
-t
Testmodus. Zeigt Informationen zu allen Prozessen an, terminiert sie aber nicht.
Auf den meisten Systemen zeigt MySQL neben einer internen Textmeldung den Systemfehlercode auf eine der folgenden Arten an:
message ... (errno: #) message ... (Errcode: #)
Um zu ermitteln, was der Fehlercode bedeutet, lesen Sie die Dokumentation zu Ihrem System oder verwenden das Hilfsprogramm perror.
perror gibt eine Beschreibung für einen Systemfehlercode oder den Code eines Speicher-Engine- (Tabellen-Handler-)Fehlers aus.
Rufen Sie perror wie folgt auf:
shell> perror [options
] errorcode
...
Beispiel:
shell> perror 13 64
Error code 13: Permission denied
Error code 64: Machine is not on the network
Um die Fehlermeldung für einen MySQL-Cluster-Fehlercode zu
erhalten, rufen Sie perror mit der Option
--ndb
auf:
shell> perror --ndb errorcode
Beachten Sie, dass die Bedeutung von Systemfehlermeldungen je nach verwendetem Betriebssystem unterschiedlich sein kann. Anders gesagt: Ein Fehlercode kann auf verschiedenen Betriebssystemen auf unterschiedliche Fehler verweisen.
perror unterstützt die folgenden Optionen:
Zeigt eine Hilfemeldung an und wird dann beendet.
Gibt die Fehlermeldung für einen MySQL-Cluster-Fehlercode aus.
Stummer Modus. Gibt nur die Fehlermeldung aus.
Ausführlicher Modus. Gibt den Fehlercode und die Fehlermeldung aus. Dies ist das Standardverhalten.
Zeigt die Versionsinformation an und wird dann beendet.
Das Hilfsprogramm replace ersetzt Strings in Dateien oder in der Standardeingabe.
Es gibt die folgenden Möglichkeiten, replace aufzurufen:
shell>replace from to [from to] ... -- file [file] ...
shell>replace from to [from to] ... < input
from
ist der String, nach dem
gesucht wird, und to
der String,
der den Such-String ersetzen soll. Es können ein oder mehrere
String-Paare angegeben werden.
Mit der Option --
geben Sie an, wo die Liste
mit den String-Ersetzungen endet und die Dateinamensliste
beginnt. In diesem Fall werden alle Dateien, die auf der
Befehlszeile angegeben sind, modifiziert, d. h., Sie sollten
vor der Bearbeitung eine Kopie der Originaldateien erstellen.
replace
zeigt in einer Meldung an,
welche der eingegebenen Dateien tatsächlich geändert werden.
Wenn die Option --
nicht angegeben ist, liest
replace die Standardeingabe und schreibt in
die Standardausgabe.
replace verwendet einen endlichen
Automaten, um längere Strings zuerst auf Übereinstimmung zu
prüfen. Hiermit können Strings gegeneinander ausgetauscht
werden. So werden etwa mit dem folgenden Befehl
a
und b
in den
angegebenen Dateien file1
und
file2
gegeneinander ausgetauscht:
shell> replace a b b a -- file1 file2 ...
Das Programm replace wird von msql2mysql verwendet. Siehe auch Abschnitt 24.9.1, „msql2mysql — Umwandeln von mSQL-Programmen für die Benutzung mit MySQL“.
replace unterstützt die folgenden Optionen:
-?
, -I
Zeigt eine Hilfemeldung an und wird dann beendet.
-#
debug_options
Schreibt ein Debuglog. Der String
heißt häufig
debug_options
'd:t:o,
.
file_name
'
-s
Stummer Modus. Es werden weniger Angaben zu den Aktivitäten des Programms ausgegeben.
-v
Ausführlicher Modus. Es werden zusätzliche Angaben zu den Aktivitäten des Programms ausgegeben.
-V
Zeigt die Versionsinformation an und wird dann beendet.
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.