MySQLDUMP大家并不陌生,这里简单说其备份流程,及注意事项等等;

   常用参数:

   -single-transaction :

   只针对事务存储引擎(Innodb)生成一致性快照,其他引擎不能保证导     出是一致的;备份期间禁止使用ALTER,DROP,RENAME,TRUNCATE这样的语句,否则会导致一致性快     照失效;该选项自动关闭lock-tables;

   --master-data:

   该选项将binlog的file&pos添加的输出中,自动启用--lock-all-tables;若同时设置--single-transaction,则不会启用--lock-all-tables选项(全局读锁只会在开始dump时加一小段时间);自动关闭--lock-tables

   --lock-all-tables:

   全局读锁,自动关闭--single-transaction & --lock-tables

   --flush-logs:

   在开始导出前flush logs(一次导出N多数据库时每个库都会flush logs ;配合--lock-all-tables 或者master-data使用只会刷新一次);

   --delete-master-logs:

   备份完成后,删除db上的日志,自动启用 --master-data

   --apply-slave-statements:

   在’CHANGE MASTER’前加上’STOP SLAVE’,在导出文件的末尾加上’START SLAVE’.

   --flush-privileges:

   导出的数据库中含有mysql DB时使用;

   -w --where :

   导出部分数据内容;

   -T /datadir/

   在DB上生成Create .sql and .txt files(这两个文件在同一台机器上才起作用,并且生成的文件可以覆盖掉上次备份内容;在其他机器远程连接使用该选项时,只会生成.txt file,并且执行用户必须有file,select权限,且生成的文件不能覆盖到上次备份的内容)

   --tz-utc :对于跨时区导入导出数据很重要,默认该参数启用,并SET TIME_ZONE=’+00:00’,所以从其他时区导入到本地区时,会默认+8:00小时,;如果要保留数据源的时间,还是使用--skip-tz-utc来过滤掉这个功能;

   --default-character-set=UTF8:

   关于字符集的问题,这个不多说,要确保 server版本和

   --innodb-optimize-keys(只存在于percona版本中):

   使用innodb fast index 功能来重建二级索引;

   --include-master-host-port(只存在于percona中) :

   Adds 'MASTER_HOST=<host>, MASTER_PORT=<port>' to 'CHANGE  MASTER TO..

   在5.1版本当中:用–master-data和–single-transaction来导出数据,因为--lock-tables被自动关闭,所以导出过程中只会对当前正在做导出操作的表有IS锁,已经完成或没有开始的表,则不会加锁。如果用默认--lock-tables打开的选项,则会先把所有库的锁加上,再进行导出操作,最后一次性释放所有锁。

   在5.5当中:最大的区别还是由于Meta data lock 的存在,使用--single-transaction时,事务内操作过的表都会持有MDL,所以不会被DDL破坏,还没备份到的表不会持有MDL,所以可以进行DDL操作;

   mysqldump暂时不支持 同时导出多个库中的多个数据表

   mysqludmp client版本相一致;否则可能会出很多字符集或者其他的怪问题;