2017-12-28 5 views
0
zu konvertieren Ich habe eine sehr alte db, die offenbar mit einer Engine namens Archive Storage Engine - die offenbar nicht aus der Box mit neueren Versionen von MySQL unterstützt wird - anscheinend da ist ein Schalter, den Sie hinzufügen, wenn Sie kompilieren, dass baut es in ....

Anywho - Ich versuche, diese Daten irgendwie wiederherzustellen, indem Sie: 1) Konvertieren aller Tabellen Motoren zu Innodb - mit einer Version von MySQL das hat archiv und innodb darin unterstützt? ODER 2) irgendwie finden Sie eine funktionierende mysql-Version, die es immer noch unterstützt, so kann ich irgendwie die Tabellen ausgeben und ändern Sie die SQL-Datei, um innodb beim Import zu implementieren?Ich versuche, alte mysql db auf ARCHIVE-Engine in innodb

Sind beide davon möglich? Jede Führung oder Ausrichtung in die richtige Richtung wäre äußerst hilfreich. Ich weiß nicht viel über diese Motoren und noch weniger über Archive. Vielleicht frage ich sogar das Unmögliche?

Vielen Dank im Voraus!

EDIT: Ich konnte eine ältere Version von MySQL herunterladen, die alle Engines unterstützt. Ich konnte alle Datenbankdateien und die ib * -Dateien (die ich in einem anderen Post gelesen habe) aus dem mysql-Verzeichnis root laden, und ich konnte jede Tabelle als separate Datei ausgeben. Ich habe dann alle ENGINE = ARCHIVE durch ENGINE = InnoDB ersetzt und konnte diese Tabellen wieder in den Server mysql importieren und alles funktionierte.

+0

Sind Sie versuchen, eine Dateisicherung oder etwas von mysqldump erzeugt wiederherzustellen – exussum

+0

Dies war eine funktionierende DB und dann ging es „korrupt“ und vermasselt mysql. Ich musste es aus ../mysql/data verschieben. Ich benutzte eine aktuelle Sicherung und extrahierte das DB-Verzeichnis aus dem Snapshot und konnte die Datenbank und die Tabellen in mysql sehen (was ich lokal auf win10 ausführe). Wenn ich versuche ein 'select * from [table];' Die meisten Tabellen führen zu einem Fehler "Tabelle existiert nicht", SOME zeigt mir alle Zeilen und Spalten. Mein Verdacht ist, dass die Version von MySQL I d/l ARCHIVE nicht unterstützt & einige Tabellen verwenden myisam, prob, warum ich Daten sehen kann. Würde gerne mysqldump alles, wenn ich auf alle Daten zugreifen kann – shayaknyc

+0

Es kann viele Gründe für Korruption geben. Archiv ist nicht am einfachsten zu erholen. Ich schlage vor, einen MySQL-Profi zu bezahlen, wenn die Daten wichtig sind. In jedem Fall sind Backups wichtig, stellen Sie sicher, dass Sie sie in Zukunft verwenden – exussum

Antwort

0

Die Changelogs implizieren, dass die ARCHIVE Engine weder aus MySQL noch aus MariaDB entfernt wurde.

In welcher Version laufen Sie?

Können Sie SELECT aus der Archiv-Tabelle? Wenn ja, dann sollte das funktionieren:

CREATE TABLE new (...) ENGINE=InnoDB 
    SELECT * FROM my_archive_table; 

Welche Dateien existieren im Verzeichnis mit dem Namen der Datenbank? Es sollte eine my_archive_table.frm Datei und mindestens eine andere Datei sein.

Was Sie nicht geben:

SHOW TABLE STATUS LIKE 'my_archive_table';