Datenbank backup mit mysqldump
-
Habe mir ein Programm geschrieben um meine ganzen CMS zu verwalten. Die hängen meist an einer MySQL Datenbank. Jetzt wollte ich um die ganze sache komplett zu machen. Diese Datenbanken sichern. Das geschieht in der MySQl-Welt ganz einfach mit mysqldump. Wie kann ich das mit dem C++Builder umsetzen. Ich komme damit einfach nicht weiter.
-
wie wird den mysqldump aufgerufen?
Von der Konsole aus oder in MySQL selbst (als Befehl).Wenn's ein externe Aufruf von Konsole ist (so wie z.B startmysql) dann schau dir mal ShellExecute an
-
Du kannst mysqldump von der Shell als auch zbsp. als php-script ausführen.
Ich denke mir, es wird im BCB wie ein SQL -Befehl ausgeführt. Aber bis jetzt hat es noch nicht funktioniert.
-
dann ist doch ShellExecute genau das richtige für dich!
Versuch erst mal von Hand den mysqldump-Befehl von der Konsole aus auszuführen (wegen evtl. Parametern) und dann kannst du doch per ShellExecute diesen Befehl aus dem BCB heraus aufrufen
-
Hi Merkur!
Also nach einem Blick in folgende Datei unter dem Stichwot "Backup":
C:\mysql\Docs\manual_toc.html
konnte ich mir folgendes entnehmen:
Do a full backup of your databases:
shell> mysqldump --tab=/path/to/some/dir --opt --fullor
**shell> mysqlhotcopy database /path/to/some/dir
You can also simply copy all table files (
*.frm',
.MYD', and `.MYI' files) as long as the server isn't updating anything.**und zurückholen (restore) mit:
shell> mysqlbinlog hostname-bin.[0-9] | mysql*
oder eine andere Möglichkeit ist:
shell>mysqldump --opt database > backup-file.sql
restore:
mysql database < backup-file.sql
oder
mysql -e "source /patch-to-backup/backup-file.sql" database
Außerdem kann man noch folgendes machen:
However, it's also very useful to populate another MySQL server with information from a database:
mysqldump --opt database | mysql --host=remote-host -C database
It is possible to dump several databases with one command:
mysqldump --databases database1 [database2 database3...] > my_databases.sql
If all the databases are wanted, one can use:
mysqldump --all-databases > all_databases.sql
--> also, um es kurz zu machen:
backup:
ShellExecute(0, "open", "c:\\mysql\\bin\\mysqldump.exe", "--opt database > backup-file.sql", 0, SW_SHOWNORMAL);
restore:
ShellExecute(0, "open", "c:\\mysql\\bin\\mysql.exe", database < backup-file.sql", 0, SW_SHOWNORMAL);
-
Das hilft mir schon weiter. Aber der MySQL-Server ist im Internet.
-
du hast doch erwähnt, dass es für das Backup auch ein PHP-Skript gibt.
Dann führe eben dieses PHP-Skript mittels ShellExecute aus.Musst halt evtl. das PHP-Skript noch an deine Bedürfnisse anpassen
-
Ähm ...
Auf der Konsole funktioniert folgende Zeile:
c:\mysql\bin\mysqldump.exe --opt database > backup-file.sql
Mit folgender ShellExecute-Zeile aber nicht:
ShellExecute(0, "open", "c:\\mysql\\bin\\mysqldump.exe", "--opt database > backup-file.sql", 0, SW_SHOWNORMAL);
MySqlDump wird zwar aufgerufen, bricht aber mit einer Fehlermeldung ab (Got Error: 1103 Incorrect table name 'backup-file.sql' when doing LOCK TABLES)
Woran könnte das liegen (backup-file.sql ist ja keine Table)? Warum werden die Parameter nicht korrekt interpretiert?
-
Bißchen spät, aber naja
Du mußt das ganze mit
system(Parameter.c_str());
starten.
-
Hallo ich hab so ein änliches Problem nur möchte ich gerne eine Tabelle in der Db LÖSCHEN !! wie geht das bitte. Danke
-
Wie man Kommandos ausführt, wurde oben beschrieben.
Welches das richtige Kommando ist, entnimmst du der Dokumentation deines Datenbank-Systems oder du wendest dich an ein Datenbank-Forum.