{eval=Array;=+count(Array);}

成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

問答專欄Q & A COLUMN

MySQL數(shù)據(jù)庫丟失后如何自動恢復(fù)呢? ?

snowLusnowLu 回答0 收藏1
收藏問題

5條回答

RdouTyping

RdouTyping

回答于2022-06-28 15:48

這里介紹一種簡單的方法,就是開啟binlog二進制日志,記錄用戶對MySQL數(shù)據(jù)庫的所有操作(除了查詢),然后通過mysqlbinlog命令導(dǎo)出為SQL文件(剔除drop語句),最后再恢復(fù)就行,下面我簡單介紹一下操作過程,實驗環(huán)境Win10+MySQL5.5,感興趣的朋友可以嘗試一下:

1.首先,開啟binlog功能,這個需要修改MySQL安裝目錄下的my.ini配置文件,在[mysqld]下面添加一行設(shè)置“l(fā)og-bin = mysql-bin”就行,如下:

接著重啟MySQL服務(wù),就可以在MySQL數(shù)據(jù)目錄下看到生成的日志記錄文件—mysql-bin.000001和mysql-bin.index,其中mysql-bin.000001是日志文件,會自動順序遞增,記錄每次數(shù)據(jù)庫重啟后用戶的所有操作記錄,mysql-bin.index是日志索引文件,記錄所有的日志文件名稱:

2.接著我們就可以模擬數(shù)據(jù)庫誤刪的過程了,這里我先新建了一個db數(shù)據(jù)庫,然后創(chuàng)建了一個test數(shù)據(jù)表,依次insert插入3條數(shù),如下:

然后我們執(zhí)行“drop database db”刪除數(shù)據(jù)庫,再“use db”時就會報錯,如下,告訴數(shù)據(jù)庫db不存在:

3.接著就是數(shù)據(jù)庫恢復(fù)的過程,打開cmd窗口,運行“mysqlbinlog --no-defaults binlog日志文件路徑(這里換成你的binlog文件)”命令,就可以看到我們重啟數(shù)據(jù)庫后所有的數(shù)據(jù)庫操作記錄,如下,每個操作都有唯一的對應(yīng)位置,這里我們需要剔除掉drop語句,也就是恢復(fù)到958這個位置:

直接運行“mysqlbinlog --no-defaults --stop-position="958" binlog日志文件路徑 > D: est.sql”命令,就可以導(dǎo)出958位置之前的所有數(shù)據(jù)庫記錄,并重定向為一個sql文件,如下,這里你也可以使用start-position參數(shù)指定導(dǎo)出的起始位置:

4.最后我們再連接MySQL數(shù)據(jù)庫,導(dǎo)入這個sql腳本就可以正常恢復(fù)數(shù)據(jù)了,如下,和原始插入的數(shù)據(jù)一樣:

至此,我們就完成了MySQL數(shù)據(jù)庫的自動恢復(fù)??偟膩碚f,整個過程非常簡單,只要你熟悉一下上面的操作過程,很快就能掌握的,對于一些簡單的數(shù)據(jù)恢復(fù)來說,完全夠用,不過建議還是在日常開發(fā)過程中做好數(shù)據(jù)庫備份,在生產(chǎn)環(huán)境中慎重使用drop等刪除語句,網(wǎng)上也有相關(guān)教程和資料,介紹的非常詳細,感興趣的話,可以搜一下,希望以上分享的內(nèi)容能對你有所幫助吧,也歡迎大家評論、留言進行補充。

評論0 贊同0
  •  加載中...
Karrdy

Karrdy

回答于2022-06-28 15:48

做個數(shù)據(jù)備份表

評論0 贊同0
  •  加載中...
kviccn

kviccn

回答于2022-06-28 15:48

先分析一下,為啥丟失數(shù)據(jù),因為操作刪,還是數(shù)據(jù)庫掛了,因為操作刪,可以做備份,做備份的原理就是,數(shù)據(jù)庫主從復(fù)制,有mycat插件,原理就是用日志。達到主從復(fù)制,其次,如果是數(shù)據(jù)庫掛了。首先mysql是持久化存儲,重啟就行,但是會丟失掛了未提交的事物。這得需要數(shù)據(jù)庫意外的數(shù)據(jù)來支持數(shù)據(jù)庫恢復(fù)數(shù)據(jù)。系統(tǒng)日志啊,所以個人覺得,日志很重要。

評論0 贊同0
  •  加載中...
cgh1999520

cgh1999520

回答于2022-06-28 15:48

首先看看是什么丟失,是db 還是drop/truncate table ,如果這樣可以用備份來恢復(fù),如果是delete table 有備份可以用備份恢復(fù),沒有備份可以通過binlog 反項解析來進行恢復(fù)

評論0 贊同0
  •  加載中...
kid143

kid143

回答于2022-06-28 15:48

試試回滾操作。如果不行,那就恢復(fù)備份。如果沒備份,那就完蛋了

評論0 贊同0
  •  加載中...

最新活動

您已邀請0人回答 查看邀請

我的邀請列表

  • 擅長該話題
  • 回答過該話題
  • 我關(guān)注的人
向幫助了您的網(wǎng)友說句感謝的話吧!
付費偷看金額在0.1-10元之間
<