Mysql數(shù)據(jù)恢復(fù)
上一篇講了Mysql當(dāng)前支持的備份方式,那么,有了備份文件,怎么將數(shù)據(jù)庫(kù)進(jìn)行恢復(fù)?
1.對(duì)當(dāng)前的整個(gè)mysql實(shí)例進(jìn)行備份,不備份的話(huà),一切后果請(qǐng)自行負(fù)責(zé)哦
2.進(jìn)入mysql,刪除mysql,test2,world三個(gè)數(shù)據(jù)庫(kù)
刪庫(kù)跑路嘍,[壞笑]
3.不用怕,此時(shí)使用備份的all-database.sql進(jìn)行恢復(fù)
發(fā)現(xiàn)刪掉的數(shù)據(jù)庫(kù)又回來(lái)了
擴(kuò)展:

1.你也可以對(duì)某個(gè)數(shù)據(jù)庫(kù)或者表進(jìn)行類(lèi)似操作,但是,在對(duì)庫(kù)進(jìn)行恢復(fù)操作時(shí),需要先手動(dòng)創(chuàng)建庫(kù),否則系統(tǒng)會(huì)報(bào)錯(cuò)。此處不再進(jìn)行演示,請(qǐng)參考以下命令:
mysql -uroot -p 數(shù)據(jù)庫(kù)名< C:/Users/backup/數(shù)據(jù)庫(kù)名.sql
2.此外,你還可以使用Mysql自帶命令進(jìn)行數(shù)據(jù)恢復(fù):
語(yǔ)法結(jié)構(gòu)(需要進(jìn)入mysql):
source path/file_name.sql
3.mysqldump本身也支持導(dǎo)出文本文件的備份,使用mysqlimport進(jìn)行導(dǎo)入文本備份文件,此處不再進(jìn)行演示
請(qǐng)按照?qǐng)D示步驟理解
目前熱點(diǎn)數(shù)據(jù)恢復(fù)支持的文件格式為.text,.csv,.xlsx,.xls。其他的暫不支持,切記你要導(dǎo)入的表一定預(yù)先存在數(shù)據(jù)庫(kù)中的,其效率很高,要比insert語(yǔ)句快20倍以上
1,開(kāi)啟binlog,修改配置文件參數(shù)
log-bin=C:/Users/backup/mysql-bin #日志文件存放路徑
max_binlog_size=100M 單個(gè)文件大小
binlog-format=row 日志生成格式
2.小編本機(jī)有個(gè)test庫(kù)及一張user表,已知有4條數(shù)據(jù)
3.使用mysqldump對(duì)test進(jìn)行全量備份
mysqldump -uroot -p test > c:/Users/backup/user.sql
生成的對(duì)應(yīng)的sql文件:
4.此時(shí)插入兩條新數(shù)據(jù)
生成新的binlog
truncate user表,用以模仿突發(fā)問(wèn)題(數(shù)據(jù)庫(kù)崩潰,或者誤刪等),user中數(shù)據(jù)沒(méi)了
5.由于預(yù)先對(duì)test進(jìn)行了全量備份,所以此時(shí)需要恢復(fù)user表中的數(shù)據(jù)
mysql -uroot -p test < c:/Users/backup/user.sql
再次查詢(xún),發(fā)現(xiàn)user表中恢復(fù)了部分?jǐn)?shù)據(jù),但剛剛插入的2條卻找不到
6.使用binlog恢復(fù)5.6條數(shù)據(jù)
由于我之前flush一次log(非演示中),所以,我的最新一次的log應(yīng)為:mysql-bin.000002
此時(shí),我們只要使用這個(gè)文件進(jìn)行恢復(fù)數(shù)據(jù)就OK了
此時(shí)查看user表中數(shù)據(jù)
數(shù)據(jù)恢復(fù)成功
7.同時(shí)mysqlbinlog支持對(duì)postion的恢復(fù)
例如,我再恢復(fù)一次第六條的數(shù)據(jù),首先我得知道第6條數(shù)據(jù)在mysql-bin.000002的起始位置和結(jié)束位置.
1>你可以使用如下命令查看mysql-bin.000002的內(nèi)容
查看binlog內(nèi)容
最后一條插入的起始1736和結(jié)束位置1830
2>你也可以將binlog導(dǎo)出為.txt文件進(jìn)行查看
查看.txt文件
起始位置1736,結(jié)束位置1830
3>利用binlog postion恢復(fù)第6條數(shù)據(jù)
利用position恢復(fù)數(shù)據(jù)
4>查看user表數(shù)據(jù)
由于之前就已經(jīng)恢復(fù)了5.6條,再次執(zhí)行,即插入一條新數(shù)據(jù)
擴(kuò)展:
1.show master status; 可以產(chǎn)看當(dāng)前binlog文件和字節(jié)碼索引的位置
2.show binary logs; 查看所有binlog文件
3.show binlog events 查看mysql-bin.000001所有事件,也可以找到時(shí)間postion的起始和結(jié)束位置索引
4.show binlog events in 'mysql-bin.000002'; 查看mysql-bin.000002所有事件,也可以找到時(shí)間postion的起始和結(jié)束位置索引
下一篇:MySQL數(shù)據(jù)恢復(fù)的九把瑞士軍刀