Backup MySQL DB aus der Applikation

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
charlytango
Beiträge: 843
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

Beitrag von charlytango »

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

MacWomble
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

Beitrag von MacWomble »

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.

TT73GP7
Beiträge: 238
Registriert: Di 29. Mär 2016, 20:45

Re: Backup MySQL DB aus der Applikation

Beitrag von TT73GP7 »

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

Benutzeravatar
gladio
Beiträge: 217
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

Beitrag von gladio »

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.

mschnell
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

Beitrag von mschnell »

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

MacWomble
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

Beitrag von MacWomble »

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.

charlytango
Beiträge: 843
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

Beitrag von charlytango »

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

Ach ja -- bin leider unter Windows OS 8)

MacWomble
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

Beitrag von MacWomble »

Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

Antworten