簡要說一下MySQL的備份類型:
熱備份:讀、寫不受影響
溫備份:僅可以執行讀操作
冷備份:離線備份,讀、寫操作都中止
物理備份:直接複製數據文件
邏輯備份:將數據導出至文本文件中
完全備份:備份全部數據
增量備份:僅備份上次完全備份或增量備份以後變化的數據
差異備份:僅備份上次完全備份以來變化的數據
MySQL的備份工具:
mysqldump:邏輯備份工具,適用於小規模數據庫,MyISAM(溫備),InnoDB(熱備)
mysqlhotcopy:物理備份工具,溫備份
cp:直接複製,冷備
lvm:邏輯卷的快照功能,可實現幾乎熱備
xtrabackup:percona官方提供的mysql數據庫備份工具(開源)
ibbackup:商業工具
MySQL備份策略:
MyISAM:最好使用溫備份
InnoDB:可以直接使用熱備份
xtrabackup:物理備份工具
mysqldump:邏輯備份工具
mysqldump一些常用選項:
--master-data={0|1|2}
0:不記錄二進制日誌文件及其事件位置
1:以CHANGE MASTER TO的方式記錄位置,可用於恢復後直接啓動從服務器
2:以CHANGE MASTER TO的方式記錄位置,但默認爲被註釋
--lock-all-tables, -x:鎖定所有表
--flush-logs, -F:執行日誌滾動
--events, -E:備份事件調度器
--routines, -R:備份存儲過程和存儲函數
--triggers:備份觸發器
--all-databases, -A:備份所有庫
--databases, -B DB_NAME DB_NAME ...:備份指定庫
注意:如果指定庫中的表類型均爲InnoDB,可使用--single-transaction啓動熱備,同時也建議使用熱備,不建議使用溫備,不能與--lock-all-tables一起使用。
MyISAM溫備份示例:
1、備份單個指定數據庫
# mysqldump -uroot -p --master-data=2 --lock-all-tables --flush-logs db_name > db.sql
2、備份所有數據庫
# mysqldump -uroot -p --master-data=2 --lock-all-tables --flush-logs --all-databases > db.sql
3、備份多個指定數據庫
# mysqldump -uroot -p --master-data=2 --lock-all-tables --flush-logs --databases db_name db_name > db.sql
InnoDB熱備份示例:
1、備份單個指定數據庫
# mysqldump -uroot -p --master-data=2 --single-transaction --flush-logs db_name > db.sql
2、備份所有數據庫
# mysqldump -uroot -p --master-data=2 --single-transaction --flush-logs --all-databases > db.sql
3、備份多個指定數據庫
# mysqldump -uroot -p --master-data=2 --single-transaction --flush-logs --databases db_name db_name > db.sql