PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : MySQL Backup


tsaG
2008-08-28, 16:45:00
Hi,

Unser Server ist nun umgezogen und daher muss auch das MySQL Backup wieder eingerichtet werden, an sich garkein Problem.. Wenn es MySQL Administrator für x64 gäbe :).

MySQL Administrator findet die MySQL exe nicht (sie ist da, er kann sie jedoch anscheinend nicht öffnen), vorher habe ich es über folgende Syntax gemacht:

"C:\Program Files (x86)\MySQL\MySQL Tools for 5.0\MySQLAdministrator.exe" "-UDC:\Documents and Settings\Administrator\Application Data\MySQL\" "-clocalhost" "-bpascent_logon" "-btE:\BFSYNC\MySQL_Backups\" "-bxascent_logon"

Dies gab mir eine schöne SQL Batch Datei aus die man ganz bequem notfalls durchsuchen und auch ganz easy (sogar mit navicat) wieder einspielen konnte. Selbst den Ort wo die Datei hingespeichert wird konnte man angeben.

Nun habe ich nach einem anderen Programm geschaut und bin auf MySQLdump (http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html) gestoßen. Nun steige ich da nochnicht hinter... Wenn ich eine Batch datei anfertigen will, wie ist die genaue Syntax dafür (möchte es nicht im mySQL CMD machen, sondern einfach per Windows batch die dann per ACP oder Taskplaner ausgeführt wird)?

Die Syntax muss ja enthalten:
Port
Passwort
Username
Zu sichernde Datenbank
Speicherort
Eventuell noch namen (das Backup wurde vorher noch mit Datum und Uhrzeit versehen)

Jedoch habe ich weder parameter für Speicherort noch Namensgebung gefunden.

Es müssen einfach nur die kompletten Datenbanken übernommen werden, also alle Tabellen welche diese enthalten.

-Tee

Kinman
2008-08-28, 16:55:36
Nur so als Idee (kA obs klappt)
Kopier einfach die Datenbankdateien (im data Verzeichnis). So hab ich zumindest einmal erfolgreich einen Satz Datenbanken kopiert (allerdings von XP 32Bit zu XP 32Bit)

mfg Kinman

tsaG
2008-08-28, 17:37:01
Ja, das funktioniert, leider jedoch ziemlich Unsauber.

Habe aber nun etwas gefunden :), Navicat nimmt auch NPT dateien auf (quasi Navicat cronjob Dateien)

Meine sieht nun wie folgt aus

<?xml version="1.0" encoding="UTF-8"?>
<TransferProfile Ver="1.0">
<General SourceConn="Localhost" SourceDatabase="ascent_char_new" TargetConn="" TargetDatabase="" TargetSchema="" FlushSourceLogs="False" LockSourceTables="False" TransferToServer="False" TransferToFile="True" LogToFile="False" ContinueOnError="True" CreateDatabase="True" CreateTables="True" IncludeTableOptions="True" DropTables="True" CreateTriggers="True" CreateRecords="True" UseDelayedInsert="False" UseCompleteInsert="False" UseExtendedInsert="True" LockTargetTables="False" UseBlobHex="True" DumpFile="E:\BFSYNC\DB-Backups\ascent_char_new" LogFileName=""/>
<Tables SelectAll="True"/>
<Views SelectAll="False"/>
<StoredProcs SelectAll="False"/>
<StoredFuncs SelectAll="False"/>
<Events SelectAll="False"/>
</TransferProfile>


Dort werde ich dann noch im ACP den Dateinahmen durch das Datum erweitern lassen, den String in die Datei schreiben und schwupps läuft es so wie ich es möchte :)

-Tee

Marscel
2008-08-28, 17:46:58
Ich dumpe Datenbanken gewöhnlich so komplett:

mkdir L:\Backup\DB-MYSQL5-DUMP\%DATE%
mysqldump --user=root --password=xxx --all-databases -f > L:\Backup\DB-MYSQL5-DUMP\%DATE%\dump.sql

Wobei nach dem > der Speicherpfad des Dumps gemeint ist, %DATE% ist ein Zeitstempel. Wenn der Port 3306 ist, brauchst du ihn nicht angeben.

tsaG
2008-08-28, 17:56:27
Oh danke, noch einfacher :massa:

tsaG
2008-08-28, 19:23:21
Okay, habe da noch ein Problem.

Wenn ich nun
Shell("mysqldump --user=root --password=password --databases ascent_logon -f > E:\BFSYNC\DB-Backups\%DATE%\ascent_logon.sql")

in vb.net ausführe, sehe ich ein cmd Fenster wo lauter lustige Zahlen und zeichen herumflitzen. Vereinzelt kann man auch den DB Inhalt erkennen. Mehr jedoch nicht. Es ensteht kein File.

Wenn ich den Befehl ( mysqldump --user...) jedoch direkt in cmd eintippe funktioniert es einwandfrei..
Wieso funktioniert das denn nicht wenn ich es über das Programm starte? :(

Jemand ratschläge?
Möchte die keine Batch schreiben und die dann einfach neben das Programm legen, das soll alles im Programm erfolgen.

Berni
2008-08-28, 23:04:51
http://bytes.com/forum/thread384450.html Laut dem müsste es mit
Shell("cmd /c mysqldump --user=root --password=password --databases ascent_logon -f > E:\BFSYNC\DB-Backups\%DATE%\ascent_logon.sql")
gehen. Oder alternativ halt indem du die Daten von der Konsole in VB.NET einliest und VB.NET die Datei erstellen lässt (dürfte aber wesentlich ineffektiver sein).