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

資訊專欄INFORMATION COLUMN

Mysql二進制日志(binlog)恢復數(shù)據(jù)

yy13818512006 / 1756人閱讀

摘要:我們先來看下對數(shù)據(jù)庫的完全備份??偨Y如果允許數(shù)據(jù)丟失,可以直接使用直接恢復,否則可以通過二進制文件進行恢復?,F(xiàn)在看來其實也非常簡單了,找到開發(fā)服務器上的二進制日志文件就能恢復了,最后他又一個一個表開始建的,誰叫我當初又蠢又笨

開啟binlog

show binary logs 檢查bin log是否開啟,Mac OS系統(tǒng)安裝完Mysql沒有my.cnf配置文件,需要自己新建,我的Mysql配置文件放在/etc/my.cnf,將binlog開啟,默認如果不給值的話,log-bin 的會以mysqld-bin 為索引,創(chuàng)建mysqld-bin.00001等;重啟mysql。

定時備份與還原

一般我們會對mysql數(shù)據(jù)庫做定時備份,但是不能夠滿足我們的需求,因為可能會丟失數(shù)據(jù),如果我們在每天的早上4點進行定時數(shù)據(jù)備份,在當天晚上9點,數(shù)據(jù)庫掛了,此時數(shù)據(jù)庫只能備份到當天4點之前的所有數(shù)據(jù),4點-9點的數(shù)據(jù)沒辦法通過這種方式恢復,丟失了,這肯定是不能容忍的,通過二進制日志文件可以滿足我們的需求,只要不是服務器、硬盤問題,都能通過這種方式,進行數(shù)據(jù)恢復。我們先來看下對數(shù)據(jù)庫的完全備份。

mysqldump -uroot -ppassword test > /Users/ksmaster/GitHub/mysql_backup/test_DB0722-10:16.sql

本地生成test_DB0722-10:16.sql文件之后,假如數(shù)據(jù)庫數(shù)據(jù)被人為無意損壞或是數(shù)據(jù)表或庫被誤刪,我們都能夠通過生成的sql文件進行數(shù)據(jù)恢復,恢復當天4點之前的數(shù)據(jù)狀態(tài)。假如此處是把整個庫誤刪了,恢復如下:

mysql -uroot -ppassword test < /Users/ksmaster/GitHub/mysql_backup/test_DB0722-10:16.sql
利用二進制日志(binlog)還原

我預先創(chuàng)建了一個新的數(shù)據(jù)庫test,表user,之后查看二進制日志文件,因為我的是本地數(shù)據(jù)庫,二進制日志存放在/usr/local/mysql/data/目錄下,如mysql-bin.000001

我這里有兩個二進制文件,mysql-bin.000001和mysql-bin.000002,如果你沒有執(zhí)行過flush logs或者沒有重啟mysql,一般來說只有一個mysql-bin.000001,我們先查看下mysql-bin.000001

sudo mysqlbinlog --no-defaults mysql-bin.000001 

截圖如下:
可以看到有創(chuàng)建數(shù)據(jù)庫、建表、插入數(shù)據(jù)等sql語句,還有at 417等,我們插入一些臟數(shù)據(jù)或者是錯誤數(shù)據(jù),甚至是把數(shù)據(jù)庫刪除都可以,之后我們?nèi)绾卫枚M制文件進行數(shù)據(jù)恢復呢?

mysqlbinlog --no-defaults --stop-position="3263" mysql-bin.000001 > /Users/ksmaster/GitHub/mysql_backup/test_backup0722-11:30.sql

我們將mysql-bin.000001的sql語句導出到本地,這里我們只導出位于3263之前的語句,因為之后的數(shù)據(jù)是錯誤的我們不想要;然后進行恢復,我們先來看下到處到本地的sql語句是怎樣的:
這里貼代碼的話,無用的代碼太多,只截取部分看看是什么樣子的,其實就是執(zhí)行過的sql語句,如果我們把數(shù)據(jù)誤刪了,我們可以利用導出的sql語句進行數(shù)據(jù)恢復:

mysql -uroot -ppassword < /Users/ksmaster/GitHub/mysql_backup/test_backup0722-11:30.sql

通過這種方式我們可以比較靈活的恢復自己想要的數(shù)據(jù),并且沒有丟失數(shù)據(jù),只要二進制文件在硬盤沒有損壞,都能恢復我們想要的數(shù)據(jù)。

總結

如果允許數(shù)據(jù)丟失,可以直接使用mysqldump直接恢復,否則可以通過二進制文件進行恢復。在這里突然想到我去年還在實習的時候,當時項目剛開始,主力成員加上我和技術經(jīng)理就三個人,有次我打開了mysql workbench,有可能是我不小心碰到鍵盤了還是別人搞得,整個數(shù)據(jù)庫表全沒了...慶幸的是還好是開發(fā)環(huán)境,不是生產(chǎn)環(huán)境..到底是不是我搞的我到現(xiàn)在也不知道是不是我搞得,然后另一個同事就著急了,工作這么忙項目一個月之后上線,建表造數(shù)據(jù)這又得浪費一些時間,攤誰身上誰都不樂意,于是他去找另一個同事,看能不能恢復,最后也沒搞定?,F(xiàn)在看來其實也非常簡單了,找到開發(fā)服務器上的二進制日志文件就能恢復了,最后他又一個一個表開始建的,誰叫我當初又蠢又笨...

文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/75542.html

相關文章

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<