mysqldump
是mysql自带的数据库备份工具
,属于单线程
,大部分生产环境的mysql数据库备份都是使用该工具,mysqldump能够将数据导出为原生sql语句,在将其数据导入至数据库时,至关因而执行一遍备份文件中的全部sql语句,mysql
mysqldump
提供了丰富的options选项
,能够在导出或者导入数据
的时候,添加须要的options
,以便达到用户预期的效果sql
mysql经常使用参数数据库
// 导出所有数据库。 // --all-databases , -A mysqldump -uroot -p --all-databases // 导出所有表空间。 // --all-tablespaces , -Y mysqldump -uroot -p --all-databases --all-tablespaces // 不导出任何表空间。 // --no-tablespaces , -y mysqldump -uroot -p --all-databases --no-tablespaces // 导出几个数据库。参数后面全部名字参量都被看做数据库名。 // --databases, -B mysqldump -uroot -p --databases [数据库名1] [数据库名2] // 每一个数据库建立以前先添加drop数据库语句(若有原库则先drop后再从新create)。 // --add-drop-database mysqldump -uroot -p --all-databases --add-drop-databas // 每一个数据表建立以前先添加drop数据表语句。(默认为打开状态,使用--skip-add-drop-table取消选项)。 // --add-drop-table mysqldump -uroot -p --all-databases (默认添加drop语句) mysqldump -uroot -p --all-databases –skip-add-drop-table (取消drop语句) // 设置默认字符集,默认值为utf8。 // --default-character-set mysqldump -uroot -p --all-databases --default-character-set=latin1 // 使用十六进制格式导出二进制字符串字段。若是有二进制数据就必须使用该选项。影响到的字段类型有BINARY、VARBINARY、BLOB。 // --hex-blob mysqldump -uroot -p --all-databases --hex-blob // 使用具备多个VALUES列的INSERT语法。这样使导出文件更小,并加速导入时的速度。默认为打开状态,使用--skip-extended-insert取消选项。 // --extended-insert, -e mysqldump -uroot -p --all-databases mysqldump -uroot -p --all-databases --skip-extended-insert (取消选项) // 使用完整的insert语句(包含列名称)。这么作能提升插入效率,可是可能会受到max_allowed_packet参数的影响而致使插入失败。 // --complete-insert, -c mysqldump -uroot -p --all-databases --complete-insert // 不缓冲查询,直接导出到标准输出。默认为打开状态,使用--skip-quick取消该选项。 // --quick, -q mysqldump -uroot -p --all-databases mysqldump -uroot -p --all-databases --skip-quick // 该选项在导出数据以前提交一个BEGIN SQL语句,BEGIN 不会阻塞任何应用程序且能保证导出时数据库的一致性状态。 // 它只适用于多版本存储引擎,仅InnoDB。本选项和--lock-tables 选项是互斥的,由于LOCK TABLES 会使任何挂起的事务隐含提交。 // 要想导出大表的话,应结合使用--quick 选项。 // --single-transaction mysqldump -uroot -p --all-databases --single-transaction // 不导出指定的表。指定忽略多个表时,须要重复屡次,每次一个表。每一个表必须同时指定数据库和表名。 // --ignore-table 例如:--ignore-table=database.table1 --ignore-table=database.table2 …… mysqldump -uroot -p --all-databases --ignore-table=mysql.user
二、生产中经常使用的参数
注意:下面每一个场景都会列出多个命令,读者根据生产的状况来参考ide
1.导出单库工具
mysqldump -uroot -p [数据库名] >/backup/[导出的文件名].sql.gz mysqldump -uroot -p [数据库名] --single-transaction >/backup/[导出的文件名].sql.gz mysqldump -uroot -p [数据库名] --default-character-set=utf8 --set-gtid-purged=OFF --single-transaction >/backup/[导出的文件名].sql.gz
2.导出多个库ui
mysqldump -uroot -p -B [数据库名1] [数据库名2] >/backup/[导出的文件名].sql.gz mysqldump -uroot -p -B [数据库名1] [数据库名2] --single-transaction >/backup/[导出的文件名].sql.gz mysqldump -uroot -p -B [数据库名1] [数据库名2] --default-character-set=utf8 --set-gtid-purged=OFF --single-transaction >/backup/[导出的文件名].sql.gz
3.导出单个表spa
mysqldump -uroot -p [数据库名] [表名] >/backup/[导出的文件名].sql.gz mysqldump -uroot -p [数据库名] [表名] --single-transaction >/backup/[导出的文件名].sql.gz mysqldump -uroot -p [数据库名] [表名] --default-character-set=utf8 --set-gtid-purged=OFF --single-transaction >/backup/[导出的文件名].sql.gz
4.导出多个表线程
mysqldump -uroot -p [数据库名] [表名1] [表名2] >/backup/[导出的文件名].sql.gz mysqldump -uroot -p [数据库名] [表名1] [表名2] --single-transaction >/backup/[导出的文件名].sql.gz mysqldump -uroot -p [数据库名] [表名1] [表名2] --default-character-set=utf8 --set-gtid-purged=OFF --single-transaction >/backup/[导出的文件名].sql.gz
5.导入和导出大表code
mysqldump -uroot -p --default-character-set=utf8 --quick \ --extended-insert --single-transaction [数据库名] |gzip >/backup/[导出的文件名].sql.gz
gzip按照需求来定,主要是对导出的sql数据的压缩事务
6.过滤库中的表后在导出
mysqldump -uroot -p --ignore-table=[数据库名.表名1] --ignore-table=[数据库名.表名2] >/backup/[导出的文件名].sql.gz
在过滤库中的表后导出的数据的时候,是不须要单独指定库名的,只须要把须要过滤的库下对应的表填上,它就会自动的把那些填上库对应的表给过滤,将那些没有被过滤的表中的数据导出到指定文件中