MySQL是一種開放源代碼的關係型數據庫管理系統(RDBMS),使用最常用的數據庫管理語言--結構化查詢語言(SQL)進行數據庫管理。
我們試着想一想, 在生產環境中什麼最重要?如果我們服務器的硬件壞了可以維修或者換新, 軟件問題可以修復或重新安裝, 但是如果數據沒了呢?這可能是最恐怖的事情了吧, 我感覺在生產環境中應該沒有什麼比數據跟更爲重要. 那麼我們該如何保證數據不丟失、或者丟失後可以快速恢復呢?只要看完這篇, 大家應該就能對MySQL中實現數據備份和恢復能有一定的瞭解。
創建新數據庫並且進行完全備份
ls /usr/local/mysql/data/school/ //會生成三個數據文件分別爲
db.opt //屬性文件
info.frm //表的結構文件
info.ibd //表的數據文件
tar Jcvf /opt/mysql-$(date +%F).tar.xz /usr/local/mysql/data/ //全部進行備份
mysql-2018-07-04.tar.xz //就會在備份的路徑中生成一個xz格式的壓縮包
當恢復的時候 則刪除原有data 所有文件
tar Jxvf /opt/mysql-2018-07-04.tar.xz -C
當備份回去注意文件的屬主和屬組
備份
mysqldump -u root -p school > /opt/school.sql /備數據庫
mysqldump -u root -p --databases school mysql > /opt/school-mysql.sql //同時備份多個數據庫
mysqldump -u root -p --opt --all-databases > /opt/all-mysql.sql //備份所有數據庫
mysqldump -u root -p school info > /opt/school-info.sql //備份school 裏面的info表
mysqldump -u root -p -d school info > /opt/desc-info.sql //備份表的結構 不會數據插入
Linux字符界面中恢復MySQL中的數據庫表列
注:在Linux字符界面中恢復的前提是得有一個要恢復的數據庫同名的數據才恢復數據庫
mysql -u root -p school < /opt/school-info.sql
//在恢復表的時候一應是要先有數據庫纔可以恢復
在MySQL模式恢復 "source"命令
mysql> drop table info; ///刪除表
mysql> source /opt/school-info.sql //導入回來就OK了
mysql> show tables; //查看錶
增量備份 要開啓二進制日誌文件
log-bin=mysql-bin //在MySQL主配置中服務端裏面添加開啓二進制日誌文件
mysqladmin -u root -p flush-logs2 //刷新並且生成二進制日誌
insert into info (name,score) values ('lisi',88); //添加了李四
mysqlbinlog --no-defaults mysql-bin.000002 | mysql -u root -p //使用二進制日誌進行恢復
查看二進制文件
mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.000002
--base64-output=decode-rows -v //使用64位編碼進行解碼 按行進行讀取 -v 顯示出來