2009-05-05 9 views
6

Ich benutze Befehlszeile, um MYSQL-Datenbank zu sichern und wiederherzustellen. Lassen Sie mich benutzen Ich habe eine Datenbank Data1 mit Ansichten und Verfahren in ihm. Wenn in Cmd line, verwende ich mysqldump d.hMySQL Backup und Restore von der Kommandozeile

..>bin> mysqldump -u root -proot Data1 > Datafile.mysql 

Als ich oben Cmd verwenden, erstellt es eine Backup-Datei auf Ordnern sind Mysql mit Dtafile.mysql Namen.

aber die Sache ist es schafft Backup von nur Tabellen, nicht Verfahren.

Und wenn ich es in einer leeren Datenbank „Data2“ m Wiederherstellung

..bin> mysql - u root -proot Data2 < Dataafile.mysql 

Was es tut, ist, es schafft alle Tabellen und Views in Tabellen konvertieren und keine Verfahren restauriert wurden.

Bedeutet, dass ich meine vollständige Datenbanksicherung mit Alle Tabellen, Ansichten und Prozeduren nicht wiederherstellen kann.

Kann jemand von euch helfen .. Ich wäre sehr dankbar.

Antwort

10

Fügen Sie den Parameter "--routines" für mysqldump ein, damit die Prozeduren ausgegeben werden.

EDIT # 1: Ihr mysqldump Befehl wie jetzt aussehen sollte,

mysqldump -u root -proot --routines Data1 > Datafile.mysql 

EDIT # 2:
Sie müssen auch die --add-drop-table-Schalter hinzufügen, wenn Sie wollen Bewahre deine Ansichten. Der Grund dafür ist, dass Ansichten in zwei Schritten erstellt werden (zuerst als Dummy-Tabellen, dann als echte Ansichten). Bitte beachten Sie auch, dass Tabellen und Views denselben Namensraum haben. Lassen Sie sich daher nicht durch die Ausgabe des Befehls "Tabellen anzeigen" im mysqlclient in die Irre führen. Verwenden Sie stattdessen "Show Create View vw_test", wenn dieser Befehl die create view Query und dann Bingo anzeigt, um sicherzustellen, dass die Views korrekt wiederhergestellt wurden, fügen Sie einige Daten in die relevanten Tabellen in Ihrer anderen Datenbank ein und führen Sie dann eine select Abfrage auf dem Sehen Sie, wenn die Daten binden, als Sie ein Bullenauge getroffen haben, klopfen Sie sich auf die Rückseite :) sonst können Sie immer zu dieser wunderbaren Gemeinschaft bei Stackoverflow zurückkehren.

So (zu halten Ansichten) Ihre mysqldump Befehl sollte jetzt folgendermaßen aussehen

mysqldump -u root -proot --routines --add-drop-table Data1 > Datafile.mysql 

HTH

+1

Hey, wie schließe ich --routinen während der Einnahme von Dump ?? CAn you plz erklären ein wenig –

+0

Hallo, ich habe meine Antwort oben bearbeitet, um den Befehl zu zeigen, zu verwenden. –

+0

Hallo Dank .. Es funktioniert .. Ein weiteres Problem, ich bin konfrontiert Ist das in "Data1" Ich habe Ansichten, die andere Datenbanken bezieht. Wenn ich es wiederherstelle, konvertiere ich alle Ansichten in Tabellen. Ich habe View vw_test in Data1, aber wenn ich es wiederherstelle, wird es zu einer Tabelle mit Name vw_test. Was wäre das Problem. Hilf mir. Vielen Dank. –

-1

dort Backup-Datenbank Verwendung Befehlszeile drei besten Möglichkeiten ist, phpMyAdmin oder MySQL Administrator MySQL-Datenbank-Backup und Wiederherstellung in der einfachen Weise, verwendet mySQL Datenbank-Backup

mysql administrator

phpmyadmin