データは現代社会において最も重要な資産の 1 つです。多くの企業や個人は、貴重なデータを保存および管理するためにデータベースに依存しています。ただし、どれだけ注意していても、誤ってデータを削除してしまう可能性はあります。 MySQL データベースのユーザーであれば、誤って削除したデータを復元できるかどうかについて混乱し、心配するかもしれません。ただし、正しい回復方法を知っていれば、MySQL データをできるだけ早く回復できます。
この記事では、予期せぬ状況で削除されたデータを回復するために役立ついくつかの一般的な MySQL データ回復テクニックを紹介します。
MySQL を使用してデータをリカバリする前に、いくつかの基本的な用語と概念を理解する必要があります。
MySQL では、各テーブルに関連ファイルがあります。このファイルにはテーブルのデータとメタデータが保持されます。 DELETE または DROP コマンドを実行すると、MySQL は関連ファイルを削除します。ただし、すべてのデータがすぐに完全に削除されるわけではありません。 MySQL は、削除されたデータを空き領域としてマークし、将来上書きできるようにします。上書きされる前であれば、データを復元できます。
もう 1 つ注意すべき点は、MySQL データベースが実行中の場合は、MySQL を再起動しないことです。 MySQL インスタンスを再起動すると、MySQL は新しいデータ用にすべてのテーブル ファイルを開きます。そうなった場合、削除されたデータを復元する機会が失われます。
MySQL には、送信された INSERT、UPDATE、および DELETE ステートメントを取り消すことができるロールバック関数が用意されています。ロールバックは、最も安全で簡単な回復方法の 1 つです。デバッグおよびテスト環境にいるだけの場合、または最近削除したデータを回復する必要があるだけの場合は、ロールバック機能を使用してみることができます。
ロールバックはトランザクション テーブル、つまりストレージ エンジンが InnoDB であるテーブルにのみ適用されることに注意してください。
MySQL ロールバック関数を使用するには、次の手順を実行してください:
ロールバック関数を使用するには、まずテーブルをトランザクションとして設定する必要があります。トランザクション テーブルを設定するには、次のコマンドを使用します。
ALTER TABLE table_name ENGINE = InnoDB;
INSERT、UPDATE、または DELETE ステートメントを実行する前に、トランザクションを開始する必要があります。取引。トランザクションを開始するには、次のコマンドを使用します。
START TRANSACTION;
INSERT、UPDATE、または DELETE ステートメントを実行します。すべての変更をロールバックしたい場合は、次のコマンドを実行します。
ROLLBACK;
すべての変更を完了し、変更をデータベースに保存したい場合, 次のコマンドを実行してください:
COMMIT;
ロールバック機能を使用できない場合は、MySQL の binlog を使用してデータ回復を実現してみてください。データ復旧。 Binlog は、データベース変更操作を記録するために MySQL によって使用されるバイナリ ログです。
INSERT、UPDATE、または DELETE ステートメントを実行すると、MySQL は変更をバイナリログに記録します。これらの変更ログは時系列順に記録され、バイナリ形式で保存されます。 binlog を使用してデータを回復するには、削除されたデータのテーブル名、削除時刻、binlog ファイルの名前と場所を知っている必要があります。
binlog を使用してデータを回復するには、次の手順を実行してください。
削除された binlog ファイルを検索するには次のコマンドを使用してください:
SHOW BINARY LOGS;
このコマンドは、すべての binlog ファイルの名前と場所を表示します。これらのファイルの中から、誤って削除されたステートメントを含む binlog ファイルを見つける必要があります。
binlog ファイルを使用してデータを復元するには、次のコマンドを使用します。
mysqlbinlog [binlog_file_name] | mysql -u [user_name] -p [database_name]
このコマンドは、ファイル内のすべての変更に対して SQL を生成します。 binlog ファイルのステートメントを作成し、それらのステートメントを指定されたデータベースに適用します。既存のデータの上書きを避けるために、このコマンドを実行する前に新しいデータベースを作成できます。
ロールバックまたはバイナリログを使用してデータ回復を実現できない場合、MySQL は他のデータ回復ツールも提供しています。これらのツールは、削除されたデータの空き領域をスキャンし、それらを新しいファイルまたはデータベースに復元しようとします。
MyISAM エンジンを使用している場合は、MyISAMchk ツールを使用して破損したテーブルを確認し、修復できます。 MyISAMchk は、削除されたデータのブロックを見つけて、新しいファイルに復元できます。 MyISAMchk を使用するには、次の手順を実行します。
cp [table_file_name] [path/to/new_table_file]
myisamchk --recover [path/to/new_table_file]
cp [path/to/new_table_file] [original_file_path]
MySQL 独自のツールを使用してデータを回復できない場合は、サードパーティのデータ回復ツールを使用してみることができます。代表的な例は TestDisk と PhotoRec です。これらのツールは、ディスクをスキャンして削除されたデータやファイルを探し、それらを新しいファイルやデータベースに復元しようとします。
サードパーティのツールを使用してデータを回復すると、データの損失やシステムのクラッシュが発生する可能性があることに注意してください。これらのツールを使用する前に、すべてのデータをバックアップすることをお勧めします。
要約
MySQL データ リカバリ テクノロジは複雑なプロセスであり、特別な注意と注意が必要です。どの方法を使用する場合でも、コマンドを実行する前に必ずすべてのデータをバックアップしてください。ロールバックは最も安全なデータ回復方法ですが、トランザクション テーブルにのみ適用されます。ロールバックを使用できない場合は、MySQL のバイナリログを使用して高度なデータ回復を試みることができます。これらの方法のいずれも機能しない場合は、MySQL のデータ回復ツールまたはサードパーティのデータ回復ツールの使用を検討してください。
以上がmysqlは誤って削除したデータを復元しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。