Page 1 of 2

Datenbank restore

Posted: Mon 27. Jan 2025, 11:08
by MockZ
Hallo,

ich wünsche mir ganz sehr, Datenbanken aus einem Backup „an einem anderen Ort“ wiederherstellen zu können.

Gruß
Mock

Re: Datenbank restore

Posted: Mon 27. Jan 2025, 12:00
by Blubby
In einer neuen Datenbank wäre echt nett.
Oder einfach als Dump

Re: Datenbank restore

Posted: Mon 27. Jan 2025, 12:07
by technotravel
+1 von mir :)

Re: Datenbank restore

Posted: Mon 27. Jan 2025, 12:16
by Jolinar
Ich nutze das integrierte Backupsystem nicht...Aber werden die Datenbanken nicht sowieso als Dump im Backup gespeichert...?

Re: Datenbank restore

Posted: Mon 27. Jan 2025, 12:39
by technotravel
Jolinar wrote: Mon 27. Jan 2025, 12:16 Aber werden die Datenbanken nicht sowieso als Dump im Backup gespeichert...?
Hab jetzt nicht nachgeschaut, aber ich gehe auch davon aus. Problem sind die (nicht-existierenden) Optionen bei einer Wiederherstellung: die DB können nur in eine gleichlautende und schon existierende DB desselben Users wiederhergestellt werden ...

Re: Datenbank restore

Posted: Mon 27. Jan 2025, 12:50
by Jolinar
technotravel wrote: Mon 27. Jan 2025, 12:39 die DB können nur in eine gleichlautende und schon existierende DB desselben Users wiederhergestellt werden
Was aber letztlich auch der Sinn eines Backups ist: Daten sichern, um mit dem Backup im Worst Case den Zustand zum Zeitpunkt des Backups wiederherstellen zu können.

Versteht mich bitte nicht falsch...Wenn euer Funktionswunsch auch aus Sicht der Devs als sinnvoll erachtet werden sollte, dann hab ich kein Problem damit, wenn dieses Feature Einzug ins Projekt findet.
Aber wer wirklich nur eine Kopie der DB in eine andere DB haben will (und als nichts anderes sehe ich diesen Funktionswunsch, nämlich eine Kopie einer DB anzulegen), der sollte das mit Bordmitteln auch hinbekommen...

Re: Datenbank restore

Posted: Mon 27. Jan 2025, 13:09
by technotravel
Jolinar wrote: Mon 27. Jan 2025, 12:50 Was aber letztlich auch der Sinn eines Backups ist: Daten sichern, um mit dem Backup im Worst Case den Zustand zum Zeitpunkt des Backups wiederherstellen zu können.
Gebe dir da durchaus Recht, und in den meisten Fällen dürfte diese "Standard" Option wohl auch reichen. Aber manchmal gibt es auch Szenarien, wo das dann halt nicht reicht ... wenn bei einem Server-Umzug Nutzer umbenannt werden (nur als ein Beispiel).

Bei der Wiederherstellung von Dateien und Ordnern gibt es ja auch eine Möglichkeit, einen alternativen Pfad als Ziel einzugeben ... und bei DB wäre eine optionale freie Zielwahl - oder eben Speicherung als dump in einem frei wählbaren Verzeichnis - sehr wünschenswert.
Jolinar wrote: Mon 27. Jan 2025, 12:50 Aber wer wirklich nur eine Kopie der DB in eine andere DB haben will (und als nichts anderes sehe ich diesen Funktionswunsch, nämlich eine Kopie einer DB anzulegen), der sollte das mit Bordmitteln auch hinbekommen...
Zumindest wenn die Original-DB noch existiert und nicht nur verschlüsselt in einem Restic-Backup ...

Re: Datenbank restore

Posted: Mon 27. Jan 2025, 13:15
by Tobi

Re: Datenbank restore

Posted: Mon 27. Jan 2025, 13:18
by Tobi
Aktuell kannst du das ganz einfach in phpMyAdmin lösen.

Zuerst meldest du dich in phpMyAdmin an und kopierst Datenbank X in die neue Datenbank Y.
Anschließend kannst du X in phpMyAdmin leeren.
Im nächsten Schritt X aus dem Backup wiederherstellen.

Ggf. jetzt wieder die neue X im Z umbenennen und dann die Y wieder nach X. Jetzt kannst du aus Z die fehlenden Daten in X wiederherstellen.

Re: Datenbank restore

Posted: Mon 27. Jan 2025, 13:41
by Ralph

Code: Select all

#!/bin/sh

# check if backup folder exist otherwise create it
if ! [ -d /mybackup/sqldumps ]; then
    mkdir -p /mybackup/sqldumps
fi

# cleaning up previous dumps
rm -Rf /mybackup/sqldumps/*

sleep 2

# create single dumps
for database in $(mysql -e 'show databases' -s --skip-column-names); do
if [ "$database" != "mysql" ]
then
    mysqldump --single-transaction --skip-lock-tables --opt --allow-keywords --flush-logs --hex-blob --quote-names $database > /mybackup/sqldumps/"$database.sql";
fi
done

# remove information_schema, performance_schema ...
if [ -f /mybackup/sqldumps/information_schema.sql ]; then
    rm /mybackup/sqldumps/information_schema.sql
fi

if [ -f /mybackup/sqldumps/performance_schema.sql ]; then
    rm /mybackup/sqldumps/performance_schema.sql
fi

# send notification email
echo "mySQL single dumps" | mail -s "mySQL single dumps" hostmaster@mydomain.tld

Re: Datenbank restore

Posted: Mon 27. Jan 2025, 13:44
by MockZ
Vielen Dank für die vielen Antworten und Vorschläge.

Der Fall hier: Ein Kunde hat wohl Dateien aus seiner Nextcloud-Instanz „verloren“. Backup ist da, aber den 14 Tage alten Datenbestand einfach zurück zu bügeln ist keine Option. Die NC wird von >40 Usern aktiv genutzt. Daher der Plan, einfach das Backup parallel in eine ander Subdomain zu restoren.
Den Workaround, die aktive Datenbank umzulagern, mache ich schon mal bei „normalen“ Websites. Aber wenn die DB so stark genutzt wird, ist mir das zu heiß.
Es wäre doch so einfach, eine andere DB als Ziel anzugeben …

VG
Mock

Re: Datenbank restore

Posted: Mon 27. Jan 2025, 15:03
by Tobi
Bevor man sowas macht schaltet man die Webseite ohnehin temporär offline.
Egal womit man den Restore macht.

Re: Datenbank restore

Posted: Mon 27. Jan 2025, 15:48
by Ralph
MockZ wrote: Mon 27. Jan 2025, 13:44 Der Fall hier: Ein Kunde hat wohl Dateien aus seiner Nextcloud-Instanz „verloren“. Backup ist da, aber den 14 Tage alten Datenbestand einfach zurück zu bügeln ist keine Option. Die NC wird von >40 Usern aktiv genutzt. Daher der Plan, einfach das Backup parallel in eine ander Subdomain zu restoren.
Den Workaround, die aktive Datenbank umzulagern, mache ich schon mal bei „normalen“ Websites. Aber wenn die DB so stark genutzt wird, ist mir das zu heiß.
Ah ok, ich dachte Du wolltest alle Datenbanken unabhänig vom KH Backup sichern :roll:
Wenn es nur um eine DB geht dann kann diese doch einfach per Bash Script und Cron Job gesichert werden und dann gleich danach in eine andere DB importiert werden ... mysqldump und import

Re: Datenbank restore

Posted: Mon 27. Jan 2025, 16:06
by technotravel
Ralph wrote: Mon 27. Jan 2025, 15:48
MockZ wrote: Mon 27. Jan 2025, 13:44 Der Fall hier: Ein Kunde hat wohl Dateien aus seiner Nextcloud-Instanz „verloren“. Backup ist da, aber den 14 Tage alten Datenbestand einfach zurück zu bügeln ist keine Option. Die NC wird von >40 Usern aktiv genutzt. Daher der Plan, einfach das Backup parallel in eine ander Subdomain zu restoren.
Den Workaround, die aktive Datenbank umzulagern, mache ich schon mal bei „normalen“ Websites. Aber wenn die DB so stark genutzt wird, ist mir das zu heiß.
Ah ok, ich dachte Du wolltest alle Datenbanken unabhänig vom KH Backup sichern :roll:
Wenn es nur um eine DB geht dann kann diese doch einfach per Bash Script und Cron Job gesichert werden und dann gleich danach in eine andere DB importiert werden ... mysqldump und import
MockZ schrieb doch, dass er an eine DB aus einem Backup von vor 14 Tagen will - zumindest habe ich das so verstanden. Also gerade so ein Fall, wo eine DB in einem verschlüsselten Restic-Backup lagert, an das man so ohne Weiteres nicht rankommt.

Man kann zwar ein restic repository mounten, aber dann muss man immer noch rauskriegen, ob - und vor allem wo! - der betreffende Dump für das Datum abgespeichert ist.

Von daher der Wunsch, derlei für DB über die Wiederherstellung komfortabler gestalten zu können. Bleib ich dabei :D

Re: Datenbank restore

Posted: Mon 27. Jan 2025, 16:08
by MockZ
Ich habe mich sicher nicht verständich ausgedrückt. So versuche ichs noch einmal: Ich möchte aus einem Restic-BU eine Datenbank im laufenden Betrieb, also ohne irgendwas offline zu nehmen, eine DB in ein Ziel meiner Wahl zurück sichern. Für Files gehts ja auch wunderbar.

VG
Mock