亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

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

yy13818512006 / 1808人閱讀

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

開(kāi)啟binlog

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

定時(shí)備份與還原

一般我們會(huì)對(duì)mysql數(shù)據(jù)庫(kù)做定時(shí)備份,但是不能夠滿足我們的需求,因?yàn)榭赡軙?huì)丟失數(shù)據(jù),如果我們?cè)诿刻斓脑缟?點(diǎn)進(jìn)行定時(shí)數(shù)據(jù)備份,在當(dāng)天晚上9點(diǎn),數(shù)據(jù)庫(kù)掛了,此時(shí)數(shù)據(jù)庫(kù)只能備份到當(dāng)天4點(diǎn)之前的所有數(shù)據(jù),4點(diǎn)-9點(diǎn)的數(shù)據(jù)沒(méi)辦法通過(guò)這種方式恢復(fù),丟失了,這肯定是不能容忍的,通過(guò)二進(jìn)制日志文件可以滿足我們的需求,只要不是服務(wù)器、硬盤(pán)問(wèn)題,都能通過(guò)這種方式,進(jìn)行數(shù)據(jù)恢復(fù)。我們先來(lái)看下對(duì)數(shù)據(jù)庫(kù)的完全備份。

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

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

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

我預(yù)先創(chuàng)建了一個(gè)新的數(shù)據(jù)庫(kù)test,表user,之后查看二進(jìn)制日志文件,因?yàn)槲业氖潜镜財(cái)?shù)據(jù)庫(kù),二進(jìn)制日志存放在/usr/local/mysql/data/目錄下,如mysql-bin.000001

我這里有兩個(gè)二進(jìn)制文件,mysql-bin.000001和mysql-bin.000002,如果你沒(méi)有執(zhí)行過(guò)flush logs或者沒(méi)有重啟mysql,一般來(lái)說(shuō)只有一個(gè)mysql-bin.000001,我們先查看下mysql-bin.000001

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

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

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

我們將mysql-bin.000001的sql語(yǔ)句導(dǎo)出到本地,這里我們只導(dǎo)出位于3263之前的語(yǔ)句,因?yàn)橹蟮臄?shù)據(jù)是錯(cuò)誤的我們不想要;然后進(jìn)行恢復(fù),我們先來(lái)看下到處到本地的sql語(yǔ)句是怎樣的:
這里貼代碼的話,無(wú)用的代碼太多,只截取部分看看是什么樣子的,其實(shí)就是執(zhí)行過(guò)的sql語(yǔ)句,如果我們把數(shù)據(jù)誤刪了,我們可以利用導(dǎo)出的sql語(yǔ)句進(jìn)行數(shù)據(jù)恢復(fù):

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

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

總結(jié)

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

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/75542.html

相關(guān)文章

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<