資料庫是Mysql的,有個user table.裡面目前有144059個使用者資料。最近有回饋就是有一些用戶以前註冊過,然後過一段時間發現不能登錄,需要重新註冊。網站是PHP的。得到回饋後就檢查了一下cron job和日誌等,都沒找到原因。 (不能登入的原因就是該使用者的資訊被刪了)
所以,想請教一下,該從哪方面入手比較好。
修改了一些權限之後,使用者遺失的情況就沒有發生過了(已經過了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>
開啟general_log
可以使用Datahekr 資料庫中間件,有SAAS版本的,能提供比資料庫自帶LOG功能更詳細的審計資訊。
資料庫裡面有慢查詢日誌和執行的SQL日誌,錯誤日誌等等