相信后端研發(fā)的同學(xué)在開(kāi)發(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)開(kāi)啟binlog,查看命令:
查看binklog是否開(kāi)啟
show?variables?like?'%log_bin%';
查看binlog存放日志文件目錄(如下圖,博主binlog目錄為/data/mysql):
show?variables?like?'%datadir%';
值為OFF,需開(kāi)啟,值為ON,已開(kāi)啟。
如果沒(méi)有開(kāi)啟binlog,也沒(méi)有預(yù)先生成回滾SQL,那可能真的無(wú)法快速回滾了。對(duì)存放重要業(yè)務(wù)數(shù)據(jù)的MySQL,強(qiáng)烈建議開(kāi)啟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文件中
?mysqlbinlog?--no-defaults?--database=youxi?--start-datetime="2018-11-12?09:00:00"?--stop-datetime="2018-11-13?20:00:00"?/data/mysql/mysql-bin.000015????>?template_coupon_tb_product_category.txt
例子2:查詢2018-11-12 09:00:00到2018-11-13 20:00:00?數(shù)據(jù)庫(kù)為 youxi 的操作日志,并輸出到屏幕上
mysqlbinlog?--no-defaults?--database=youxi?--start-datetime="2018-11-12?09:00:00"?--stop-datetime="2018-11-13?20:00:00"?/data/mysql/mysql-bin.000015???|more
例子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文件中
mysqlbinlog?--no-defaults?--database=youxi?--start-datetime="2018-11-12?09:00:00"?--stop-datetime="2018-11-13?20:00:00"?/data/mysql/mysql-bin.000015???|?grep?template_coupon_tb_product_category???>?template_coupon_tb_product_category.txt
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-483322.html
mysqlbinlog 命令的語(yǔ)法格式:
mysqlbinlog?mysql-bin.0000xx?|?mysql?-u用戶名?-p密碼?數(shù)據(jù)庫(kù)名
--------------------------------------------------------
常用參數(shù)選項(xiàng)解釋:
--start-position=875?起始pos點(diǎn)
--stop-position=954?結(jié)束pos點(diǎn)
--start-datetime="2016-9-25?22:01:08"?起始時(shí)間點(diǎn)
--stop-datetime="2019-9-25?22:09:46"?結(jié)束時(shí)間點(diǎn)
--database=zyyshop?指定只恢復(fù)zyyshop數(shù)據(jù)庫(kù)(一臺(tái)主機(jī)上往往有多個(gè)數(shù)據(jù)庫(kù),只限本地log日志)
--------------------------------------------------------?
不常用選項(xiàng):?
-u?--user=name?連接到遠(yuǎn)程主機(jī)的用戶名
-p?--password[=name]?連接到遠(yuǎn)程主機(jī)的密碼
-h?--host=name?從遠(yuǎn)程主機(jī)上獲取binlog日志
--read-from-remote-server?從某個(gè)MySQL服務(wù)器上讀取binlog日志
第五步:利用第四步輸出的sql語(yǔ)句或者txt文本進(jìn)行語(yǔ)句過(guò)濾,重新插入數(shù)據(jù)或更新數(shù)據(jù)。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-483322.html
到了這里,關(guān)于面試官:MySQL誤刪表數(shù)據(jù),如何快速恢復(fù)丟失的數(shù)據(jù)?的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!