backup teilweise wieder einspielen

giabbatino

Neuer Benutzer
Beiträge
2
Hallo,

ich habe mittels phpmyadmin ein Backup aller Datenbanken gemacht.
Jetzt möchte ich nicht alle, sondern nur einzelne Datenbanken wieder herstellen.?

Kann mir bitte jemand sagen ob / wie das geht?

Vieln Dank schon mal für die Hilfe

Gruss

Alex
 
Werbung:
Hallo,

ich habe mittels phpmyadmin ein Backup aller Datenbanken gemacht.
Jetzt möchte ich nicht alle, sondern nur einzelne Datenbanken wieder herstellen.?

War das Deine Frage, oder kommt die noch?

Kann mir bitte jemand sagen ob / wie das geht?

Vieln Dank schon mal für die Hilfe

Gruss

Alex


Du nimmst den Editor Deines geringsten Mißtrauens und kopierst damit die gewünschte DB aus dem ganzen Dump-Klumpen raus.

Mal so als Ansatz. Die Fähigkeiten wie z.B. pg_restore, wo man im Detail angeben kann, was man wiederherstellen will, bietet MySQL IIRC nicht.
 
Wenn du eine Datenbank zu einem früheren Zeitpunkt wiederherstellen willst, nennt sich das auch "Point in time Recovery", kurz PITR, und wäre so ungefähr möglich:

http://dev.mysql.com/doc/refman/5.1/de/point-in-time-recovery.html

Bestimmte Teile recovern ist eine gute Frage, beziehst du dich hier nur auf bestimmte Tabellen oder willst du nach Datensätzen differieren? Falls Datensätze: hier könnte man prüfen, wann der letzte Datensatz, der wiederhergestellt werden soll, eingefügt wurde in die DB bzw. den Stand hatte, den man wiederherstellen will. Dann würde es über ein PITR gehen.
 
Wenn du eine Datenbank zu einem früheren Zeitpunkt wiederherstellen willst, nennt sich das auch "Point in time Recovery", kurz PITR, und wäre so ungefähr möglich:

http://dev.mysql.com/doc/refman/5.1/de/point-in-time-recovery.html
@gurbelunder :
Du scheinst da ja Erfahrung zu haben. Was steht denn im binlog, wenn ich ein 'insert into ... now() ...' mache?
Das mysqlbinlog - Tool generiert ja Anweisungen, die man an mysql verfüttern kann - fällt da aus dem mysqlbinlog einfach ein now() raus, oder was passiert?
 
@gurbelunder :
Du scheinst da ja Erfahrung zu haben. Was steht denn im binlog, wenn ich ein 'insert into ... now() ...' mache?
Das mysqlbinlog - Tool generiert ja Anweisungen, die man an mysql verfüttern kann - fällt da aus dem mysqlbinlog einfach ein now() raus, oder was passiert?

Gute Frage, ich hab dss eigentlich sehr selten genutzt. Mir viel bei der Frage nur generell die Funktionalität ein.

Da müsste ich mich auch erst wieder in die Materie lesen.
 
Gute Frage, ich hab dss eigentlich sehr selten genutzt. Mir viel bei der Frage nur generell die Funktionalität ein.

Da müsste ich mich auch erst wieder in die Materie lesen.

Nun ja. Es ist wohl so, daß da im Dump auch Zeitstempel sind, und damit könnte now() dann auch das richtige liefern. Ich seh aber weitere Probleme, z.B. wenn da ein Zufallswert in die Tabelle geschrieben werden soll. Ein 'select random()' wird wohl was anderes liefern.
Egal. Ich halt den Ansatz, Statements nachzuspielen, für riskant. Die MySQL-Doku hat da auch einige Kapitel (die sich abentuerlich liest), und es gibt auch row-based Log deswegen. Da halte ich das WAL-Komzept von PG für erheblich robuster, natürlich mit dem Nachteil, daß es nicht Versionsübergreifend funktioniert.
 
Nun ja. Es ist wohl so, daß da im Dump auch Zeitstempel sind, und damit könnte now() dann auch das richtige liefern. Ich seh aber weitere Probleme, z.B. wenn da ein Zufallswert in die Tabelle geschrieben werden soll. Ein 'select random()' wird wohl was anderes liefern.
Egal. Ich halt den Ansatz, Statements nachzuspielen, für riskant. Die MySQL-Doku hat da auch einige Kapitel (die sich abentuerlich liest), und es gibt auch row-based Log deswegen. Da halte ich das WAL-Komzept von PG für erheblich robuster, natürlich mit dem Nachteil, daß es nicht Versionsübergreifend funktioniert.

Ich gebe dir vollkommen recht, allerdings wollte ich deine Aussage widerlegen, dass es nicht geht. Funktionieren tut's schon, aber ob es schlau ist, es anzuwenden, ist eine andere Geschichte.

Generell ist es ja auch bei einer Datenbank eher gedacht, die Daten immer auf den letzten Stand wiederherzustellen. Funktionen wie PITR sind eigentlich für Entwicklungszwecke gedacht, wenn man einen Stand der Daten z.B. von vor einer Woche benötigt, um diese in einer Entwicklungs-DB zu prüfen.
 
Ich gebe dir vollkommen recht, allerdings wollte ich deine Aussage widerlegen, dass es nicht geht. Funktionieren tut's schon, aber ob es schlau ist, es anzuwenden, ist eine andere Geschichte.

Das es nicht geht, damit meinte ich aber eher, aus einem Komplettdump so ganz easy mal eben schnell eine einzelne Tabelle oder DB herzustellen. Das ist ein einfaches ASCII-File ohne Struktur und ohne Möglichkeiten, da gezielt Teile nur auszulesen, außer, man macht es händisch oder nutzt Texttools wie sed oder so.

Bei PG kann ich im Custom-Format dumpen, dann hat man im Dump ein TOC (Table Of Contents) und kann via Optionen bei pg_restore gezielt Objekte angeben (exclude oder include).
 
Werbung:
Das es nicht geht, damit meinte ich aber eher, aus einem Komplettdump so ganz easy mal eben schnell eine einzelne Tabelle oder DB herzustellen. Das ist ein einfaches ASCII-File ohne Struktur und ohne Möglichkeiten, da gezielt Teile nur auszulesen, außer, man macht es händisch oder nutzt Texttools wie sed oder so.

Bei PG kann ich im Custom-Format dumpen, dann hat man im Dump ein TOC (Table Of Contents) und kann via Optionen bei pg_restore gezielt Objekte angeben (exclude oder include).

Okay, mit PG kenne ich mich wieder nicht aus. Und die Funktionalität, wie du sie in diesem Post schreibst, kenne ich von Oracle, aber nicht von MySQL. Da zieh ich meine Aussage zurück ;)
 
Zurück
Oben