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版本相一致;否则可能会出很多字符集或者其他的怪问题;
本文转自 位鹏飞 51CTO博客,原文链接:http://blog.51cto.com/weipengfei/1346400,如需转载请自行联系原作者