私の知る限り、innodb_file_per_table = off
でInnoDBテーブルを使用しても、削除されたデータがibdata1
ファイルに表示されるのを防ぐことはできません。
これは設計によるものであり、innodb_file_per_table = on
を使用するようにシステム設定を切り替えることができます。これにより、システムは機密情報を含むibdata*
ファイルを細断処理できますが、「サーバーのダウンタイムはありません。許可されました」
ibdata1
ファイル内の機密情報をなんらかの方法で上書きして、後で誤ったthis is sensitive
がthis is xxxxxxxxx
を読み取るようにできますか。
私はDBAではなく、これがまったくうまくいくのか、チェックサムを破壊したり、サーバーをクラッシュさせたりするのかどうかもわかりません。
だから私の質問は、実行中のサーバーの安定性に影響を与えることなく、その間にリークを防ぐために何ができるかということです。
innodb_file_per_table に切り替えるだけでは、ibdata1のサイズは同じであるため十分ではありません。
Ibdatat1内にあり、OPTIMIZE TABLEを実行したテーブルは、テーブルとそのインデックスを.ibd
ファイルに明示するだけです。 ibdata1内のテーブルのフットプリントは引き続き存在します。 ibdata1にデータとインデックスページが存在しないようにInnoDBを再構築する方がはるかに優れています
考えてみてください。innodb_file_per_tableをオフにすると、データとインデックス以外にibdata1の内部に何が入りますか?
これらのいくつかは最終的に古いデータとインデックスページを上書きする可能性がありますが、最終的にどのくらいの時間がかかりますか? ibdata1を完全に圧縮する方が良いのではないでしょうか。基本的に、それは以下を伴います:
その方法については、過去のリンクをご覧ください...
Oct 29, 2010
: StackOverflowの元の投稿Apr 01, 2012
: innodb_file_per_tableをお勧めしますか?Mar 25, 2012
: InnoDBがすべてのデータベースを1つのファイルに保存するのはなぜですか?Feb 03, 2012
: MySQL InnoDBのテーブルのスケジュールされた最適化Nov 26, 2011
: ファイルの6308行でエラー1114(HY000)&テーブルuser_analysisがいっぱいです