MySQL誤刪表數(shù)據(jù),如何快速恢復(fù)丟失的數(shù)據(jù)?

相信后端研發(fā)的同學(xué)在開發(fā)過(guò)程經(jīng)常會(huì)遇到產(chǎn)品臨時(shí)修改線上數(shù)據(jù)的需求,如果手法很穩(wěn)那么很慶幸可以很快完成任務(wù),很不幸某一天突然手一抖把表里的數(shù)據(jù)修改錯(cuò)誤或者誤刪了,這個(gè)時(shí)候你會(huì)發(fā)現(xiàn)各種問(wèn)題反饋接踵而來(lái)。
如果身邊有BDA或者有這方面經(jīng)驗(yàn)的同事那么可以很快解決這個(gè)問(wèn)題,如果沒(méi)有那么希望這篇文章可以幫到你。
第一步:保證mysql已經(jīng)開啟binlog,查看命令:
查看binklog是否開啟

查看binlog存放日志文件目錄(如下圖,binlog目錄為/data/mysql)


值為OFF,需開啟,值為ON,已開啟。
如果沒(méi)有開啟binlog,也沒(méi)有預(yù)先生成回滾SQL,那可能真的無(wú)法快速回滾了。對(duì)存放重要業(yè)務(wù)數(shù)據(jù)的MySQL,強(qiáng)烈建議開啟binlog。
第二步:進(jìn)入binlog文件目錄,找出日志文件

第三步:切換到mysqlbinlog目錄(當(dāng)線上數(shù)據(jù)出現(xiàn)錯(cuò)誤的時(shí)候首先可以詢問(wèn)具體操作人記錄時(shí)間點(diǎn),這個(gè)時(shí)候可以借助mysql自帶的binlog解析工具mysqlbinlog,具體位置在mysql安裝目錄**/mysql/bin/下)

第四步:通過(guò)mysqlbinlog工具命令查看數(shù)據(jù)庫(kù)增刪改查記錄(必須切換到mysqlbinlog目錄才有效)
例子1:查詢2018-11-12 09:00:00到2018-11-13 20:00:00 數(shù)據(jù)庫(kù)為 youxi 的操作日志,輸入如下命令將數(shù)據(jù)寫入到一個(gè)備用的txt文件中

例子2:查詢2018-11-12 09:00:00到2018-11-13 20:00:00?數(shù)據(jù)庫(kù)為 youxi 的操作日志,并輸出到屏幕上

例子3:查詢2018-11-12 09:00:00到2018-11-13 20:00:00?數(shù)據(jù)庫(kù)為 youxi 的操作日志,并且過(guò)濾出 只包括 template_coupon_tb_product_category 表數(shù)據(jù)的操作記錄?,輸入如下命令將數(shù)據(jù)寫入到一個(gè)備用的txt文件中


第五步:利用第四步輸出的sql語(yǔ)句或者txt文本進(jìn)行語(yǔ)句過(guò)濾,重新插入數(shù)據(jù)或更新數(shù)據(jù)。