MariaDB 10.1 Datenbankdateien einbinden ohne Backup!

Kostas

Neuer Benutzer
Beiträge
4
Hallo Zusammen,

ich habe einen großen Fehler gemacht. Das Problem vorab: Ich habe MariaDB deinstalliert ohne vorher ein Backup der DBs zu machen. Jetzt habe ich kein Zugriff mehr auf die DBs.

Ich habe zwei Datenbanken die unter MariaDB10.1 einwandfrei liefen.
Auf der selben Maschine habe ich den WampServer3.1.7 installiert. Der WampServer beinhaltet ebenfalls eine Installation von MariaDB10.3.12 also dachte ich, gleich mal MariaDB10.1 deinstallieren. Dabei wurde ich gefragt ob ich die Datenbanken belassen möchte. Ja natürlich möchte ich die DBs behalten. Nach der Deinstallation habe ich alle Dienste von WampServer beendet und habe die zwei Datenbanken in das Data Verzeichnis C:\wamp64\bin\mariadb\mariadb10.3.12\data kopiert und die Dienste gestartet.
Die Datenbanken und dessen Tabellen sehe ich. In HeidiSQL wenn ich versuche eine Tabelle zu öffnen bekomme ich die Meldung "Table 'XYTable' doesn't exist in engine".
OK dachte ich, alle Dienste von WampServer beendet und die gleiche MariaDB10.1 installieren. Doch die Installation ist beleidigt und möchte ein leeres Verzeichnis haben. Also habe ich das alte Data Verzeichnis mit den DBs verschoben und dann konnte ich MariaDB installieren. Nach der Installation den Dienst beendet und das Data Verzeichnis ersetzt und versucht den Dienst zu starten. Damit ist MariaDB nicht einverstanden, der Dienst lässt sich nicht starten. Also MariaDB reinstalliert, Dienst beendet und nur meine Datenbanken rein kopiert. Doch das bringt alles nichts. Ich bekomme ich die Meldung "Table 'XYTable' doesn't exist in engine".

Gibt es wirklich keinen Weg die Datenbankdateien in eine vorhandene Installation zu importieren wenn kein Backup der DB existiert?

Schöne Grüße
Kostas
 
Werbung:
vermutlich InnoDB, und vermutlich fehlen Dir die ib* - Dateien. Tja, Pech.

Nun, da kein Backup vorhanden ist kann man ja nur schlußfolgern, daß die Daten nicht wichtig waren. Da Du eh nun am Punkt NULL anfängst kannst nun auch gleich eine richtige DB nutzen, gell?
 
Ja, es ist InnoDB. Im \Data Verzeichnis gibt es drei Dateien ib* Dateien: ib_logfile0, ib_logfile1 und ibdata1. Im Verzeichnis \Data\MeineDatenbank\ gibt es zu jeder Tabelle eine .frm und eine .ibd Datei. Außerdem eine db.opt Datei. Meinst du diese Dateien?

Übrigens, mich würde die Tabellenstruktur reichen. Die Daten selbst kann ich importieren.
Dennoch interessiert mich ob es eine Möglichkeit gibt die Datenbank in einer anderen Installation der selben DB Version zu übertragen ohne ein Backup/Restore. Der Hintergrund, es kann immer passieren dass eine Installation beschädigt wird. Im produktiven Umfeld würde man normalerweise täglich oder gar stündlich eine Sicherung fahren. In einem crash Fall kann jede Sekunde veraltete Datenbank zum Problem werden. Wenn nur die Installation defekt ist und nicht die Datenbank selbst, sollte es doch möglich sein diese zu übernehmen. Warum ich übrigens keine Datensicherung habe ist, das Projekt ist in der Entwicklung. Die Daten kommen von einer anderen Anwendung und werden in meiner DB importiert zum visualisieren. Die Daten sind mir in diesem Fall egal. Aber die Struktur ist schon etwas umfangreicher mit mehreren Tabellen und Feldern.

Gruß Kostas
 
Im produktiven Umfeld würde man normalerweise täglich oder gar stündlich eine Sicherung fahren. In einem crash Fall kann jede Sekunde veraltete Datenbank zum Problem werden. Wenn nur die Installation defekt ist und nicht die Datenbank selbst, sollte es doch möglich sein diese zu übernehmen. Warum ich übrigens keine Datensicherung habe ist, das Projekt ist in der Entwicklung.

Wie immer Anforderungen definieren. Wenn es keinen Datenverlust geben darf, dann muss man entsprechende HA Lösungen einsetzen und nicht nur ein Backup fahren.

Auch Projekte in der Entwicklung kann man sichern, wenn die Daten benötigt werden, wie du in deinem Fall siehst.
 
Sicherlich kann man auch in der Entwicklung sichern. Mein System wird auch täglich gesichert, doch die Sicherung ist völlig nutzlos wenn ich nicht täglich ein Backup der Datenbank mache. Ist es bei MariaDB wirklich so dass es keine Möglichkeit gibt eine nicht beschädigte Datenbank auf eine andere Maschine mit einer frischer MariaDB Installation der gleichen Version zu übertragen?
 
Ja, es ist InnoDB. Im \Data Verzeichnis gibt es drei Dateien ib* Dateien: ib_logfile0, ib_logfile1 und ibdata1. Im Verzeichnis \Data\MeineDatenbank\ gibt es zu jeder Tabelle eine .frm und eine .ibd Datei. Außerdem eine db.opt Datei. Meinst du diese Dateien?
Ja.

Übrigens, mich würde die Tabellenstruktur reichen. Die Daten selbst kann ich importieren.
Warum hast Du dann nicht mal einen Schema-Dump, bzw., noch besser, Scripte zum Erstellen der Struktur?

Dennoch interessiert mich ob es eine Möglichkeit gibt die Datenbank in einer anderen Installation der selben DB Version zu übertragen ohne ein Backup/Restore.
Nein, prinzipiell nicht, denn auch ein kopieren den Daten und wieder reinkopieren ist ein Backup/Restore. Unterscheide zwischen logischen Backups (Dumps) und physischen backups, also dem puren kopieren der nötigen Dateien.

Der Hintergrund, es kann immer passieren dass eine Installation beschädigt wird. Im produktiven Umfeld würde man
... kein MySQL auf einer Spielkonsole (Windows) verwenden.

normalerweise täglich oder gar stündlich eine Sicherung fahren. In einem crash Fall kann jede Sekunde veraltete Datenbank zum Problem werden.
In einem produktiven Einsatz macht man nicht täglich oder stündlich ein Backup (Dump). Das würde bei einigen unserer Kunden schon mal Tage dauern. Nein, in einem produktiven Umfeld macht man ein kontinuierliches Backup. So, daß JEDE TRANSAKTION im Backup ist und man die Datenbank ZU JEDER BELIEBIGEN TRANSAKTION wieder herstellen kann. Nennt sich Point-In-Time-Recovery mit Recovery Point Objective (RPO) = 0, also "zero data loss". Zum Beispiel damit: Barman Manual

Andreas
 
Hi Andreas,
sehr interessanter Artikel über RPO das kannte ich so noch nicht. Ich werde mal auf der Suche gehen ob es das auch für MySQL bzw. MariaDB gibt. Der Artikel beschreibt es für die PostgreSQL DB.

Tja, warum ich ein Schema-Dump habe, ich war eben noch in der Entwicklung und habe die Datenbank direkt aus meiner PHPStrorm IDE erzeugt. Mit deinem vorherigen Link MySQL :: MySQL 8.0 Reference Manual :: 15.6.1.2 Moving or Copying InnoDB Tables werden ich gleich mal beschäftigen.
Wenn es wirklich keine Möglichkeit gibt, brauche ich nicht weiter schauen und baue die DB eben neu auf. Dennoch finde ich das alarmierend.

Dir noch eine schöne Zeit.
Gruß Kostas
 
Werbung:
Und diese (DDL) Skripte gehören in die Versionsverwaltung (git, svn, ...) genau wie der Sourcecode der Anwendung.

Zudem brauchst Du auch Änderungsskripte die von einem initialen Stand das Datenmodel an neue Versionen der Anwendung anpassen.

Schau Dich mal nach "Schema Migration Tools" um. Die Helfen bei der Organisation von solchen Skripten und können auch automatisiert eine Schema aktualisieren (weil sie sich merken welche Änderungen schon ausgeführt wurden, und welche noch fehlen).

Liquibase und Flyway sind zwei sehr bekannte Tools.
 
Zurück
Oben