Wie eine MysQL komplett sicherung auf Shell ebene?

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
deta1
Beiträge: 978
Registriert: 23.07.2003 17:11:11

Wie eine MysQL komplett sicherung auf Shell ebene?

Beitrag von deta1 » 31.12.2005 17:47:11

Hallo!

Wie kann ich auf Shell ebene eine komplette MySQL Sicherung machen?

d.h. alle vorhandenen Datenbanken inkl. sämtlicher Accounts komplett sichern
und später dann wieder komplett einspielen.

Wie geht das?

Danke für eure Hilfe

Mfg
Deta

Benutzeravatar
feltel
Webmaster
Beiträge: 10458
Registriert: 20.12.2001 13:08:23
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Leipzig, Germany
Kontaktdaten:

Beitrag von feltel » 31.12.2005 17:49:31

Code: Alles auswählen

mysqldump -uroot -pPWD --all-databases > ~/dump.sql
für die Sicherung und

Code: Alles auswählen

mysql -uroot -pPWD < ~/dump.sql
fürs einspielen.

deta1
Beiträge: 978
Registriert: 23.07.2003 17:11:11

Beitrag von deta1 » 31.12.2005 17:56:24

feltel hat geschrieben:

Code: Alles auswählen

mysqldump -uroot -pPWD --all-databases > ~/dump.sql
für die Sicherung und

Code: Alles auswählen

mysql -uroot -pPWD < ~/dump.sql
fürs einspielen.
Dann sollte es keine Probleme mit der Größe denke ich mehr geben, als wenn ich das
mit phpMysqlAdmin oder mysqldumper einspielen will.. Da hats mir immer wegen der Größe alles Zerlegt..

Danke und guten Rutsch....

Benutzeravatar
feltel
Webmaster
Beiträge: 10458
Registriert: 20.12.2001 13:08:23
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Leipzig, Germany
Kontaktdaten:

Beitrag von feltel » 31.12.2005 18:09:14

Nö, Probleme sollte es nicht geben. Wir sichern erfolgreich mit einem ähnlichen Verfahren stündlich die Forums-DB, und die ist ~400 MB groß.

deta1
Beiträge: 978
Registriert: 23.07.2003 17:11:11

Beitrag von deta1 » 31.12.2005 18:56:29

feltel hat geschrieben:Nö, Probleme sollte es nicht geben. Wir sichern erfolgreich mit einem ähnlichen Verfahren stündlich die Forums-DB, und die ist ~400 MB groß.
Dann kann ich sicher sein, das er auch alle wichtigen Tabellen Attribute mit sichert..

Confixx Backup hat das nicht gemacht! Grumpf...

cu Deta

Benutzeravatar
meandtheshell
Beiträge: 4054
Registriert: 14.01.2005 17:51:30

Beitrag von meandtheshell » 01.01.2006 01:11:21

@delta1
noch eine möglichkeit

aufrufverzeichis ist das verzeichnis in dem der dump abgelegt wird

sichert auf blockfs ebene (-0 ist ein voller dump, nach ersten vollen dump kannst du auf >0 für inkrementelle dumps stellen)

Code: Alles auswählen

ssh <user>@<domain> dump -0 -f - /path/to/mysq_db | restore -r -f -


markus

schoeppchen
Beiträge: 184
Registriert: 08.12.2005 11:07:15
Kontaktdaten:

Beitrag von schoeppchen » 01.01.2006 01:55:24

Ich würde noch die Parameter --quote-names und --add-drop-table beim mysqldump hinzufügen, gerade im ersten Falle ärgert man sich im Falle eines Restores eine Frikadelle ans Knie, wenn das Zurückspielen daran scheitert, dass für Attribute reservierte Namen verwendet wurden (bei OpenSource-Projekten mit mySQL nicht selten der Fall) und man einen mehrere Millionen Zeilen großen Dump mit vi editieren muss, bis dieser sich einspielen lässt.

deta1
Beiträge: 978
Registriert: 23.07.2003 17:11:11

Beitrag von deta1 » 01.01.2006 10:10:18

schoeppchen hat geschrieben:Ich würde noch die Parameter --quote-names und --add-drop-table beim mysqldump hinzufügen, gerade im ersten Falle ärgert man sich im Falle eines Restores eine Frikadelle ans Knie, wenn das Zurückspielen daran scheitert, dass für Attribute reservierte Namen verwendet wurden (bei OpenSource-Projekten mit mySQL nicht selten der Fall) und man einen mehrere Millionen Zeilen großen Dump mit vi editieren muss, bis dieser sich einspielen lässt.

Also noch mal zusammengefasst:

mysqldump -uroot -pPWD --all-databases --quote-names --add-drop-table > ~/dump.sql

für die Sicherung und
:
mysql -uroot -pPWD < ~/dump.sql

Frage, noch beim Zurückspielen. Werden da ev. bereits vorhadenen Tabellen einfach überschrieben oder vorher gelöscht?

cu Deta

schoeppchen
Beiträge: 184
Registriert: 08.12.2005 11:07:15
Kontaktdaten:

Beitrag von schoeppchen » 01.01.2006 10:33:27

deta1 hat geschrieben:Also noch mal zusammengefasst:

mysqldump -uroot -pPWD --all-databases --quote-names --add-drop-table > ~/dump.sql

für die Sicherung und
:
mysql -uroot -pPWD < ~/dump.sql
Korrekt. Wobei sich mir die Frage stellt, warum du wirklich alle Datenbanken in einem Dump haben möchtest. Selektives Zurückspielen im Falle des Crahs *einer* Datenbank bietet mySQL nicht, somit müsstest du erst hunderte von MB (GB?) in eine temporäre mySQL Instanz zurückspielen, bevor du dann die entsprechende Datenbank extrahieren und in die Liveumgebung rückspielen könntest. Ich würde ja pro Datenbank ein Dump-File erzeugen.
deta1 hat geschrieben:Frage, noch beim Zurückspielen. Werden da ev. bereits vorhadenen Tabellen einfach überschrieben oder vorher gelöscht?cu Deta
Eben darauf ziehlt meine Anmerkung oben. Ohne den Parameter --add-drop-table würde er gar nichts tun, da mySQL melden würde, dass die Datenbanktabelle bereits exitsiert. Mit dem Parameter löscht er vorher alle im Dump vorhandenen Tabellen vor Neuanlagen, sprich: Mit obiger Methode wird alles in den Zustand zurückgesetzt, der zum Zeitpunkt des Backups existierte.

ACHTUNG: Soweit mir bekannt erzeugt der Parameter --all-databases ein CREATE DATABASE Befehl für jede Datenbank (klar, wie soll er diese auch sonst accessieren im Falle eines Totalcrashes). Somit würdest du auch mit obiger Befehlszeile nur dann rückspielen können, wenn du vorher alle deine Datenbanken komplett löschst über DROP DATABASE. Ich würde in jedem Falle ein kleines Skript vorziehen, welches alle Datenbanken einzeln sichert.

deta1
Beiträge: 978
Registriert: 23.07.2003 17:11:11

Beitrag von deta1 » 01.01.2006 11:36:22

schoeppchen hat geschrieben:
deta1 hat geschrieben:Also noch mal zusammengefasst:

mysqldump -uroot -pPWD --all-databases --quote-names --add-drop-table > ~/dump.sql

für die Sicherung und
:
mysql -uroot -pPWD < ~/dump.sql
Korrekt. Wobei sich mir die Frage stellt, warum du wirklich alle Datenbanken in einem Dump haben möchtest. Selektives Zurückspielen im Falle des Crahs *einer* Datenbank bietet mySQL nicht, somit müsstest du erst hunderte von MB (GB?) in eine temporäre mySQL Instanz zurückspielen, bevor du dann die entsprechende Datenbank extrahieren und in die Liveumgebung rückspielen könntest. Ich würde ja pro Datenbank ein Dump-File erzeugen.
deta1 hat geschrieben:Frage, noch beim Zurückspielen. Werden da ev. bereits vorhadenen Tabellen einfach überschrieben oder vorher gelöscht?cu Deta
Eben darauf ziehlt meine Anmerkung oben. Ohne den Parameter --add-drop-table würde er gar nichts tun, da mySQL melden würde, dass die Datenbanktabelle bereits exitsiert. Mit dem Parameter löscht er vorher alle im Dump vorhandenen Tabellen vor Neuanlagen, sprich: Mit obiger Methode wird alles in den Zustand zurückgesetzt, der zum Zeitpunkt des Backups existierte.

ACHTUNG: Soweit mir bekannt erzeugt der Parameter --all-databases ein CREATE DATABASE Befehl für jede Datenbank (klar, wie soll er diese auch sonst accessieren im Falle eines Totalcrashes). Somit würdest du auch mit obiger Befehlszeile nur dann rückspielen können, wenn du vorher alle deine Datenbanken komplett löschst über DROP DATABASE. Ich würde in jedem Falle ein kleines Skript vorziehen, welches alle Datenbanken einzeln sichert.
Hinter grund ist, da ich auf einen neuen Server umziehe..
Ich habs schon mit Confixx Backup probiert und da hat er viele Attribute in den MySQL Tabellen nich mitgenommen. So das ich nur Probleme hatte.

Darum will ich im nächsten Versuch, vorher einen kompletten MySQL Dump machen und dann einfach auf den neuen Server kopieren und diese dann einspielen..

Ich will phpMyAdmin, mysqldumper etc.. vermeiden..

cu Deta

schoeppchen
Beiträge: 184
Registriert: 08.12.2005 11:07:15
Kontaktdaten:

Beitrag von schoeppchen » 01.01.2006 12:11:25

deta1 hat geschrieben: Hinter grund ist, da ich auf einen neuen Server umziehe..
Ich habs schon mit Confixx Backup probiert und da hat er viele Attribute in den MySQL Tabellen nich mitgenommen. So das ich nur Probleme hatte.

Darum will ich im nächsten Versuch, vorher einen kompletten MySQL Dump machen und dann einfach auf den neuen Server kopieren und diese dann einspielen..
Dann ist obiger Aufruf korrekt. Falls du doch mal ein sehr einfaches Shell-Skript benötigst um deine mySQL DBs einzeln automatisiert zu sichern:

http://linuxhelpforum.de/forum/index.php?topic=6.0

deta1
Beiträge: 978
Registriert: 23.07.2003 17:11:11

Beitrag von deta1 » 01.01.2006 12:34:21

danke

Antworten