mysqldump命令详解

mysqldump是mysql用于转存储数据库的实用程序。它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT等

用法:

mysqldump [OPTIONS] database [tables]
mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
mysqldump [OPTIONS] --all-databases [OPTIONS]

参数详解:

--print-defaults                     # 打印程序参数列表并退出.
--no-defaults # 不要从任何选项文件读取默认选项,登录文件除外
--defaults-file=# # 仅从给定文件中读取默认选项
--defaults-extra-file=# # 读取全局文件后读取此文件
--defaults-group-suffix=# # 同时读取带有concat(group,suffix)的组
--login-path=# # 从登录文件读取此路径 -A, --all-databases # 导出所有数据库
-Y, --all-tablespaces # 导出所有表空间
-y, --no-tablespaces # 不导出任何空间信息
--add-drop-database # 在建库之前添加drop database 语句
--add-drop-table # 在建表之前添加drop table 语句(默认开启,使用 --skip-add-drop-table 来关闭该功能)
--add-drop-trigger # 在创建触发器之前添加drop trigger语句
--add-locks # 在执行插入语句时添加锁(默认开启,使用 --skip-add-locks 关闭该功能)
--allow-keywords # 允许使用关键字作为列名称
--apply-slave-statements # 在'CHANGE MASTER'之前添加'STOP SLAVE',之后添加'START SLAVE'
--bind-address=name # 绑定IP
--character-sets-dir=name # 字符集的目录
-i, --comments # 编写附加信息(默认开启,使用 --skip-comments 关闭该功能)
--compatible=name # 导出的数据将和其它数据库或旧版本的MySQL 相兼容。值可以为ansi、mysql323、mysql40、postgresql、oracle、
mssql、db2、maxdb、no_key_options、no_tables_options、no_field_options等,要使用几个值,用逗号将它们
隔开。它并不保证能完全兼容,而是尽量兼容
--compact # 导出更少的输出信息(用于调试)。去掉注释和头尾等结构 可使用选项有--skip-add-drop-table --skip-add-locks
--skip-comments --skip-disable-keys --skip-set-charset.
-c, --complete-insert # 使用完整的insert语句(包含列名称)。这么做能提高插入效率,但是可能会受到max_allowed_packet参数的影响而
导致插入失败
-C, --compress # 在客户端和服务器之间启用压缩传递所有信息
-a, --create-options # 在CREATE TABLE语句中包括所有MySQL特性选项。(默认为打开状态,使用--skip-create-options关闭)
-B, --databases # 导出多个数据库。在这种情况下没有给出表。所有名称参数都是被视为数据库名称。”use db_name;"将包括在输出中。
-#, --debug[=#] # 输出debug信息,用于调试。默认值为:d:t,/tmp/mysqldump.trace
--debug-check # 当程序退出时打印一些调试信息
--debug-info # 当程序退出时打印调试信息和内存和CPU使用统计信息
--default-character-set=name # 设置默认字符集
--delete-master-logs # master备份后删除日志. 这个参数将自动激活--master-data
-K, --disable-keys # 对于每个表,用/*!40000 ALTER TABLE tbl_name DISABLE KEYS */;和/*!40000 ALTER TABLE tbl_name ENABLE KEYS */;
语句引用INSERT语句。这样可以更快地导入dump出来的文件,因为它是在插入所有行后创建索引的。该选项只适合
MyISAM表,默认为打开状态。(默认打开使用 --skip-disable-keys关闭)
--dump-slave[=#] # 该选项将主的binlog位置和文件名追加到导出数据的文件中(show slave status)。设置为1时,将会以CHANGE MASTER
命令输出到数据文件;设置为2时,会在change前加上注释。该选项将会打开--lock-all-tables,除非
--single-transaction被指定。该选项会自动关闭--lock-tables选项。默认值为0。
-E, --events # 导出事件
-e, --extended-insert # 使用具有多个VALUES列的INSERT语法。这样使导出文件更小,并加速导入时的速度。默认为打开,
使用--skip-extended-insert取消选项
--fields-terminated-by=name # 导出文件中忽略给定字段。与--tab选项一起使用,不能用于--databases和--all-databases选项
--fields-enclosed-by=name # 输出文件中的各个字段用给定字符包裹。与--tab选项一起使用,不能用于--databases和--all-databases选项
--fields-optionally-enclosed-by=name # 输出文件中的各个字段用给定字符选择性包裹。与--tab选项一起使用,不能用于--databases和--all-databases选项
--fields-escaped-by=name # 输出文件中的各个字段忽略给定字符。与--tab选项一起使用,不能用于--databases和--all-databases选项
-F, --flush-logs # 开始导出之前刷新日志。请注意:假如一次导出多个数据库(使用选项--databases或者--all-databases),
将会逐个数据库刷新日志。除使用--lock-all-tables或者--master-data外。在这种情况下,日志将会被刷新一次
相应的所以表同时被锁定。因此,如果打算同时导出和刷新日志应该使用--lock-all-tables 或者--master-data
和--flush-logs。
--flush-privileges # 在导出mysql数据库之后,发出一条FLUSH PRIVILEGES 语句。为了正确恢复,该选项应该用于导出mysql数据库和
依赖mysql数据库数据的任何时候。
-f, --force # 即使出现SQL错误,也要继续
-?, --help # 显示帮助信息并退出
--hex-blob # 使用十六进制格式导出二进制字符串字段。如果有二进制数据就必须使用该选项。影响到的字段类型有BINARY、
VARBINARY、BLOB。
-h, --host=name # 连接的主机
--ignore-error=name # 如果在导出遇到这些错误号忽略,多个错误号之间用逗号分隔。
--ignore-table=name # 不导出指定表。指定忽略多个表时,需要重复多次,每次一个表。每个表必须同时指定数据库和表名。例如:
--ignore-table=database.table1 --ignore-table=database.table2 ……
--include-master-host-port # 在--dump-slave产生的'CHANGE MASTER TO..'语句中增加'MASTER_HOST=<host>,MASTER_PORT=<port>'
--insert-ignore # 在插入行时使用INSERT IGNORE语句
--lines-terminated-by=name # 输出文件的每行用给定字符串划分。与--tab选项一起使用,不能用于--databases和--all-databases选项。
-x, --lock-all-tables # 提交请求锁定所有数据库中的所有表,以保证数据的一致性。这是一个全局读锁,并且自动关闭
--single-transaction和--lock-tables 选项。
-l, --lock-tables # 开始导出前,锁定所有表。用READ LOCAL锁定表以允许MyISAM表并行插入。对于支持事务的表例如InnoDB和BDB,
--single-transaction是一个更好的选择,因为它根本不需要锁定表。请注意当导出多个数据库时,--lock-tables
分别为每个数据库锁定表。因此,该选项不能保证导出文件中的表在数据库之间的逻辑一致性。不同数据库表的导出
状态可以完全不同。(默认开启; 使用 --skip-lock-tables 关闭.)
--log-error=name # 附加警告和错误信息到给定文件
--master-data[=#] # 该选项将当前服务器的binlog的位置和文件名追加到输出文件中(show master status)。如果为1,将会输出
CHANGE MASTER 命令;如果为2,输出的CHANGE MASTER命令前添加注释信息。该选项将打开--lock-all-tables
选项,除非--single-transaction也被指定(在这种情况下,全局读锁在开始导出时获得很短的时间;
其他内容参考下面的--single-transaction选项)。该选项自动关闭--lock-tables选项。
--max-allowed-packet=# # 服务器发送和接受的最大包长度
--net-buffer-length=# # TCP/IP和socket连接的缓存大小
--no-autocommit # 使用autocommit/commit 语句包裹表
-n, --no-create-db # 如果使用了--all databases或--databases。在每个导出的数据库,不添加create database ..if exists语句
-t, --no-create-info # 只导出数据,而不添加CREATE TABLE 语句。
-d, --no-data # 不导出任何数据,只导出数据库表结构
-N, --no-set-names # 等同于--skip-set-charset.
--opt # 等同于--add-drop-table, --add-locks, --create-options, --quick, --extended-insert, --lock-tables,
--set-charset, --disable-keys 该选项默认开启, 可以用--skip-opt禁用.
--order-by-primary # 如果存在主键,或者第一个唯一键,对每个表的记录进行排序。在导出MyISAM表到InnoDB表时有效,但会更耗时
-p, --password[=name] # 连接服务时的密码
-P, --port=# # 连接服务的端口号
--protocol=name # 用于连接的协议(TCP、套接字、管道、内存)
-q, --quick # 不缓冲查询,直接导出到标准输出。默认为打开状态,使用--skip-quick取消该选项
-Q, --quote-names # 使用(`)引起表和列名。默认为打开状态,使用--skip-quote-names取消该选项
-r, --result-file=name # 直接输出到指定文件中。该选项应该用在使用回车换行对(\\r\\n)换行的系统上(例如:DOS,Windows)。
该选项确保只有一行被使用
-R, --routines # 导出存储过程以及自定义函数
--set-charset # 添加'SET NAMES default_character_set'到输出文件。默认为打开状态,使用--skip-set-charset关闭选项
--set-gtid-purged[=name] # 将“set@@global.gtid_purged”添加到输出
--single-transaction # 该选项在导出数据之前提交一个BEGIN SQL语句,BEGIN 不会阻塞任何应用程序且能保证导出时数据库的一致性状态
它只适用于多版本存储引擎,仅InnoDB。本选项和--lock-tables 选项是互斥的,因为LOCK TABLES会使任何挂起
的事务隐含提交。要想导出大表的话,应结合使用--quick 选项。
--dump-date # 将导出时间添加到输出文件中。默认为打开状态,使用 --skip-dump-date 关闭
--skip-opt # 禁用--opt. Disables --add-drop-table, --add-locks,--create-options, --quick, --extended-insert,
--lock-tables, --set-charset, and --disable-keys.
-S, --socket=name # 指定连接mysql的socket文件
--secure-auth # 如果客户端使用旧的(4.1.1之前的)协议,则拒绝连接到服务器
--ssl-mode=name # SSL连接模式
--ssl-ca=name # PEM格式的CA文件
--ssl-capath=name # CA目录
--ssl-cert=name # PEM格式的X509证书
--ssl-cipher=name # 要使用的SSL密码
--ssl-key=name # PEM格式的X509密钥
--ssl-crl=name # 证书吊销列表
--ssl-crlpath=name # 证书吊销列表路径
--tls-version=name # 要使用的TLS版本,允许值为:tlsv1、tlsv1.1
-T, --tab=name # 为每个表在给定路径创建tab分割的文本文件。注意:仅仅用于mysqldump和mysqld服务器运行在相同机器上。注意
使用--tab不能指定--databases参数
--tables # 覆盖--databases (-B)参数,指定需要导出的表名。
--triggers # 导出触发器。该选项默认启用,用--skip-triggers禁用它
--tz-utc # 在导出顶部设置时区TIME_ZONE='+00:00' ,以保证在不同时区导出的TIMESTAMP 数据或者数据被移动其他时区时的
正确性(默认打开 使用 --skip-tz-utc to 禁用)
-u, --user=name # 指定连接的用户名
-v, --verbose # 打印有关各个阶段的信息
-V, --version # 输出mysqldump版本信息并退出
-w, --where=name # 只转储给定的WHERE条件选择的记录。请注意如果条件包含命令解释符专用空格或字符,一定要将条件引用起来。
-X, --xml # 带出xml格式
--plugin-dir=name # 客户端插件的目录,用于兼容不同的插件版本
--default-auth=name # 客户端插件默认使用权限
--enable-cleartext-plugin # 启用/禁用明文身份验证插件

实例:

1、导出所有数据库

mysqldump -uroot -p -A > /home/backup/all.sql

2、导出更少的输出信息,用于调式,不用于正式备份

mysqldump -uroot -p -A --compact > /home/backup/compact.sql

3、 导出多个数据库。在这种情况下没有给出表。所有名称参数都是被视为数据库名称。”use db_name;"将包括在输出中

mysqldump -uroot -p -B oldboy test > two.sql

4、导出某个库的一个或多个表

mysqldump -uroot -p --compact oldboy student test > oldtest.sql

5、导出时锁定数据库所有表,保证数据一致性

mysqldump -uroot -p -x -A > all.sql

6、只导出数据,不导出表结构

mysqldump -uroot -p -t --compact oldboy

7、只导出表结构,不导出数据

mysqldump -u root -p -d  test

8、进行导出之前刷新日志,如果导出多个库,会刷新多次

mysqldump -uroot -p  -F -A

9、该选项将当前服务器的binlog的位置和文件名追加到输出文件中(show master status)。如果为1,将会输出CHANGE MASTER 命令;如果为2,输出的CHANGE  MASTER命令        前添加注释信息

mysql -u root -p --master-data= -A -B

 

MySQL程序之mysqldump详解的更多相关文章

  1. MySQL程序之mysqlshow详解

    mysqlshow命令详解 显示MySQL数据库的结构(数据库.表和列) 如果最后一个参数包含shell或SQL通配符(*,?,%,_)将显示通配符匹配的内容. 如果没有给定数据库,则显示所有匹配的数 ...

  2. MySQL程序只mysqlbinlog详解

    mysqlbinlog命令详解 mysqlbinlog用于处理二进制的日志文件,如果想要查看这些日志文件的文本内容,就需要使用mysqlbinlog工具 用法: mysqlbinlog [option ...

  3. mysql程序之mysqladmin详解

    mysqladmin命令 mysqladmin是执行管理操作的客户端.您可以使用它来检查服务器的配置和当前状态,以创建和删除数据库等 用法: mysqladmin [OPTIONS] command ...

  4. MySQL数据备份 mysqldump 详解

    MySQL数据备份流程 1 打开cmd窗口 通过命令进行数据备份与恢复: 需要在Windows的命令行窗口中进行: l 开始菜单,在运行中输入cmd回车: l 或者win+R,然后输入cmd回车,即可 ...

  5. mysql程序之mysqld_safe详解

    mysqld_safe命令 mysqld_safe是在Unix上启动mysqld服务器的推荐方法.mysqld_safe增加了一些安全特性,例如在发生错误时重新启动服务器,并将运行时信息记录到错误日志 ...

  6. mysql学习3:mysql之my.cnf详解

    mysql之my.cnf详解 本文转自:https://www.cnblogs.com/panwenbin-logs/p/8360703.html 以下是 my.cnf 配置文件参数解释: #*** ...

  7. PHP mysql与mysqli事务详解

    官方对PHP连接到MySQL数据库服务器的三种主要的API简介如下: http://php.net/manual/zh/mysqli.overview.php PHP mysql与mysqli事务详解 ...

  8. mysql配置文件my.cnf详解

    原文地址:mysql配置文件my.cnf详解 作者:gron basedir = path 使用给定目录作为根目录(安装目录). character-sets-dir = path 给出存放着字符集的 ...

  9. mysql触发器trigger 实例详解

    mysql触发器trigger 实例详解 (转自 https://www.cnblogs.com/phpper/p/7587031.html)   MySQL好像从5.0.2版本就开始支持触发器的功能 ...

随机推荐

  1. 2019-03-06-day012-生成器与推导式

    01 昨日回顾 迭代器: 迭代器有iter方法 next方法就是迭代器 递归: 自己调用自己 明确的结束条件 递归的最大深度 官方 1000 实际测试:998/997 import sys sys.s ...

  2. Python 进程的其他方法

    import time import os from multiprocessing import Process def f1(): print("子进程的pid",os.get ...

  3. HDU 6090 17多校5 Rikka with Graph(思维简单题)

    Problem Description As we know, Rikka is poor at math. Yuta is worrying about this situation, so he ...

  4. PAT 乙级 1056. 组合数的和(15)

    给定N个非0的个位数字,用其中任意2个数字都可以组合成1个2位的数字.要求所有可能组合出来的2位数字的和.例如给定2.5.8,则可以组合出:25.28.52.58.82.85,它们的和为330. 输入 ...

  5. React-Native子组件修改父组件的几种方式,兄弟组件状态修改(转载)

    子组件修改父组件的状态,在开发中非常常见,下面列举了几种方式.DeviceEventEmitter可以跨组件,跨页面进行数据传递,还有一些状态的修改.http://www.jianshu.com/p/ ...

  6. centos 安装thrift

    Thrift介绍 Thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发.它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, Erl ...

  7. 【转载】 深度学习总结:用pytorch做dropout和Batch Normalization时需要注意的地方,用tensorflow做dropout和BN时需要注意的地方,

    原文地址: https://blog.csdn.net/weixin_40759186/article/details/87547795 ------------------------------- ...

  8. apache php upload file

    /********************************************************************************* * apache php uplo ...

  9. 【linux基础】linux远程登录

    可以用ssh命令行方式登录.对方需要开启ssh服务. 1. https://blog.csdn.net/zilaike/article/details/78922524 2. https://blog ...

  10. 最长公共子序列与最长公共字串 (dp)转载http://blog.csdn.net/u012102306/article/details/53184446

    1. 问题描述 子串应该比较好理解,至于什么是子序列,这里给出一个例子:有两个母串 cnblogs belong 比如序列bo, bg, lg在母串cnblogs与belong中都出现过并且出现顺序与 ...