ホームページ >データベース >mysql チュートリアル >mysqlで誤って削除したデータを取得する方法
誤って削除されたデータを取得する Mysql の方法: 最初に binlog で間違ったステートメントを見つけ、次に binlog ログを復元し、最後にデータベースに復元します。コードは [# mysql -uroot -p -f ids < data.sql 】。
#誤って削除したデータを取得するための Mysql メソッド:
1. binlog を見つけます
データ リカバリの前提条件は、Mysql のバイナリ ログが有効になっている必要があります。バイナリ ログが有効になっていない場合は、このドキュメントを無視してください。 binlog ログが有効になっているかどうかは、Mysql 設定ファイルで確認できます。ログの場所は通常、/var/lib/mysql ディレクトリ、またはコンパイルおよびインストールされた日付ディレクトリにあります。 Mysql にログインし、コマンドを使用して表示することもできます。# cat /etc/my.cnf log_bin=mysql-bin # mysql -uroot -p Enter password: mysql> show variables like'log_bin%'; +---------------------------------+--------------------------------------------------+ | Variable_name | Value | +---------------------------------+--------------------------------------------------+ | log_bin | ON | | log_bin_basename | /home/programs/mysql-5.6.26/data/mysql-bin | | log_bin_index | /home/programs/mysql-5.6.26/data/mysql-bin.index | | log_bin_trust_function_creators | OFF | | log_bin_use_v1_row_events | OFF | +---------------------------------+--------------------------------------------------+ 5 rows in set (0.00 sec) # ll /home/programs/mysql-5.6.26/data/mysql-bin* -rw-rw---- 1 mysql mysql 343629748 Oct 13 22:09 /home/programs/mysql-5.6.26/data/mysql-bin.000001 -rw-rw---- 1 mysql mysql 19 Sep 23 17:11 /home/programs/mysql-5.6.26/data/mysql-bin.index複数の binlog ログがある場合は、Mysql コマンド ラインで現在の binlog を表示し、binlog ログを切り取ることもできます。 binlog を切り取って再度表示すると、新しいログが新しい binlog ファイルに書き込まれていることがわかります。
mysql> show master status; +------------------+-----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+-----------+--------------+------------------+-------------------+ | mysql-bin.000001 | 343629748 | | | | +------------------+-----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec) mysql> flush logs; Query OK, 0 rows affected (0.01 sec)
2. binlog で間違ったステートメントを見つける
binlog ログで間違ったステートメントが実行された時点を見つけて、binlog ログを復元できます。 SQLとして間違ったステートメントの前後。この手順をスキップして、binlog ログ全体を SQL に直接復元し、SQL ファイルを開いてエラー ステートメントを削除することもできます。# sudo mysqlbinlog --base64-output=DECODE-ROWS -v -d ids mysql-bin.000001 | grep --ignore-case -A3 -B4 '错误的sql语句'
3. binlog ログの復元
mysqlbinlog コマンドを使用して、binlog ログを SQL スクリプトとして直接復元し、開始時刻と終了時刻を指定できます。最後のバックアップ (バックアップ中にバイナリ ログを更新することをお勧めします) からリカバリ時までに複数のバイナリ ログ ログが生成された場合は、それらを小さいものから大きいものへ順番に SQL にエクスポートし、順番にデータベースにインポートします。# sudo mysqlbinlog --base64-output=DECODE-ROWS -v -d ids --start-datetime '2016-10-11 15:22:53' mysql-bin.000001 > /home/stack/data.sql上記のコマンドでは、-d ids を使用して復元するデータベースを指定します。テーブルレベルのデータを復元する場合は、データを SQL にエクスポートしてから grep でフィルターします。
# more data.sql | grep --ignore-case -E 'insert|update|delete' | grep table
4. データベースへの復元
データを復元するとき、重複データ エラーが発生する可能性があります。-f パラメーターを使用して無視することをお勧めします。# mysql -uroot -p -f ids < data.sql
その他の関連する無料学習の推奨事項: mysql チュートリアル(ビデオ) #
以上がmysqlで誤って削除したデータを取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。