Backup MySQL DB aus der Applikation

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.

Backup MySQL DB aus der Applikation

Beitragvon charlytango » 20. Aug 2017, 13:57 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
charlytango
 
Beiträge: 115
Registriert: 12. Sep 2015, 11:10
Wohnort: Wien
OS, Lazarus, FPC: FPC 3.0; Laz 1.6 | 
CPU-Target: Win 32Bit, 64bit
Nach oben

Beitragvon MacWomble » 21. Aug 2017, 13:29 Re: Backup MySQL DB aus der Applikation

Ich verwende ein selbstgestricktes shellscript welches ich mit
Code: Alles auswählen
RunCommand(Application.Location + PathDelim + 'Backup' + PathDelim + 'backupdb.sh ' + Application.Location + PathDelim + 'Backup', Result);

aufrufe.
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


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 !
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
MacWomble
 
Beiträge: 478
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 18.3 Cinnamon / CodeTyphon Generation V Plan 6.40 (FPC 3.1.1 Rev 38039) | 
CPU-Target: Intel i7 64/32 Bit
Nach oben

Beitragvon TT73GP7 » 22. Aug 2017, 12:10 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?
TT73GP7
 
Beiträge: 219
Registriert: 29. Mär 2016, 19:45

Beitragvon gladio » 22. Aug 2017, 12:36 Re: Backup MySQL DB aus der Applikation

TT73GP7 hat geschrieben:kann man solche Commands nicht direkt in Quellcode angeben und somit sieht man username und Passwort garnicht erst?


Wenn du dir eine Exe-Datei mit einem Hex-Editor anschaust, wirst du dort alle Textkonstanten problemlos lesen können.
Also auch hinterlegte User/Password wenn sie im Klartext hinterlegt sind.
gladio
 
Beiträge: 95
Registriert: 21. Jun 2014, 05:15
Wohnort: Insel Rügen
OS, Lazarus, FPC: Win7/10-32/64 - Laz 1.8 Standard-Edition | 
CPU-Target: 32/64Bit
Nach oben

Beitragvon mschnell » 22. Aug 2017, 13:57 Re: Backup MySQL DB aus der Applikation

gladio hat geschrieben:Also auch hinterlegte User/Password wenn sie im Klartext hinterlegt sind.

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 ?

-Michael
mschnell
 
Beiträge: 3202
Registriert: 11. Sep 2006, 09:24
Wohnort: Krefeld
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ) | 
CPU-Target: X32 / X64 / ARMv5
Nach oben

Beitragvon MacWomble » 22. Aug 2017, 14:25 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.
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
MacWomble
 
Beiträge: 478
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 18.3 Cinnamon / CodeTyphon Generation V Plan 6.40 (FPC 3.1.1 Rev 38039) | 
CPU-Target: Intel i7 64/32 Bit
Nach oben

Beitragvon charlytango » 22. Aug 2017, 15:59 Re: Backup MySQL DB aus der Applikation

hmm.... also bis jetzt keine wirklich elegante Lösung

Ach ja -- bin leider unter Windows OS 8)
charlytango
 
Beiträge: 115
Registriert: 12. Sep 2015, 11:10
Wohnort: Wien
OS, Lazarus, FPC: FPC 3.0; Laz 1.6 | 
CPU-Target: Win 32Bit, 64bit
Nach oben

Beitragvon MacWomble » 22. Aug 2017, 20:52 Re: Backup MySQL DB aus der Applikation

Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
MacWomble
 
Beiträge: 478
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 18.3 Cinnamon / CodeTyphon Generation V Plan 6.40 (FPC 3.1.1 Rev 38039) | 
CPU-Target: Intel i7 64/32 Bit
Nach oben

• Themenende •

Zurück zu Datenbanken



Wer ist online?

Mitglieder in diesem Forum: Exabot [Bot] und 2 Gäste

porpoises-institution
accuracy-worried