ホームページ >バックエンド開発 >PHPチュートリアル >MySQL の特定のテーブルのデータの一部が理由もなく削除されました。原因を確認するにはどうすればよいですか?
データベースは Mysql で、現在 144059 人のユーザー情報が含まれています。最近、一部のユーザーが以前に登録したことがあるが、しばらくするとログインできなくなり、再度登録する必要があるというフィードバックがありました。ウェブサイトはPHPです。フィードバックをいただいた後、cron ジョブとログを確認しましたが、原因は見つかりませんでした。 (ログインできない原因はユーザー情報が削除されているためです)
そこで、どこから始めればよいのかお聞きしたいと思います。
++++++++++++++++++++++++++++++++++++++++++
その後、いくつかの権限を変更しました、ユーザーの喪失は一度も起こりませんでした(2か月が経過しました)。しかし、前回のユーザー喪失の理由はまだ見つかっていません。
とにかく、事件は解決しました。
<code class="language-text">mysql -uroot -prootpwd db_name < db_name.sql
mysqlbinlog --stop-datetime="2013-10-12 12:30:00" /var/log/mysql/mysql-bin.000001 | mysql -uroot -prootpwd
</code>
まずコードのロジックを確認しましょう。いくつかのレコードが不可解に失われた場合、データベース自体やハードディスクに問題がある可能性は低いです。データを取り戻したとしても、コードのロジックが間違っていると、将来的にデータが失われることになります。
ハードディスクのデータが消えてしまった!
percona 5.6 を例に挙げます: <code class="language-text">set global general_log=on;
mysql> show variables where value like '%table%'
-> ;
+------------------------------+-----------------------+
| Variable_name | Value |
+------------------------------+-----------------------+
| log_output | TABLE |
| slave_rows_search_algorithms | TABLE_SCAN,INDEX_SCAN |
| tx_isolation | REPEATABLE-READ |
+------------------------------+-----------------------+
3 rows in set (0.00 sec)
</code>
Datahekr データベース ミドルウェアを使用できます。これには SAAS バージョンがあり、データベースに付属する LOG 機能よりも詳細な監査情報を提供できます。
データベースにはスロークエリログ、実行SQLログ、エラーログなどが存在します。