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