Jump to content

MariaDB - Datenbank umziehen oder Repo wechseln?


Mor9oth
Go to solution Solved by Mor9oth,

Recommended Posts

Ich würde gerne mit meiner aktuellen MariaDB-Datenbank (Linuxserver) auf das offizielle MariaDB-Repositorium von @mgutt wechseln. Nun frage ich mich, ob ich einfach im aktuellen Docker-Template das Repositorium auf das offizielle wechseln kann und dann alle Datenbanken weiterhin funktionieren?

Die abweichenden Variablen zu ergänzen, müsste dann ja gehen, oder?

 

Testweise habe ich einfach mal den offiziellen installiert, kann jetzt aber den von Linuxserver gar nicht mehr editieren ...

(Es war immer nur einer an.)

 

chrome_PvdMfA0VQc.png.540aa494cac34f991570c2707e0a9d1a.png

 

Der Import in den offiziellen hat bisher nicht funktioniert - daher auch die Frage, ob der Repowechsel nicht die einfachste Lösung wäre.

 

Edited by Mor9oth
Link to comment
9 hours ago, Mor9oth said:

Repowechsel

Das wird nicht gehen, weil es komplett unterschiedliche Installationen sind.

 

Du musst einen sqldump machen und den dann bei der neuen Installation einspielen. Entweder per Kommando-Zeile oder den Umweg über phpmyadmin/Adminer machen. HeidiSQL geht evtl auch. Habe ich aber noch nie einen Dump mit gemacht.

Link to comment
24 minutes ago, mgutt said:

Du musst einen sqldump machen und den dann bei der neuen Installation einspielen.

Vielen Dank für dein Feedback! Dann probiere ich das mal über sqldump. Bisher habe ich es nur über den Docker db-backup versucht und das hat Container übergreifend nicht funktioniert.

Edited by Mor9oth
Link to comment
1 hour ago, Mor9oth said:

Bisher habe ich es nur über den Docker db-backup versucht und das hat Container übergreifend nicht funktioniert.

 

Ich habe das immer mit den Bordwerkzeugen gemacht. Je nach Version Deiner MariaDB Installation musst Du mit "mysqldump" oder "mariadb-dump" exportieren - es hat bei den Namen der Tools einen Wechsel gegeben. Alle Parameter für den Dump findest Du in u.a. aufgeführten Link.

 

### docker stop alle Container die auf MariaDB zugreifen

docker stop <Name des MariaDB Containers>
### Deprecated docker exec -i mysqldump --user=<Benutzername> --password=<Passwort> <Datenbankname> > <Wohin mit dem Dump?>
docker exec -i mariadb-dump --user=<Benutzername> --password=<Passwort> <Datenbankname> > <Wohin mit dem Dump?>
docker start <Name des MariaDB Containers>

### docker start alle Container die auf MariaDB zugreifen

 

https://mariadb.com/kb/en/mariadb-dump/

 

In die neue MariaDB musst Du dann aber auf jeden Fall mit "mariadb" importieren:

 

### docker stop alle Container die auf MariaDB zugreifen

docker stop <Name des MariaDB Containers>
### Deprecated docker exec -i mysql --user=<Benutzername> --password=<Passwort> <Datenbankname> < <Wo liegt der Dump?>
docker exec -i mariadb --user=<Benutzername> --password=<Passwort> <Datenbankname> < <Wo liegt der Dump?>
docker start <Name des MariaDB Containers>

### docker start alle Container die auf MariaDB zugreifen

 

https://mariadb.com/kb/en/mariadb-command-line-client/

 

Ich nutze Nextcloud/MySQL/MariaDB seit kurzem nicht mehr, aber so habe ich es immer gemacht.

 

Edited by hawihoney
Link to comment
2 hours ago, hawihoney said:

Ich nutze Nextcloud/MySQL/MariaDB seit kurzem nicht mehr, aber so habe ich es immer gemacht.

Hast du eine gute Nextcloud-Alternative die du empfehlen kannst? Meine Logs sind ständig voll mit Fehlern obwohl alles richtig konfiguriert zu sein scheint (Check im Admin-Bereich) und beim Upload vom Windows-Desktop-Client auf den Server gibt es auch viel zu viele Probleme die unnachvollziehbar für mich sind.

Edited by Mor9oth
Link to comment
19 minutes ago, Mor9oth said:

Hast du eine gute Nextcloud-Alternative die du empfehlen kannst?

 

Sorry, nein. Im Moment nutze ich weder Nextcloud noch eine Alternative. Hatte irgendwann die Nase voll von Nextcloud und dem ewigen Gefrickel. Als extrem ungeduliger Mensch ziehe ich schnell den Stecker ohne über den Rest nachzudenken. Da ich alle Dokumente, Bilder, etc. schon immer sauber organsiert und benannt hatte, klappt das im Moment ganz gut über das Dateisystem und VPN.

 

Link to comment
23 hours ago, hawihoney said:

 

Sorry, nein. Im Moment nutze ich weder Nextcloud noch eine Alternative. Hatte irgendwann die Nase voll von Nextcloud und dem ewigen Gefrickel. Als extrem ungeduliger Mensch ziehe ich schnell den Stecker ohne über den Rest nachzudenken. Da ich alle Dokumente, Bilder, etc. schon immer sauber organsiert und benannt hatte, klappt das im Moment ganz gut über das Dateisystem und VPN.

 

Das Gefrickel nervt mich aktuell auch ziemlich. Leider bin ich eher der Typ der im "flow" nicht aufhören kann bis behoben. 🙄

Link to comment

Ich komme leider gerade mit dem Umzug der Datenbanken nicht weiter. Folgendes habe ich versucht:

 

  1. Datenbank als dump in ein Verzeichnis exportieren (Alter MariaDB-Container)
  2. Neue Datenbank und User im neuen MariaDB-Container angelegt
  3. Import des dumps in die neue Datenbank sowie neue Namen vergeben

Der Dump liegt auch wie gewünscht im Verzeichnis. Die neue Datenbank sowie neuer User sind ebenfalls erfolgreich angelegt. Der Import wirft keinen Fehler - somit dachte ich, dass dies das Standardverhalten von "korrekt ausgeführt" ist. Leider ist die neue Datenbank aber nach wie vor leer!

 

Was mache ich falsch? Werde noch wahnsinnig! 

 

So habe ich 1, 2 und 3 ausgeführt:

 

1️⃣ Befehl in Unraid CLI:

docker exec mariadb -i mysqldump –database alte_datenbank --user=alteruser --password=altes_passwort alte_datenbank > /mnt/user/backups/pfadxyz/dump-alt.sql

 

2️⃣ Neue DB und User mit Berechtigungen in MariDB neu:

CREATE USER 'neuer_dbuser' IDENTIFIED by 'neues_passwort';
CREATE DATABASE neue_database character set='utf8mb4' collate ='utf8mb4_unicode_ci';
GRANT ALL PRIVILEGES ON neue_database.* TO 'neuer_dbuser' IDENTIFIED BY 'neues_passwort';

 

3️⃣ Import dump in die neue DB in Unraid CLI::

docker exec mariaDB mariadb -u neuer_dbuser -p"neues_passwort" neue_database < /mnt/user/backups/pfadxyz/dump-alt.sql

 

Es kommen keine Fehler, die Datenbank ist aber wie gesagt leer. Macht mich verrückt! Berechtigungen im Ziel passen auch.

 

Von 3️⃣ habe ich noch Varianten, die ebenfalls keine Fehler werfen und somit auch zu stimmen scheinen:

 

docker exec mariaDB mariadb --user=neuer_dbuser --password=neues_passwort neue_database < /mnt/user/backups/pfadxyz/dump-alt.sql

 

docker exec mariaDB sh -c 'exec mariadb-dump -u neuer_dbuser -p"neues_passwort" neue_database' < /mnt/user/backups/pfadxyz/dump-alt.sql

Bei diesem Befehl kommt dann auch eine Erfolgs-Message, die Datenbank bleibt dennoch leer.

 

 

chrome_9SyZ2cGu39.png.f586b3a8dd05ee0c498767c5ee77e2e6.png

 

 

Hilfe Please!

Edited by Mor9oth
Link to comment
12 minutes ago, Mor9oth said:
docker exec mariaDB mariadb

 

Probiere Deine Kommandos bitte mal auf der Container Konsole - also ohne den "docker exec mariaDB" Prefix. Ich denke, da siehst Du den einen oder anderen zusätzlichen Hinweis.

 

Nachtrag: Guck mal in den Dump. Sind dort überhaupt CREATE TABLE und INSERT Befehle enthalten?

 

Edited by hawihoney
Link to comment
10 minutes ago, hawihoney said:

 

Probiere Deine Kommandos bitte mal auf der Container Konsole - also ohne den "docker exec mariaDB" Prefix. Ich denke, da siehst Du den einen oder anderen zusätzlichen Hinweis.

 

Gerade probiert mit: 

mariadb -u neuer_dbuser -p"neues_passwort" bitwarden_database < /mnt/user/pfadxyz/dump-alt.sql

Dann möchte er wohl noch was und gibt mit -> aus. Aber keine Ahnung, was da rein kann/muss.

 

chrome_FdveE6fvxs.png.3246178bc260f79fca1d0ca405df2dfd.png

(P.s. ich kann überhaupt kein SQL und leite mir das nur her ...)

Edited by Mor9oth
Link to comment
14 minutes ago, hawihoney said:

 

Das verstehe ich nicht. Was will das Tool denn?

 

Guck mal in den Dump? Sieht er inhaltlich ok aus?

 

Habe es jetzt einfach mal in Notepad++ geöffnet und da steht das drin:

 

OCI runtime exec failed: exec failed: unable to start container process: exec: "-i": executable file not found in $PATH: unknown

 

Dann scheint ja was bei 1️⃣ falsch gelaufen zu sein, oder?

Edited by Mor9oth
Link to comment

Wenn ich den Befehl ohne "docker exec" ausführe, also mit:

mysqldump -u alter_user -p"altespasswort" -R alte_database > /mnt/user/backups/unraid/unraid-databases/mariadb/bitwarden-alt.sql

 

Kommt auch das → sprich er will noch irgendwas ...

 

chrome_RYRDUZWx1F.thumb.jpg.d1c29f83f44c7e080044c55b2620c4a8.jpg

Edited by Mor9oth
Link to comment
6 minutes ago, Mor9oth said:

Bin ich da ev. auf was Exotisches gestoßen?

 

Nee, einfach nur falsche Verwendung der Parameter. Guck mal ganz oben wie ich das gemacht habe:

 

mysqldump --user=alter_user --password=altespasswort alte_database > /mnt/user/backups/unraid/unraid-databases/mariadb/bitwarden-alt.sql

 

Edited by hawihoney
Link to comment
On 7/3/2023 at 3:34 PM, hawihoney said:

 

Nee, einfach nur falsche Verwendung der Parameter. Guck mal ganz oben wie ich das gemacht habe:

 

mysqldump --user=alter_user --password=altespasswort alte_database > /mnt/user/backups/unraid/unraid-databases/mariadb/bitwarden-alt.sql

 

Also:

 

Ich habe nun beim Export über nachfolgenden Befehl die Datenbank mit Inhalt exportiert bekommen. Sind 342 KB. Scheint mir zu passen-

docker exec mariadb mariadb-dump --user=bitwarden --password=123456 datenbankname > /mnt/user/backups/unraid/unraid-databases/mariadb/bitwarden-db.sql

 

Beim Import bekomme ich auch eine Erfolgsmeldung "dump completed":

 

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2023-07-06 15:55:51

 

Allerdings ist im neuen Zielverzeichnis, wo die Datenbank inkl. aller Dateien hinsoll, nur die Datei db.opt enthalten.

chrome_X3lLDI7aC0.png.85e47b9595bad59c0797347f5e208015.png

 

 

Mit diesem Befehl habe ich den Import ausgeführt:

 

docker exec NEUEmariaDB mariadb-dump --user=bitwarden_dbuser --password=123sicherblaa bitwarden_database < /mnt/user/backups/unraid/unraid-databases/mariadb/bitwarden-db.sql

 

 

Die Befehle sind doch richtig. Warum kommen die Dateien denn nicht an?

 

Im ursprünglichen Verzeichnis des alten MariaDB-Containers sieht das ja so aus:

 

chrome_IA1hgXBrBM.thumb.png.d9582a16881a251236eee32b73b39259.png

 

All diese Dateien müssen doch mit beim Export/Import.

Link to comment
3 hours ago, Mor9oth said:

Allerdings ist im neuen Zielverzeichnis, wo die Datenbank inkl. aller Dateien hinsoll, nur die Datei db.opt enthalten

 

Eine mariadb mit 342 KB? Das gibt es nicht. Ist die Quell-Datenbank vielleicht leer oder der User hat keine Tabellenberechtigungen?

 

 

Edited by hawihoney
Link to comment
4 hours ago, Mor9oth said:

All diese Dateien müssen doch mit beim Export/Import.

 

Nein. Ein Dump bzw. Import/Export ist kein Backup. Ein Dump enthält die SQL Befehle zum Erzeugen von Tabellen und dem Einfügen der Inhalte. Ein Backup hingegen sichert Ordner/Dateien. Ein Backup hilft in Deiner Situation nicht. Guck mal mit einem SQL Tool in die alte Datenbank.

 

Nachtrag: Wenn ich mir Deinen Quellordner anschaue, dann scheint das eine leere Datenbank zu sein, die außer den Tabellen keine Inhalte hat. Ist das so?

 

Edited by hawihoney
Link to comment
  • Solution
2 hours ago, hawihoney said:

 

Nein. Ein Dump bzw. Import/Export ist kein Backup. Ein Dump enthält die SQL Befehle zum Erzeugen von Tabellen und dem Einfügen der Inhalte. Ein Backup hingegen sichert Ordner/Dateien. Ein Backup hilft in Deiner Situation nicht. Guck mal mit einem SQL Tool in die alte Datenbank.

 

Nachtrag: Wenn ich mir Deinen Quellordner anschaue, dann scheint das eine leere Datenbank zu sein, die außer den Tabellen keine Inhalte hat. Ist das so?

 

Hmmm - dann lag wohl die ganze Zeit ein Missverständnis vor. Wollte ja den Container wechseln - somit ja auch die Daten im neuen Container haben. 

Ich bin nun einfach in Adminer und habe die Daten aus dem alten Container exportiert und dann in den neuen wieder importiert. Jetzt geht es - und war viel einfacher als meine Versuche mit den ganzen SQL-Befehlen. 😅

 

Vielen Dank auf jeden Fall @hawihoney👍

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...