BLACKHOLEテーブルからデータを回復することは可能ですか?[閉まっている]


8

エンジンBLACKHOLEを使用してテーブルを作成しました。 基本的に、BLACKHOLEストレージエンジンは、データを受け入れますが、破棄して格納しない「ブラックホール」として機能します。検索は常に空の結果を返します。

innodbまたはmyisamとしてストレージエンジンを使用して、古いテーブルと同じ新しいテーブルを作成することでデータを取得できると聞きました。しかし、私もそれを試しましたが、結果を得ることができませんでした。誰かがこの問題を解決するために私を助けることができますか?

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)

4
ブラックホールから光が出ても、何も出てきません。そのため、このように名前が付けられました。
ypercubeᵀᴹ

2
@ypercubeホーキング放射はどうですか?そして、ビンログを使用したポイントインタイムリカバリはどうですか?
jynus 2014

4
MySQLWormholeエンジンはどうですか?そうすれば、MySQLBlackholeに入るに過去にさかのぼってデータを取得できます。
Vérace

6
Unixで実行していますか?データはでは/ dev / nullになるかもしれない
Philᵀᴹ

5
この質問は不可能であるため、トピックから外れているようです。ユーザーとドキュメントに「BLACKHOLEストレージエンジンは、データを受け入れるが破棄して格納しない「ブラックホール」として機能します。取得すると常に空の結果が返される」
billinkc '08 / 08/15

回答:


13

あなたが言った

innodbまたはmyisamとしてストレージエンジンを使用して、古いテーブルと同じ新しいテーブルを作成することでデータを取得できると聞きました

@jynusがコメントしたように、バイナリログを有効にするように指示するべきだと言った人は誰でも。

BLACKHOLEストレージエンジンは、すべてのデータを格納しません。非常に細かい設定で使用される特別なストレージエンジンです。

例1:スター型トポロジー

MySQLレプリケーションマスターにデータを書き込むスタートポロジーを備えているものもあります。マスターにはブラックホールテーブルしかありません。すべてのスレーブにはInnoDBまたはMyISAMがあります。そうすれば、マスターがハッキングされても、ローカルデータはありません。このようなマスターは、ディストリビューションマスターと呼ばれます。

例2:単一スレーブ、複数マスター

これには、3つのサーバーで循環レプリケーションをセットアップすることが含まれます。BLACKHOLEテーブルとすべての実際のテーブルを含むスレーブが混在する2つのマスター。この手法は、マルチソースレプリケーションよりも古いものです。

例3:書き込みパフォーマンスの向上

1つのテーブルのパフォーマンスの問題のためにPerconaに行ったWebホスティングクライアントを知っていました。クライアントには複数のスレーブを持つMySQLレプリケーションがあったため、Perconaは問題のテーブルをBLACKHOLEに変換しました。これにより、マスターでの書き込みパフォーマンスが向上しました。データはスレーブから読み取る必要がありました。

私はかつて監査情報を記録するための投稿でこれを提案しました(MySQLでのトリガーとストアドプロシージャのパフォーマンス

エピローグ

一部のコメントはStarTrek DS9を思い出させますが、BLACKHOLEストレージエンジンはその名前のとおりです。データは保存されません!!! バイナリログを有効にしていた場合、それがデータを保持する唯一のチャンスでした。


6
この質問に事実と技術が関与したのはいつからですか。:)
フィロ2014

2
プロペラを頭に向けずに技術者(あるいは、おそらくオタク)になれるのは素晴らしいことではありませんか。1
Vérace

2
binloggingが有効になっている場合はもちろん、...データがあるログがパージされていない場合は、すべてそこに実際に、そこにある別のシステム上のちょうど右の点からそれらを再生することによって、それを回復する可能性が。
マイケル-sqlbot 14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.