Backup MySQL DB aus der Applikation
-
- Beiträge: 1058
- Registriert: Sa 12. Sep 2015, 12:10
- OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
- CPU-Target: Win 32/64, Linux64
- Wohnort: Wien
Backup MySQL DB aus der Applikation
Hi allseits.
Vor DB-Änderungen möchte ich dem Benutzer die Möglichkeit geben die gesamte DB zu sichern und im Falle eines Problems wieder zu restoren.
Jetzt mögen einige sagen das wäre ein Admin-Problem und hat in einer Applikation nix zu suchen. Allerdings haben meine Kunden keinen Admin.
Die DB sei erstmal MySQL/MariaDB. Später soll das Konzept auch auf andere DBMS erweitert werden.
Zum Backup gibt es einige Konzepte:
1.) Shellexec mit mysqldump -- da habe ich allerdings wenig Kontrollmöglichkeiten
2.) per SQL eine neue DB erstellen (CREATE DATABASE....) und die Inhalte aller Tabellen (create table destination.table select * from source.table;) übertragen. Ob da dabei Views mit übernehmbar sind weiß ich z.B. nicht.
3.) Gibt es eine andere Variante des Backups? Bei MSSQL gibt es einen expliziten Befehl im TransactSQL den man verwenden kann:
(backup database test to disk = 'D:\MSSql\Backup\einbackup.bak)
Gibt es einen solchen Befehl auch bei MariaDB ?
Bitte um Entscheidungshilfe bzw Hinweise auf Best Practise. Möglicherweise löst ihr das ja auch noch viel eleganter
Danke im Voraus
Vor DB-Änderungen möchte ich dem Benutzer die Möglichkeit geben die gesamte DB zu sichern und im Falle eines Problems wieder zu restoren.
Jetzt mögen einige sagen das wäre ein Admin-Problem und hat in einer Applikation nix zu suchen. Allerdings haben meine Kunden keinen Admin.
Die DB sei erstmal MySQL/MariaDB. Später soll das Konzept auch auf andere DBMS erweitert werden.
Zum Backup gibt es einige Konzepte:
1.) Shellexec mit mysqldump -- da habe ich allerdings wenig Kontrollmöglichkeiten
2.) per SQL eine neue DB erstellen (CREATE DATABASE....) und die Inhalte aller Tabellen (create table destination.table select * from source.table;) übertragen. Ob da dabei Views mit übernehmbar sind weiß ich z.B. nicht.
3.) Gibt es eine andere Variante des Backups? Bei MSSQL gibt es einen expliziten Befehl im TransactSQL den man verwenden kann:
(backup database test to disk = 'D:\MSSql\Backup\einbackup.bak)
Gibt es einen solchen Befehl auch bei MariaDB ?
Bitte um Entscheidungshilfe bzw Hinweise auf Best Practise. Möglicherweise löst ihr das ja auch noch viel eleganter
Danke im Voraus
-
- Lazarusforum e. V.
- Beiträge: 999
- Registriert: Do 17. Apr 2008, 01:59
- OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
- CPU-Target: Intel i7-10750 64Bit
- Wohnort: Freiburg
Re: Backup MySQL DB aus der Applikation
Ich verwende ein selbstgestricktes shellscript welches ich mit
aufrufe.
Das Script (backupdb.sh):
Das Script muss in einem Unterordner 'Backup' der Applikation liegen. Die 25 im Script gibt an, wie viele Sicherungsdateien rotiert werden sollen.
Den Aufruf im Programm mache ich immer bei Verlassen des selben.
USER, PASSWD und DBNAME müssen angepasst werden.
Großer Nachteil: Das Passwort ist lesbar !
Code: Alles auswählen
RunCommand(Application.Location + PathDelim + 'Backup' + PathDelim + 'backupdb.sh ' + Application.Location + PathDelim + 'Backup', Result);
Das Script (backupdb.sh):
Code: Alles auswählen
#!/bin/bash
read I < $1/Last
if [ "$I" == "25" ]; then
I=1
else
let I=I+1
fi
mysqldump --user=USER --password=PASSWD --databases DBNAME > $1/DBNAME$I.sql
echo $I > $1/Last
Den Aufruf im Programm mache ich immer bei Verlassen des selben.
USER, PASSWD und DBNAME müssen angepasst werden.
Großer Nachteil: Das Passwort ist lesbar !
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
Re: Backup MySQL DB aus der Applikation
kann man solche Commands nicht direkt in Quellcode angeben und somit sieht man username und Passwort garnicht erst?
- gladio
- Beiträge: 223
- Registriert: Sa 21. Jun 2014, 06:15
- OS, Lazarus, FPC: Win10-64 - aktuelle Lazarus/FPC Standard-Edition
- CPU-Target: 64Bit
- Wohnort: Rügen
Re: Backup MySQL DB aus der Applikation
Wenn du dir eine Exe-Datei mit einem Hex-Editor anschaust, wirst du dort alle Textkonstanten problemlos lesen können.TT73GP7 hat geschrieben:kann man solche Commands nicht direkt in Quellcode angeben und somit sieht man username und Passwort garnicht erst?
Also auch hinterlegte User/Password wenn sie im Klartext hinterlegt sind.
-
- Beiträge: 3444
- Registriert: Mo 11. Sep 2006, 10:24
- OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
- CPU-Target: X32 / X64 / ARMv5
- Wohnort: Krefeld
Re: Backup MySQL DB aus der Applikation
Man kann natürlich leicht eine kleine Verschlüsselung bauen (z.B. 2 Strings ablegen und sie ver-XORen). Ist natürlich leicht zu knacken, aber wie sicher muss es sein ?gladio hat geschrieben:Also auch hinterlegte User/Password wenn sie im Klartext hinterlegt sind.
-Michael
-
- Lazarusforum e. V.
- Beiträge: 999
- Registriert: Do 17. Apr 2008, 01:59
- OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
- CPU-Target: Intel i7-10750 64Bit
- Wohnort: Freiburg
Re: Backup MySQL DB aus der Applikation
Ich habe kein Problem damit, wenn die User das Passwort lesen können. Ich wollte nur darauf hingewiesen haben.
Ich vertrete den Standpunkt, dass die Daten dem User gehören - also soll er auch den Zugriff kennen.
Programme, welche dieses nicht bieten, gibt es in der MS-Welt leider viel zu viele, nur damit man für immer an eine Anwendung gebunden ist..
Desweiteren liegen die Daten in der erzeugten SQL-Datei ohnehin lesbar vor - man müsste also auch die Sicherung verschlüsseln, wenn man es sicherer machen möchte.
Ich vertrete den Standpunkt, dass die Daten dem User gehören - also soll er auch den Zugriff kennen.
Programme, welche dieses nicht bieten, gibt es in der MS-Welt leider viel zu viele, nur damit man für immer an eine Anwendung gebunden ist..
Desweiteren liegen die Daten in der erzeugten SQL-Datei ohnehin lesbar vor - man müsste also auch die Sicherung verschlüsseln, wenn man es sicherer machen möchte.
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
-
- Beiträge: 1058
- Registriert: Sa 12. Sep 2015, 12:10
- OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
- CPU-Target: Win 32/64, Linux64
- Wohnort: Wien
Re: Backup MySQL DB aus der Applikation
hmm.... also bis jetzt keine wirklich elegante Lösung
Ach ja -- bin leider unter Windows OS
Ach ja -- bin leider unter Windows OS

-
- Lazarusforum e. V.
- Beiträge: 999
- Registriert: Do 17. Apr 2008, 01:59
- OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
- CPU-Target: Intel i7-10750 64Bit
- Wohnort: Freiburg
Re: Backup MySQL DB aus der Applikation
Schau mal hier:
http://forum.lazarus.freepascal.org/ind ... #msg123282
bzw. hier:
http://forum.lazarus.freepascal.org/ind ... #msg197248
http://forum.lazarus.freepascal.org/ind ... #msg123282
bzw. hier:
http://forum.lazarus.freepascal.org/ind ... #msg197248
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.