Est-il possible de récupérer des données à partir d'une table BLACKHOLE? [fermé]

8

J'avais créé une table avec le moteur BLACKHOLE, le moteur de stockage BLACKHOLE agit comme un «trou noir» qui accepte les données mais les jette et ne les stocke pas. Les récupérations renvoient toujours un résultat vide.

J'ai entendu dire que nous pouvons récupérer les données en créant une nouvelle table identique à l'ancienne table avec un moteur de stockage comme innodb ou myisam. mais je l'avais essayé aussi mais incapable d'obtenir le résultat. Quelqu'un peut-il m'aider à résoudre ce problème?

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
la source
4
Rien ne peut sortir d'un trou noir, pas même la lumière. C'est pourquoi ils ont été nommés ainsi.
ypercubeᵀᴹ
2
@ypercube Qu'en est-il du rayonnement Hawking? Et qu'en est-il de la récupération ponctuelle avec les journaux de bin?
jynus
4
Qu'en est-il du moteur MySQLWormhole? De cette façon, vous pouvez voyager dans le temps et récupérer vos données avant qu'elles n'entrent dans MySQLBlackhole!
Vérace
6
Courez-vous sur Unix? Les données peuvent être dans / dev / null
Philᵀᴹ
5
Cette question semble être hors sujet car elle concerne l'impossible. Comme l'indique l'utilisateur et la documentation "Le moteur de stockage BLACKHOLE agit comme un" trou noir "qui accepte les données mais les jette et ne les stocke pas. Les récupérations retournent toujours un résultat vide"
billinkc

Réponses:

13

Tu as dit

J'ai entendu dire que nous pouvons récupérer les données en créant une nouvelle table identique à l'ancienne table avec un moteur de stockage comme innodb ou myisam

Celui qui vous a dit cela aurait dû vous dire d'activer les journaux binaires comme l'a commenté @jynus.

Le moteur de stockage BLACKHOLE ne stocke pas du tout de données . Il s'agit d'un moteur de stockage spécial utilisé dans des configurations très méticuleuses.

EXEMPLE # 1: Topologie en étoile

Certains ont des topologies en étoile pour écrire des données dans un maître de réplication MySQL. Le maître n'a que des tables BLACKHOLE. Tous les esclaves ont InnoDB ou MyISAM. De cette façon, si le maître est piraté, il n'y a pas de données locales. Un tel maître est appelé maître de distribution.

EXEMPLE # 2: esclave unique, plusieurs maîtres

Cela implique la configuration de la réplication circulaire avec trois serveurs. Deux maîtres avec un mélange de tables BLACKHOLE et un esclave avec toutes les vraies tables. Cette technique est antérieure à la réplication multisource.

EXEMPLE # 3: Augmentez les performances d'écriture

Je connaissais un client d'hébergement Web qui est allé à Percona pour des problèmes de performance sur une table. Comme le client avait la réplication MySQL avec plusieurs esclaves, Percona a converti la table des problèmes en BLACKHOLE. Cette augmentation des performances d'écriture sur le maître. Les données devaient être lues par les esclaves.

J'ai déjà suggéré cela dans un article pour enregistrer des informations d'audit ( Performances d'un déclencheur vs procédure stockée dans MySQL )

ÉPILOGUE

Alors que certains des commentaires me rappellent StarTrek DS9, le moteur de stockage BLACKHOLE est ce que son nom l'indique: AUCUNE DONNÉE N'EST JAMAIS STOCKÉE !!! Si vous aviez activé les journaux binaires, cela aurait été votre seule chance d'avoir des données.

RolandoMySQLDBA
la source
6
depuis quand les faits et les détails techniques ont-ils été impliqués dans cette question? :)
Philᵀᴹ
2
N'est-il pas formidable que nous puissions être des techniciens (ou même, peut-être, des nerds), sans être des dweebs à tête d'hélice! +1
Vérace
2
Bien sûr, si le binlogging est activé ... les données sont réellement toutes là si les journaux n'ont pas été purgés, et il est possible de les récupérer en les relisant à partir du bon point sur un autre système.
Michael - sqlbot