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.1, „myisamchk — Hilfsprogramm für die Tabellenwartung von MyISAM“.
Ein Hilfsprogramm, das den Inhalt einer
MyISAM
-Logdatei verarbeitet. Siehe auch
Abschnitt 8.3, „myisampack — Erzeugung komprimierter, schreibgeschützter MyISAM Tabellen“.
Ein Hilfsprogramm, das MyISAM
-Tabellen
komprimiert und so kleinere schreibgeschützte Tabellen erzeugt.
Siehe auch Abschnitt 8.3, „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.4, „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.5, „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.6, „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.7, „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.8, „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.9, „mysqldump — Programm zur Datensicherung“.
Ein Hilfsprogramm, welches schnelle Backups von
MyISAM
-Tabellen erstellt, während der Server
ausgeführt wird. Siehe auch Abschnitt 8.10, „mysqlhotcopy — Backup-Programm für Datenbanken“.
Ein Client, der Textdateien mithilfe von LOAD DATA
INFILE
in die jeweiligen Tabellen importiert. Siehe
auch Abschnitt 8.11, „mysqlimport — Programm zum Datenimport“.
Ein Client, der Informationen zu Datenbanken, Tabellen, Spalten und Indizes anzeigt. Siehe auch Abschnitt 8.12, „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.13, „mysqlslap — Client zur Lastemulation“.
Ein Hilfsprogramm, mit dem Prozesse terminiert werden, bei denen eine Übereinstimmung für einen Mustervergleich vorliegt. Abschnitt 8.14, „mysql_zap — Prozesse beenden, die einem Muster entsprechen“.
Ein Hilfsprogramm, das die Bedeutung von System- oder MySQL-Fehlercodes anzeigt. Siehe auch Abschnitt 8.15, „perror — Erklärung der Fehlercodes“.
Ein Hilfsprogramm, das Strings in eingegebenem Text ersetzt. Siehe auch Abschnitt 8.16, „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.1.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.1, „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.4.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.4.2, „mysql-Befehle“.
Die Abfrageergebnisse sollen nicht mit dem Pager (d. h. nicht seitenweise) ausgegeben werden. Abschnitt 8.4.2, „mysql-Befehle“, enthält eine eingehendere Beschreibung zum Pager.
Unterbindet das Kopieren der Ausgabe in einer Datei. Abschnitt 8.4.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.4.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.4.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.4.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.4.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.10, „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.