標籤:
如果mysql不小心操作失誤導致資料錯誤或者丟失這時候binlog起到了很大的作用恢複有幾種方式1.按時間恢複--start-datetime 如果確定了時間點,那麼按時間恢複是一個再好不過的事,一般是通過日常的定期備份+差異備份(日誌)如果日常備份在4點,出錯的時間在12:00點,12:30發現的,首先我們要確認12點出了什麼錯,12點以後的資料還能不能繼續使用,如果不影響,那麼我們只需跳過12:00執行的資料即可首先,恢複4點的備份然後,通過binlog擷取4點到11:59的資料,擷取的資料可以直接作用到資料庫中,避免二次汙染,最好先產生sql檔案 mysqlbinlog --start-datetime="2014-11-07 04:01:00" --stop-datetime="2014-11-07 11:59:00" /data/mysql/data/mysql-bin.000020 >/home/madong/aa.sql在擷取12:01-12:30的資料 mysqlbinlog --start-datetime="2014-11-07 12:01:00" --stop-datetime="2014-11-07 12:30:00" /data/mysql/data/mysql-bin.000020 >>/home/madong/aa.sql最後通過mysql命令列source /home/madong/aa.sql 如果12點以後的資料還不能繼續使用那麼我們只需要恢複到12點,12:00-12:30的資料就不需要恢複2.通過--start-position節點思路和上面的一樣,首先要確定節點的id,在恢複 例:描述:2014-11-07 13:50 遊戲資料庫資料全部清空故障發現時間:13:50故障發生時間:13:40左右故障結束時間:15:55恢複過程:故障觸發,遊戲馬上關服,進行維護,故障原因已知(資料沒了)1.首先確認恢復點恢複帶2014-11-07 13:302.因為剛開服不久,所以準備從最原始開始恢複,不從4點的完整備份節點恢複準備不直接操作,先產生sql, mysqlbinlog --start-datetime="2014-11-06 09:50:00" --stop-datetime="2014-11-07 13:30:00" /data/mysql/data/mysql-bin.000020 >/home/madong/aa.sql(aa.sql 500M左右)3.因資料庫重設之後又有玩家註冊,如果匯入資料會出現主鍵衝突,所以再次清空資料庫(保留基表資料)4.匯入sql進入mysql命令列,並切換資料庫(use DBNAME)source /home/madong/aa.sql執行開始時間14:57結束時間15:54 大約一個小時
mysql通過binlog恢複資料