以下のエディターは、記事 mysql 誤って削除されたテーブルからデータを取得する方法 (必読) を提供します。編集者はこれが非常に良いものだと思ったので、皆さんの参考として今から共有します。編集者をフォローして見てみましょう。
バックアップがある場合は、最新のバックアップ データを生成し、mysqlbinlog を使用してバックアップ時点以降のデータを取得し、復元するだけで済みます。
バックアップがない場合、さらに面倒になる可能性があり、データを取得するコストも非常に高くなります。
以下は、バックアップ時点の後にデータを取得するための mysqlbinlog の概要です。簡単な実験では、mysql テーブル データ を削除し、mysqlbinlog を使用して削除したばかりのテーブルのデータを取得します。建 App テーブルの作成時間とデータの挿入
原則: MySQLBINLOG前提: MySQL が bin ログ ログをオープンしました
テストが削除される前:
mysql> show tables; +-----------------------+ | Tables_in_report_sina | +-----------------------+ | app | | test | +-----------------------+ mysql> select now(); +---------------------+ | now() | +---------------------+ | 2013-02-04 11:45:44 | +---------------------+ 1 row in set (0.01 sec) mysql> select count(1) from app; +----------+ | count(1) | +----------+ | 10 | +----------+ 1 row in set (0.01 sec)
データの削除を開始します:
mysql> delete from app where id =1; Query OK, 1 row affected (0.00 sec) mysql> mysql> delete from app where id <6; Query OK, 4 rows affected (0.01 sec) mysql> select count(1) from app; +----------+ | count(1) | +----------+ | 5 | +----------+ 1 row in set (0.00 sec) mysql> select now(); +---------------------+ | now() | +---------------------+ | 2013-02-04 12:08:45 | +---------------------+
データの取得を開始します:
1. bin ログの場所を見つけます:/app/mysql/log -rw-rw---- 1 mysql mysql 17K Feb 4 11:43 alert.log -rw-rw---- 1 mysql mysql 1.0K Nov 1 14:52 master-bin.000001 -rw-rw---- 1 mysql mysql 126 Dec 25 14:00 master-bin.000002 -rw-rw---- 1 mysql mysql 126 Dec 25 14:02 master-bin.000003 -rw-rw---- 1 mysql mysql 126 Dec 25 14:02 master-bin.000004 -rw-rw---- 1 mysql mysql 107 Dec 25 14:02 master-bin.000005 -rw-rw---- 1 mysql mysql 13K Feb 4 12:02 master-bin.000006
mysqlbinlog --start-date='2013-02-04 10:00:00' --stop-date='2013-02-04 12:08:45' /app/mysql/log/master-bin.000006 >/app/mysql/mysql_restore_20130204.sql
一時データベースを作成します
create database for_bak;
mysqldump -uroot -ppwd my_db app > /app/mysql/app.sql
mysql -root -ppwd for_bak < /app/mysql/app.sql
/app /mysql/mysql_restore_20130204.sql の内容の一部: (罪深い delete ステートメントが表示されます) SET TIMESTAMP=1359949544/*!*/;
BEGIN
/*!*/;
# at 12878
#130204 11:45:44 server id 1 end_log_pos 12975 Query thread_id=5 exec_time=974 error_code=0
SET TIMESTAMP=1359949544/*!*/;
delete from app where id =1
/*!*/;
# at 12975
#130204 11:45:44 server id 1 end_log_pos 13002 Xid = 106
COMMIT/*!*/;
# at 13002
#130204 11:45:44 server id 1 end_log_pos 13077 Query thread_id=5 exec_time=1013 error_code=0
SET TIMESTAMP=1359949544/*!*/;
BEGIN
/*!*/;
# at 13077
#130204 11:45:44 server id 1 end_log_pos 13175 Query thread_id=5 exec_time=1013 error_code=0
SET TIMESTAMP=1359949544/*!*/;
delete from app where id <6
/*!*/;
# at 13175
#130204 11:45:44 server id 1 end_log_pos 13202 Xid = 107
COMMIT/*!*/;
DELIMITER ;
# End of log file
このような状況は一般的には比較的まれだと思います。面倒ではありますが、回復することは不可能ではありません。
以上がmysqlで削除されたテーブルを復元するにはどうすればよいですか?誤って削除されたテーブルからデータを取得する MySQL メソッドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。