Ist es möglich, Daten aus einer BLACKHOLE-Tabelle wiederherzustellen? [geschlossen]

8

Ich hatte eine Tabelle mit der Engine BLACKHOLE erstellt. Im Grunde genommen fungiert die BLACKHOLE-Speicher-Engine als „Schwarzes Loch“, das Daten akzeptiert, aber wegwirft und nicht speichert. Abfragen geben immer ein leeres Ergebnis zurück.

Ich habe gehört, dass wir die Daten abrufen können, indem wir eine neue Tabelle erstellen, die der alten Tabelle mit der Speicher-Engine wie innodb oder myisam entspricht. aber ich hatte das auch versucht, konnte aber das ergebnis nicht erzielen. Kann mir jemand bei diesem Problem helfen, es zu beheben?

mysql> CREATE TABLE test1(i INT, c CHAR(10)) ENGINE = BLACKHOLE;
Query OK, 0 rows affected (0.08 sec)

mysql> INSERT INTO test1 VALUES(1,'record one'),(2,'record two');
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> select * from test1;
Empty set (0.00 sec)

mysql>  CREATE TABLE test_recovery as select * from test1;
Query OK, 0 rows affected (0.17 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> ALTER TABLE test_recovery ENGINE = innodb;
Query OK, 0 rows affected (0.25 sec)
Records: 0  Duplicates: 0  Warnings: 0


mysql> SELECT * FROM test_recovery;
Empty set (0.00 sec)
Karthick
quelle
4
Aus einem Schwarzen Loch kann nichts kommen, nicht einmal Licht. Deshalb wurden sie so benannt.
Ypercubeᵀᴹ
2
@ypercube Was ist mit Hawking-Strahlung? Und was ist mit der Wiederherstellung zu einem bestimmten Zeitpunkt mit Bin-Protokollen?
Jynus
4
Was ist mit der MySQLWormhole-Engine? Auf diese Weise können Sie in die Vergangenheit reisen und Ihre Daten abrufen, bevor sie in das MySQLBlackhole gelangen!
Vérace
6
Laufen Sie unter Unix? Die Daten könnten in / dev / null sein
Philᵀᴹ
5
Diese Frage scheint nicht zum Thema zu gehören, da es um das Unmögliche geht. Wie der Benutzer und die Dokumentation angeben "Die BLACKHOLE-Speicher-Engine fungiert als" Schwarzes Loch ", das Daten akzeptiert, aber wegwirft und nicht speichert. Abfragen geben immer ein leeres Ergebnis zurück"
billinkc

Antworten:

13

Du sagtest

Ich habe gehört, dass wir die Daten abrufen können, indem wir eine neue Tabelle erstellen, die der alten Tabelle mit der Speicher-Engine innodb oder myisam entspricht

Wer auch immer Ihnen gesagt hat, dass Sie Binärprotokolle aktivieren sollen, wie @jynus kommentiert hat.

Die BLACKHOLE Storage Engine speichert überhaupt keine Daten . Es ist eine spezielle Speicher-Engine, die in sehr sorgfältigen Setups verwendet wird.

BEISPIEL 1: Sterntopologie

Einige haben Sterntopologien, um Daten in einen MySQL Replication Master zu schreiben. Der Meister hat nichts als BLACKHOLE-Tische. Alle Slaves haben InnoDB oder MyISAM. Auf diese Weise gibt es keine lokalen Daten, wenn der Master gehackt wird. Ein solcher Master ist als Distributionsmaster bekannt.

BEISPIEL 2: Einzelner Slave, mehrere Master

Dazu muss die zirkuläre Replikation mit drei Servern eingerichtet werden. Zwei Meister mit einer Mischung aus BLACKHOLE-Tischen und einem Slave mit allen echten Tischen. Diese Technik ist älter als die Replikation mehrerer Quellen.

BEISPIEL 3: Erhöhen Sie die Schreibleistung

Ich kannte einen Webhosting-Client, der wegen Leistungsproblemen an einem Tisch zu Percona ging. Da der Client über eine MySQL-Replikation mit mehreren Slaves verfügte, konvertierte Percona die Problemtabelle in BLACKHOLE. Dies erhöht die Schreibleistung auf dem Master. Die Daten mussten von den Slaves gelesen werden.

Ich habe dies einmal in einem Beitrag zum Aufzeichnen von Überwachungsinformationen vorgeschlagen ( Leistung eines Triggers gegenüber gespeicherter Prozedur in MySQL ).

EPILOG

Während einige der Kommentare mich an StarTrek DS9 erinnern, heißt die BLACKHOLE Storage Engine so: KEINE DATEN WERDEN GESPEICHERT !!! Wenn Sie Binärprotokolle aktiviert hätten, wäre dies Ihre einzige Chance gewesen, Daten zu haben.

RolandoMySQLDBA
quelle
6
Seit wann waren Fakten und technische Aspekte in diese Frage involviert? :)
Philᵀᴹ
2
Ist es nicht großartig, dass wir Technikfreaks (oder vielleicht sogar Nerds) sein können, ohne Dweebs mit Propellerkopf zu sein? +1
Vérace
2
Natürlich, wenn binlogging aktiviert ist ... die Daten ist alles , was es eigentlich , wenn die Protokolle gespült wurden nicht, und es ist eine Möglichkeit , es zurückzugewinnen , indem sie aus genau den richtigen Punkt auf einem anderen System die Wiedergabe.
Michael - sqlbot