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

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