1、首先構建測試環(huán)境數(shù)據(jù)create table t1(a varchar(10),b varchar(10));insert into t1 values('1','1');insert into t1 values('2','2');commit;。
創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設,海陵企業(yè)網(wǎng)站建設,海陵品牌網(wǎng)站建設,網(wǎng)站定制,海陵網(wǎng)站建設報價,網(wǎng)絡營銷,網(wǎng)絡優(yōu)化,海陵網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
2、模擬誤修改,將t1表中的b字段更新為錯誤數(shù)據(jù) "123456"update t1 set b='123456' where a='1';commit;select * from t1;。
3、將恢復工具上傳到服務器并進行解壓。unzip binlog2sql-master.zip。
4、得到誤修改時的binlog文件(show binary logs;),實驗環(huán)境是mysql-bin.000011。
5、通過?binlog2sql.py 腳本的到所有 對表 t1 的修改操作。python binlog2sql.py -hlocalhost -P23307 -ubinlog2sql -p'binlog2sql' -dtest -tt1 --start-file='mysql-bin.000011'。
6、得到了誤刪除的sql的準確位置在1382-1615之間,使用 _**-B**_ 選項生成回滾sql。python binlog2sql.py -hlocalhost -P23307 -ubinlog2sql -p'binlog2sql' -dtest -tt1 --start-file='mysql-bin.000011' --start-position=1382 --stop-position=1615 -B。
7、執(zhí)行得到的回滾語句進行誤操作恢復。就完成了。
navicat for mysql 誤刪數(shù)據(jù)庫怎么恢復
重新創(chuàng)建一個數(shù)據(jù)庫
找到最近一次完整備份,導入完整備份
打開最近一次完整備份到你要恢復點的binlog,前提是打開log-bin
根據(jù)時間點,執(zhí)行binlog日志,恢復到你所要的恢復點
binlog操作方法
誤刪數(shù)據(jù)的幾種操作
如何事前預防誤刪數(shù)據(jù)?
誤刪行數(shù)據(jù)恢復
誤刪行數(shù)據(jù)恢復可以使用 Flashback工具 。
Flashback恢復數(shù)據(jù)的原理是通過修改binlog內容,拿回原庫進行回放,前提是 binlog_format=row和binlog_row_image=FULL 。
在使用Flashback進行恢復的時候, 不建議在主庫上進行操作 ,比較安全的做法是恢復出一個備份,或者找一個從庫作為臨時庫,在這個臨時庫上執(zhí)行操作,然后再將確認過的臨時庫的數(shù)據(jù)恢復到主庫。
誤刪庫/表
drop table或者truncate table誤刪數(shù)據(jù)表 無法通過Flashback工具恢復 ,因為binlog_format的格式即使是ROW模式,在binlog中記錄的也只是一條drop table或者truncate語句,因此無法進行恢復。
此時恢復的方式需要 全量備份加增量日志的方式進行恢復 ,因此要求數(shù)據(jù)有定期的全量備份,并且實時備份binlog。
假如某人在中午12點誤刪除了一個庫里的某張表,恢復數(shù)據(jù)的流程如下:
mysqlbinlog恢復數(shù)據(jù)慢的原因?
如何更快的恢復誤刪的表?
在用備份恢復出臨時實例以后,將這個臨時實例設置成線上備庫的從庫:
假設此時備庫的binlog已經被刪除,那么需要去binlog備份系統(tǒng)找到刪掉的日志文件拷貝到日志目錄下,假設文件名是master.000001,打開日志目錄下的binlog的index文件,在開頭加入master.000001,讓備庫重新識別此日志文件
延遲復制備庫
以上恢復都具有時間不可控性,如果采用上述步驟進行恢復,建議開發(fā)成工具(甚至可以做自己的DBA自動化平臺),并大量測試后進行使用,避免手動誤操作帶來更大的問題。
一般的主備復制存在的問題是,假設主庫上的表被刪除,這個命令很快會被發(fā)給所有從庫,進而導致從庫的數(shù)據(jù)表也被一起誤刪除。
延遲復制備庫 是可以持續(xù)保持與主庫有N秒延遲的備庫 。
假設這里N=3600,那么表示只要在1個小時以內發(fā)現(xiàn)了誤刪除,就可以的到備庫上執(zhí)行stop slave,再通過之前講到的方法,跳過誤操作的命令(比如將誤刪除的GTID加到實例集合中),就可以恢復出需要的數(shù)據(jù)。
rm誤刪
只要你的集群是高可用,如果rm刪除了某個節(jié)點(只要不是惡意刪除所有節(jié)點),HA系統(tǒng)會自動開始工作,選出一個新的主庫,從而保證集群工作。