mysqldump:mysql自带的备份工具,是一种逻辑备份工具,它会将数据从数据库读出,转化为相应sql语句。
能够实现完全备份或部分备份,使用innodb数据库引擎的表可实现热备,使用mysisam数据库引擎的表只能实现温备。
适用于数据量较小的数据库备份,无法备份索引等信息,当数据为浮点类型时,会出现精度丢失,备份过程是串行的。

mysqldump
--user= 指定以那个账号与MySQL服务器进行交互
--password 交互式输入密码
--password=xxx 非交互式输入密码(适用于脚本中使用)
-A,--all-databases:备份所有数据库的所有表
-Y,--all-tablespaces:备份全部表空间
-y,--no-tablespaces:不备份表空间
-B,--databases:指定要备份的数据库,可同时指定多个数据库,数据库之间用空格隔开
--tables 如果想备份同一个数据库中的多个表,只需在--tables后,以空格分隔的方式列出这些表既可
-C,--compress:压缩传输
-x,--lock-all-tables:锁定所有表
-l,--lock-tables:锁定备份的表
-F,--flush-logs:锁定表之后执行flush logs命令
-d:只备份表结构,不包含表数据
--master-data:标记备份开始时binlog所对应的position(位置)
--master-data=0 #不记录对应二进制文件位置
--master-data=1 #记录对应二进制日志文件位置
--master-data=2 #

-R,--routines:表示备份时,存储过程和存储函数也会被备份
--triggers:表示备份时,触发器会被备份
-E,--events;表示备份时,事件表会被备份

--skip-add-drop-table
    不带DROP TABLE语句,既不在恢复时删除原表
--skip-add-locks 
    不带锁表语句
--skip-comments
    不带注释
--skip-disable-keys
    不带使表中的索引暂时失效的语句
--skip-set-charset
    不带SET NAMES,既不在恢复时设置字符集

Mysql的数据恢复严重依赖bin-log日志,所以为了防止磁盘故障导致数据文件和bin-log文件一起丢失,最好把bin-log日志存放到共享存储中。