《Mysql數據庫備份》要點:
本文介紹了Mysql數據庫備份,希望對您有用。如果有疑問,可以聯系我們。
在生產環境中,我們數據庫可能會遭遇各種各樣的不測從而導致數據丟失,大概分為以下幾種:
硬件故障
軟件故障
自然災害
黑客攻擊
誤操作(占比最大)
在數據丟失之后能夠恢復數據,我們需要定期備份數據,數據備份的策略要根據不同的應用場景進行定制,大概有以下幾個參考值:
能夠容忍丟失多少數據
恢復數據需要多長時間
需要恢復哪些數據
根據這些數值我們可以定制符合特定環境中的數據備份策略.
數據的備份類型根據其自身的特性主要分為以下幾組:
完全備份:備份整個數據集
部分備份:備份部分數據集.
增量備份:備份自上一次備份以來(增量或完全)變化的數據,節約空間、還原麻煩
差異備份:備份自上一次備份以來變化的數據,浪費空間、還原簡單
如下圖所示:
在mysql中備份主要有以下幾種方式:
熱備份:數據庫的讀寫操作不受影響
溫備份:讀操作可以執行,但是不能執行寫操作
冷備份:數據庫不能進行讀寫操作
此外,Mysql中進行不同方式的備份還取決于存儲引擎是否支持
MyISAM:支持溫備份和冷備份,不支持熱備份
InnoDB:三種備份均支持
根據數據庫中數據的備份方式,可分為:
物理備份:通過tar,cp等命令直接打包復制數據庫的數據文件
邏輯備份:通過特定工具從數據庫中導出數據
一般情況下,需要備份的數據分為以下幾種:
數據
二進制日志,InnoDB事務日志
代碼(存儲過程、存儲函數、觸發器、事件調度器)
服務器配置文件
主要的備份工具有以下幾種:
muysqldump:邏輯備份工具,適用于所有的存儲引擎,支持溫備份、完全備份,對于InnoDB存儲引擎支持熱備份;
cp、tar歸檔復制工具:物理備份工具,適用于所有的存儲引擎,冷備、完全備份和部分備份
lvm2快照:熱備,借助文件系統管理工具進行備份
mysqlhotcopy:僅支持MylSAM引擎
xtrabackup: 一款非常強大的InnoDB/XtraDB熱備工具, 支持完全備份、增量備份, 由percona提供
針對不同的場景下,應該制定不同的備份策略對數據庫進行備份:
直接cp,tar復制數據庫文件
mysqldump+復制BIN LOGS
lvm2快照+復制BIN LOGS
xtrabackup
以上幾種解決方案針對不同的場景:
如果數據量較小,可以使用第一種方式,直接復制數據庫
如果數據量還行,可以使用第二種方式, 先使用mysqldump對數據庫進行完全備份, 然后定期備份BINARY LOG達到增量備份的效果
如果數據量一般, 而又不過分影響業務運行, 可以使用第三種方式, 使用lvm2的快照對數據文件進行備份, 而后定期備份BINARY LOG達到增量備份的效果
如果數據量很大, 而又不過分影響業務運行, 可以使用第四種方式, 使用xtrabackup進行完全備份后, 定期使用xtrabackup進行增量備份或差異備份
備份數據庫
mkdir /backup #創建文件夾存放備份數據庫文件
cp -a /var/lib/mysql/* /backup #保留權限的拷貝源數據文件
ls /backup #查看目錄下的文件
恢復數據庫
cp -a /backup/* /var/lib/mysql/ #將備份的數據文件拷貝回去
service mysqld restart #重啟MySQL
mysqldump是一個客戶端的邏輯備份工具, 可以生成一個重現創建原始數據庫和表的SQL語句, 可以支持所有的存儲引擎, 對于InnoDB支持熱備.
基本語法結構
shell> mysqldump [options] db_name [tbl_name ...] 恢復需要手動CRATE DATABASES
shell> mysqldump [options] --databases db_name ... 恢復不需要手動創建數據庫
shell> mysqldump [options] --all-databases 恢復不需要手動創建數據庫
備份數據庫
mysqldump --all-databases --lock-all-tables > backup.sql #備份數據庫到backup.sql文件中
cp /var/lib/mysql/mysql-bin.000003 /root #備份二進制文件
恢復數據庫
SET sql_log_bin=OFF; #暫時先將二進制日志關閉
source backup.sql #恢復數據,所需時間根據數據庫時間大小而定
SET sql_log_bin=ON; #開啟二進制日志
mysqlbinlog --start-position=106 --stop-position=191 mysql-bin.000003 | mysql employees #通過二進制日志增量恢復數據
小編還在摸索中……
請期待后續文章……
在/usr/backup創建mysqlbk.sh:
cd home/test
touch mysqlbk.sh
chmod 777 mysqlbk.sh
使用VI工具編寫腳本
建立cron定時計劃
crontab -e
59 23 * * * /bin/bash /home/backup/mysqlbk.sh
維易PHP培訓學院每天發布《Mysql數據庫備份》等實戰技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養人才。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/7107.html