Mysqldump是一个客户端程序,用于导出数据,适合用于开发、DBA测试等工作。在它的man帮助里,提及到,mysqldump进行的是逻辑备份,生成的内容是一堆SQL语句。也可以输出为csv、文本文件(其他分割符号)、XML格式。
Mysqldump要求起码具备select、show view、trigger、lock tables权限(前提是未使用—single-transaction选项)。
当要重新导入dump文件时,需要具备dump文件中所有sql语句的对应权限(例如create database、create table之类的)
如果所使用的数据库引擎是MyISAM,可以使用mysqlhotcopy。
对于大量数据的备份,Mysqldump并不是一个快速和可扩展的备份方案。因为尽管它导出需要些时间,但导入更慢,因为涉及到磁盘IO、重建索引等等。应考虑使用物理备份:如果是混合引擎的数据库,应使用mysqlbackup,可以提供最佳性能与最小停机,企业应考虑使用它来进行备份;如果只有MyISAM引擎,则应使用mysqlhotcopy。
Mysqldump会使用内存做导出结果的缓存,但对于大量的数据来说,会比较消耗内存,可以搭配—quick选项来避免使用缓存;如果一定要使用缓存,可以使用—skip-opt选项。
Mysqldump的写法:
Mysqldump [选项] db_name [tbl_name….] 这种写法导出表数据。
Mysqldump [选项] –databasesdb_name …. 这种写法导出整个数据库。
Mysqldump [选项] –all-databases 这种写法导出所有数据库。
Mysqldump默认不导出INFORMATION_SCHEMA或performance_schema 数据库,如果需要,则需要显式指出,并使用--skip-lock-tables选项。
在MySQL 5.5.25以前,mysqldump不导出general_log 或 slow_query_log;从MySQL 5.5.25开始,mysqldump导出时包含了创建这些表的语句,使得恢复数据时,能创建出这些表,但表的内容不会恢复。
Mysqldump也不会导出MySQL集群的ndbinfoinformation数据库
Mysqldump有一些选项的缩写
· --opt 代表了--add-drop-table, --add-locks, --create-options, --disable-keys,--extended-insert, --lock-tables, --quick, --set-charset 。而且—opt默认是开启的。
· --compact代表了--skip-add-drop-table, --skip-add-locks, --skip-comments,--skip-disable-keys, --skip-set-charset
如果想关闭一个选项组内的部分功能,可以这样指定,命令组–skip-xxx ,举例
--opt –skip-quick代表使用opt选项组,但关闭quick功能。
--skip-opt –quick代表关闭整个opt选项组,但开启quick功能
更多选项参考man mysqldump