Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi MySQL-Dump mit Delphi (https://www.delphipraxis.net/81986-mysql-dump-mit-delphi.html)

davar 6. Dez 2006 11:37

Datenbank: MySQL • Version: 4.x • Zugriff über: Zeos

MySQL-Dump mit Delphi
 
Hallo Leute,

ich möchte eine Backupfunktion einrichten, mit der die Datenbank komplett in eine Datei geschrieben wird und die man wiederherstellen kann.

Manuell kann ich ja mysqldump dafür benutzen, aber wie bekomme ich es für den DAU hin?


Edit: also jetzt hab ich es mit ShellExecute versucht:

Delphi-Quellcode:
befehl:= 'C:\Programme\mysql\bin\mysqldump.exe db_kunden --user=user --password=passwort > c:\kunden.sql'; // user und passwort sind natürlich die korrekten
ShellExecute(Application.Handle, 'open' ,PChar(befehl), nil, nil, sw_ShowNormal);
Die Variable "befehl" ist dabei richtig. Wenn ich den Inhalt exakt in die Kommandozeile eingebe (per Copy&Paste), wird der Dump erzeugt. Nicht aber über ShellExecute. Vielleicht weiss hier jemand bescheid..



MfG

davar

davar 7. Dez 2006 16:31

Re: MySQL-Dump mit Delphi
 
Hmmmmm.....

Machen eure Programme nie eine Datenbanksicherung??

dfried 7. Dez 2006 16:55

Re: MySQL-Dump mit Delphi
 
Schau dir mal die Definition von ShellExecute in der Hilfe an. Die ganzen Aufrufparameter müssen separat übergeben werden, der "Befehl" (bei dir) darf nur den Pfad und Namen der EXE enthalten.

davar 11. Dez 2006 10:25

Re: MySQL-Dump mit Delphi
 
Zitat:

Zitat von dfried
Schau dir mal die Definition von ShellExecute in der Hilfe an. Die ganzen Aufrufparameter müssen separat übergeben werden, der "Befehl" (bei dir) darf nur den Pfad und Namen der EXE enthalten.

So hab ich es auch probiert. Die Konsole öffnet und schliesst sich ziemlich schnell. Wenn ich nur lesen könnte was drin steht..

Phoenix 11. Dez 2006 10:28

Re: MySQL-Dump mit Delphi
 
Zitat:

Zitat von davar
So hab ich es auch probiert. Die Konsole öffnet und schliesst sich ziemlich schnell. Wenn ich nur lesen könnte was drin steht..

Dann Leite doch die gesamte Ausgabe in eine Datei und lies hinterher da drin nach.
Code:
aufruf.exe params > log.txt

Christian Seehase 11. Dez 2006 10:30

Re: MySQL-Dump mit Delphi
 
Moin davar,

oder schreib' den Aufruf in eine Batch-Datei, die am Ende mit einer Pause-Zeile versehen ist.

davar 11. Dez 2006 10:36

Re: MySQL-Dump mit Delphi
 
Zitat:

Zitat von Christian Seehase
Moin davar,

oder schreib' den Aufruf in eine Batch-Datei, die am Ende mit einer Pause-Zeile versehen ist.

Auf die einfachsten Sachen kommt man irgendwie am schwierigsten.. Danke für den Tipp!! :thumb:

davar 11. Dez 2006 10:46

Re: MySQL-Dump mit Delphi
 
Jetzt wo ich es mir noch einmal überlege.. So habe ich ja aber keine Kontrolle, ob denn die Sicherung erfolgreich durchgeführt wurde oder doch?

davar 6. Jan 2007 10:18

Re: MySQL-Dump mit Delphi
 
Zitat:

Zitat von Phoenix
Zitat:

Zitat von davar
So hab ich es auch probiert. Die Konsole öffnet und schliesst sich ziemlich schnell. Wenn ich nur lesen könnte was drin steht..

Dann Leite doch die gesamte Ausgabe in eine Datei und lies hinterher da drin nach.
Code:
aufruf.exe params > log.txt

Wie meinst du das? Wo mach ich das?

mkinzler 6. Jan 2007 10:23

Re: MySQL-Dump mit Delphi
 
Delphi-Quellcode:
ShellExecute(Application.Handle, 'open' , 'command.com' ,'dump.bat > log.txt', nil, sw_ShowNormal);

davar 6. Jan 2007 10:32

Re: MySQL-Dump mit Delphi
 
Zitat:

Zitat von mkinzler
Delphi-Quellcode:
ShellExecute(Application.Handle, 'open' , 'command.com' ,'dump.bat > log.txt', nil, sw_ShowNormal);

Hmm..

Genauso gut könnte ich mir doch die Datei anschauen und so feststellen, ob sie nun erstellt wurde oder nicht. Das kann ich aber vom Kunden nicht erwarten, weil der damit nicht klar kommt.

Wie macht ihr denn generell Datenbank-Backups? Es muss doch irgendeine einfache Form davon geben oder irre ich mich?

Jelly 6. Jan 2007 11:22

Re: MySQL-Dump mit Delphi
 
Zitat:

Zitat von davar
Jetzt wo ich es mir noch einmal überlege.. So habe ich ja aber keine Kontrolle, ob denn die Sicherung erfolgreich durchgeführt wurde oder doch?

Du könntest die nativen MyDac Komponenten von Corelab verwenden, da hast du eine Backup Komponente gleich mit an Bord.

Deiner mysqldump Lösung steht noch ein Problem zu: Du darfst die mysqldump.exe nicht mit deiner Anwendung mitgeben aus lizenzrechtlichen Gründen.

davar 6. Jan 2007 12:12

Re: MySQL-Dump mit Delphi
 
Zitat:

Zitat von Jelly
Zitat:

Zitat von davar
Jetzt wo ich es mir noch einmal überlege.. So habe ich ja aber keine Kontrolle, ob denn die Sicherung erfolgreich durchgeführt wurde oder doch?

Du könntest die nativen MyDac Komponenten von Corelab verwenden, da hast du eine Backup Komponente gleich mit an Bord.

Deiner mysqldump Lösung steht noch ein Problem zu: Du darfst die mysqldump.exe nicht mit deiner Anwendung mitgeben aus lizenzrechtlichen Gründen.

Also mein komplettes Projekt umschreiben möchte ich nicht wegen dem Backup. Da wäre es mir einfacher, die Datenbank "manuell" zu sichern.

mysqldump.exe brauche ich auch nicht mitzugeben, das hat der Kunde ja bereits auf seinem Rechner.

Es würde mir auch ein Befehl reichen, mit dem ich mysqldump.exe mit den Parametern richtig aufrufen kann. Mit ShellExecute schaff ich das irgendwie nicht..

Jelly 6. Jan 2007 12:55

Re: MySQL-Dump mit Delphi
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von davar
Also mein komplettes Projekt umschreiben möchte ich nicht wegen dem Backup. Da wäre es mir einfacher, die Datenbank "manuell" zu sichern.

Es kommt ein BDE->MyDAC bzw. ADO->MyDAC Asstistent mit, der dir das Umsetzen entsprechend automatisiert. Das stellt demnach kein problem dar.

Zitat:

Zitat von davar
mysqldump.exe brauche ich auch nicht mitzugeben, das hat der Kunde ja bereits auf seinem Rechner.

Nicht, wenn der MySQL Server auf einem separatem Rechner läuft!

Zitat:

Zitat von davar
Es würde mir auch ein Befehl reichen, mit dem ich mysqldump.exe mit den Parametern richtig aufrufen kann. Mit ShellExecute schaff ich das irgendwie nicht..

Aus alten Zeiten, bevor ich zu MyDac umgestiegen bin, habe ich mal eine Komponente entwickelt, die das Backup über mysqldump.exe erledigt. Auch ein Restore ist damit möglich. Ist zwar nicht wirklich 100% ausgereift, klappt aber soweit. Hab sie mal dem Beitrag angehängt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:24 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz