Ist eine vollständige Sicherung des MySQL-Datenbankservers über die Befehlszeile möglich?

7
$ mysqldump -h localhost -u username -p database_name > backup_db.sql

Ich kann die obige Zeile verwenden, aber es ist nur für eine Datenbank im Server. Kann ich eine vollständige Sicherung aller Datenbanken in einer Sicherungsdatei haben?

Oder gibt es einen Befehl, der diesen Prozess serialisiert?

so etwas wie unten (ich habe -all hinzugefügt, was höchstwahrscheinlich falsch ist):

$ mysqldump -u username -h localhost -p -all | gzip -9 > backup_db.sql.gz

Vielen Dank.

Sinan
quelle

Antworten:

14

Verwenden Sie die Option --all-database, um alle Tabellen in allen Datenbanken zu sichern:

mysqldump -u username -h localhost -p --all-databases > all_databases.sql
Tommeh
quelle
Danke für die Antwort. mysql -u Benutzername -h localhost -p --all-Datenbanken | gzip -9> all_databases.sql.gz würde dann die Ausgabedatei komprimieren, oder?
Sinan
Übrigens heißt es: mysql: unbekannte Option '--all-database'
Sinan
Ich habe "mysql" für Sie in "mysqldump" geändert, tut mir leid! :)
Tommeh
1
und ja, "| gzip -9f> file.gz" leitet die SQL in eine gzip'ed-Datei weiter.
Tommeh
ok, funktioniert jetzt ... ich habe nicht bemerkt, dass du es geändert hast.
Sinan
4

Außerdem würde ich vorschlagen, eine my.cnf-Datei so einzurichten, dass Ihr Passwort in der Prozessliste nicht sichtbar ist. Überprüfen Sie dies heraus . Dies hilft Ihnen und verhindert, dass Ihre SQL-Datenbank von anderen Personen gehackt wird, die möglicherweise Zugriff auf Ihr System haben.

Phuzion
quelle
Dies hätte einen tollen Kommentar abgegeben.
anonymer Feigling
1

Ich würde LVM-Snapshots für Sicherungen "aller Datenbanken" vorschlagen, da die Sperrzeit wahrscheinlich hoch ist. Das angezeigte Fehlen einer Untersuchung der Verwendungszeichenfolge oder " man mysql<^M>/all" lässt mich jedoch das Gefühl haben, dass es möglicherweise unverantwortlich ist, einen solchen Vorschlag zu machen.

~$ mysqldump
Usage: mysqldump [OPTIONS] database [tables]
OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR     mysqldump [OPTIONS] --all-databases [OPTIONS]
For more options, use mysqldump --help
Bruno Bronosky
quelle
1
Verdammt, ich war 2009 snarky!
Bruno Bronosky