{eval=Array;=+count(Array);}
這里介紹一種簡單的方法,就是開啟binlog二進制日志,記錄用戶對MySQL數據庫的所有操作(除了查詢),然后通過mysqlbinlog命令導出為SQL文件(剔除drop語句),最后再恢復就行,下面我簡單介紹一下操作過程,實驗環境Win10+MySQL5.5,感興趣的朋友可以嘗試一下:
1.首先,開啟binlog功能,這個需要修改MySQL安裝目錄下的my.ini配置文件,在[mysqld]下面添加一行設置“log-bin = mysql-bin”就行,如下:
接著重啟MySQL服務,就可以在MySQL數據目錄下看到生成的日志記錄文件—mysql-bin.000001和mysql-bin.index,其中mysql-bin.000001是日志文件,會自動順序遞增,記錄每次數據庫重啟后用戶的所有操作記錄,mysql-bin.index是日志索引文件,記錄所有的日志文件名稱:
2.接著我們就可以模擬數據庫誤刪的過程了,這里我先新建了一個db數據庫,然后創建了一個test數據表,依次insert插入3條數,如下:
然后我們執行“drop database db”刪除數據庫,再“use db”時就會報錯,如下,告訴數據庫db不存在:
3.接著就是數據庫恢復的過程,打開cmd窗口,運行“mysqlbinlog --no-defaults binlog日志文件路徑(這里換成你的binlog文件)”命令,就可以看到我們重啟數據庫后所有的數據庫操作記錄,如下,每個操作都有唯一的對應位置,這里我們需要剔除掉drop語句,也就是恢復到958這個位置:
直接運行“mysqlbinlog --no-defaults --stop-position="958" binlog日志文件路徑 > D: est.sql”命令,就可以導出958位置之前的所有數據庫記錄,并重定向為一個sql文件,如下,這里你也可以使用start-position參數指定導出的起始位置:
4.最后我們再連接MySQL數據庫,導入這個sql腳本就可以正常恢復數據了,如下,和原始插入的數據一樣:
至此,我們就完成了MySQL數據庫的自動恢復。總的來說,整個過程非常簡單,只要你熟悉一下上面的操作過程,很快就能掌握的,對于一些簡單的數據恢復來說,完全夠用,不過建議還是在日常開發過程中做好數據庫備份,在生產環境中慎重使用drop等刪除語句,網上也有相關教程和資料,介紹的非常詳細,感興趣的話,可以搜一下,希望以上分享的內容能對你有所幫助吧,也歡迎大家評論、留言進行補充。
先分析一下,為啥丟失數據,因為操作刪,還是數據庫掛了,因為操作刪,可以做備份,做備份的原理就是,數據庫主從復制,有mycat插件,原理就是用日志。達到主從復制,其次,如果是數據庫掛了。首先mysql是持久化存儲,重啟就行,但是會丟失掛了未提交的事物。這得需要數據庫意外的數據來支持數據庫恢復數據。系統日志啊,所以個人覺得,日志很重要。
首先看看是什么丟失,是db 還是drop/truncate table ,如果這樣可以用備份來恢復,如果是delete table 有備份可以用備份恢復,沒有備份可以通過binlog 反項解析來進行恢復
0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答