简要说一下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