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

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