mysql备份还原-mysqldump参数介绍

时间:2021-10-07 01:50:28
1 参数分类
    1.1 连接选项
    --bind-address=ip_address

    在计算机上有多个网络接口,该选项可以指定选择哪个接口连接mysql数据库。mysql5.6.1版本之后才启用该选项。
    --compress, -C
    在客户端和服务器之间启用压缩传递所有信息,前提是客户端和服务端都支持压缩。
    --default-auth=plugin
    使用客户端身份认证插件。
    --host=host_name, -h host_name
    需要备份的mysql主机,默认为localhost,可指定远程IP。
    --login-path=name
    从.mylogin.cnf文件里读取登录路径配置信息。
    --password[=password], -p[password]
    连接mysql数据库的密码,使用-p参数时密码和-p之间不能有空格。
    --pipe, -W
    使用命名管道连接mysql(windows系统可用)
    --plugin-dir=path
    查找插件的目录,一般使用--default-auth=plugin参数,且mysqldump找不到插件时使用该参数显示指定。
    --port=port_num, -P port_num
    连接mysql数据库的TCP/IP端口名。
    --protocol={TCP|SOCKET|PIPE|MEMORY}
    使用的连接协议,包括:tcp, socket, pipe, memory.
    --secure-auth
    传输密码时使用新的格式而不用老的pre-4.1格式。该参数默认开启,使用--skip-secure-auth关闭。该参数在mysql5.6.17及其后续版本有效。
    --socket=path, -S path
    指定连接mysql的socket文件位置,默认路径/tmp/mysql.sock
    --ssl
    /*使用ssl选项需要mysql编译时添加SSL支持,否则关于ssl的参数无效*/
    启用ssl安全连接
    --ssl-ca=file_name
    包含PEM格式的可信SSL CA的清单的文件的路径。该选项隐式开启--ssl。
    --ssl-capath=dir_name
    包含PEM格式的可信SSL CA证书的目录的路径。该选项隐式开启--ssl。
    --ssl-cert=file_name
    用于建立安全连接的PEM格式的SSL证书文件名。
    --ssl-cipher=cipher_list
    允许的用于SSL加密的密码的清单。如果清单中的密码不可用,则SSL连接将不工作。该选项隐式开启--ssl。cipher_list的格式与OpenSSL ciphers命令相同。
    例如:
--ssl-cipher=AES128-SHA
--ssl-cipher=DHE-RSA-AES256-SHA:AES128-SHA
    --ssl-crl=file_name
    包含PEM格式的证书撤销列表的文件名
    --ssl-crlpath=dir_name
    包含PEM格式的证书撤销列表的文件路径
    --ssl-key=file_name
    用于建立安全连接的SSL密钥文件名。
    --ssl-verify-server-cert
    该参数仅对客户端生效。
    --user=user_name, -u user_name
    连接mysql数据库的用户名
    1.2 可选文件选项
    --defaults-extra-file=file_name

    除了全局配置文件所读取的配置文件名。如果给出,必须首选该选项(unix下)。
    --defaults-file=file_name
    指定默认配置文件。
    --defaults-group-suffix=str
    读取配置文件my.cnf组选项中的内容。不仅可以读取[client],[mysqldump]组信息,也可读取诸如[client_str],[mysqldump_str]等自定义组信息。
    --no-defaults
    不读取配置文件信息,比如程序开始时读取到了错误的配置信息,使用该参数比较有效。.mylogin.cnf文件是个例外,该文件无论何时都会被读取。
    --print-defaults
    打印配置文件的相关信息
    1.3 DDL选项
    --add-drop-database

    在CREATE DATABASE语句前增加DROP DATABASE语句,一般配合--all-databases 或 --databases使用,因为只有使用了这二者其一,才会记录CREATE DATABASE语句。
    --add-drop-table 
    在CREATE TABLE语句前增加CREATE TABLE语句。
    --add-drop-trigger
    在CREATE TRIGGER语句前增加DROP TRIGGER语句
    --all-tablespaces, -Y
    导出全部表空间。该参数目前仅用在MySQL Cluster表上(NDB引擎)
    --no-create-db, -n
    只导出数据,而不添加CREATE DATABASE 语句。除非加上参数 --databases 或 --all-databases 
    --no-create-info, -t
    只导出数据,而不添加CREATE TABLE 语句
    --no-tablespaces, -y
    不导出任何表空间信息
    --replace

    使用REPLACE INTO 取代INSERT INTO.

mysql备份还原-mysqldump参数介绍

    1.4 debug选项
    --allow-keywords

    允许创建是关键词的列名字。但需要在列名前加表名作为前缀。
    --comments, -i
    附加注释信息,如数据库版本,主机名等。默认为打开,可以用--skip-comments取消 
    --debug[=debug_options], -# [debug_options]
    输出debug信息,用于调试。debug_options格式为d:t:o,file_name,默认为d:t:o,/tmp/mysqldump.trace
    --debug-check
    mysqldump退出时打印调试信息。
    --debug-info
    mysqldump退出时打印调试信息及cup,内存的使用统计。
    --dump-date

    添加DUMP时间到输出末尾,默认开启,禁用的话--skip-dump-date

mysql备份还原-mysqldump参数介绍

    --force, -f
    在导出过程中忽略出现的SQL错误。
    --log-error=file_name
    记录warning及error信息岛指定文件,默认不输出。
    --skip-comments
    取消附加注释信息。
    --verbose, -v
    冗长模式,输出更多的信息。
    1.5 help选项
    --help, -?

    显示帮助信息并退出。
    --version, -V
    显示版本信息并退出。
    1.6 字符集选项
    --character-sets-dir=path

    字符集文件的安装目录
    --default-character-set=charset_name
    设置默认字符集,若不设置默认为utf8,早期版本默认为latin1, 导出tab格式文件时最好显示指定,方便通过LOAD DATA INFILE方式导入.
    --set-charset
    添加'SET NAMES  default_character_set'到输出文件。默认为打开状态,使用--skip-set-charset关闭选项。
    --no-set-names, -N
    关闭--set-charset选项,也可用--skip-set-charset代替。
    1.7 复制选项
    --apply-slave-statements

    在--dump-slave产生的'CHANGE  MASTER TO..'前增加STOP SLAVE命令,并在文件末尾增加START SLAVE 命令。
    --delete-master-logs
    master备份完成后通过语句PURGE BINARY LOGS删除日志. 这个参数将自动激活--master-data。
    --dump-slave[=value]
    在从机上导出数据,同--master-data类似,value值为1或2,默认为1,即mysqldump出来的文件就会包括CHANGE MASTER TO这个语句,如果为2,mysqldump出来的文件包含的CHANGE MASTER TO这个语句会被注释掉。该选项可配合 --apply-slave-statements 和 --include-master-host-port参数使用。
    --include-master-host-port
    在--dump-slave产生的'CHANGE  MASTER TO..'语句中增加'MASTER_HOST=<host>,MASTER_PORT=<port>' 
    --master-data[=value]
    该参数有两个值1和2,默认为1 
    mysqldump导出数据时,当这个参数的值为1的时候,mysqldump出来的文件就会包括CHANGE MASTER TO这个语句,CHANGE MASTER TO后面紧接着就是file和position的记录,在slave上导入数据时就会执行这个语句,salve就会根据指定这个文件位置从master端复制binlog。当这个值是2的时候,chang master to也是会写到dump文件里面去的,但是这个语句是被注释的状态。
    使用该选项需要在my.cnf中开启binary log并需要拥有RELOAD权限。该参数会主动关闭--lock-tables,如果未使用--single-transaction,该参数还会自动开启--lock-all-tables,否则不开启。
    --set-gtid-purged=value
    控制是否向备份文件写入gtid信息,即添加SET @@global.gtid_purged,参数包括ON,OFF,AUTO,默认为AUTO。ON添加(数据库没启用GTID时会报错),OFF不添加,AUTO(如果数据库启用GTID便自动添加)
    1.8 格式化选项
    --compact

    输出更加紧凑(较少)的信息,该参数开启选项:--skip-add-drop-table  --skip-add-locks --skip-comments --skip-disable-keys --skip-set-charset 
    --compatible=name
    导出的数据将和其它数据库或旧版本的MySQL 相兼容。值可以为ansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、no_tables_options、no_field_options等。要使用几个值,用逗号将它们隔开。它并不保证能完全兼容,而是尽量兼容。
    --complete-insert, -c

    使用完整的insert语句(包含列名称)。这么做能提高插入效率,但是可能会受到max_allowed_packet参数的影响而导致插入失败。

mysql备份还原-mysqldump参数介绍

    --create-options
    在CREATE TABLE语句中包括所有MySQL特性选项。(默认为打开状态)
    --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选项
    --hex-blob
    使用十六进制格式导出二进制字符串字段。如果有二进制数据就必须使用该选项。影响到的字段类型有BINARY、VARBINARY、BLOB及BIT。
    --lines-terminated-by=name
    输出文件的每行用给定字符串划分。与--tab选项一起使用,不能用于--databases和--all-databases选项。
    --quote-names, -Q
    使用(`)引起表和列名。默认为打开状态,使用--skip-quote-names取消该选项。
    --result-file=file_name, -r file_name
    直接输出到指定文件中。该选项应该用在使用回车换行对(\r\n)换行的系统上(例如:DOS,Windows)。该选项确保只有一行被使用。
    --tab=path, -T path
    为每个表在给 定路径创建tab分割的文本文件 ,对每个dump的表,创建包含CREATE TABLE语句的tbl_name.sql文件和只包含数据的tbl_name.txt文件。注意:仅仅用于mysqldump和mysqld服务器运行在相同机器上。
    --tz-utc
    在导出顶部设置时区TIME_ZONE='+00:00' ,以保证在不同时区导出的TIMESTAMP 数据或者数据被移动其他时区时的正确性。该参数默认开启,如需关闭使用参数 --skip-tz-utc
    --xml, -X
    导出XML格式.
    1.9 过滤选项
    --all-databases, -A

    备份所有数据库的所有表
    --databases, -B
    备份指定的数据库(以及库中的表),不指定该参数情况下,mysqldump认为第一个名称是数据库名,后面跟的都是表名,指定该参数,该参数后面的都认为是数据库名。
    --events, -E
    导出事件调度。
    --ignore-table=db_name.tbl_name
    不导出指定表。指定忽略多个表时,需要重复多次,每次一个表。每个表必须同时指定数据库和表名。例如:--ignore-table=database.table1 --ignore-table=database.table2 ……,该选项也可用来忽略视图。
    --no-data, -d
    不导出任何数据,只导出数据库表结构
    --routines, -R
    导出存储过程以及存储函数。注意:该参数并不导出属性信息如:存储过程创建和修改的时间戳。导入时创建的时间戳和导入时时间相同。假如要使用原始的时间戳,不要使用参数--routines,而是直接备份mysql.proc的内容(需要用户有相关权限)。
    --tables
    覆盖--databases (-B)参数,指定需要导出的表名,后面可直接跟多个表。
    --triggers
    导出触发器。该选项默认启用,用--skip-triggers禁用它。
    --where='where_condition', -w 'where_condition'
    只转储给定的WHERE条件选择的记录。请注意如果条件包含命令解释符专用空格或字符,一定要将条件引用起来。
    1.10 性能选项
    --delayed-insert

    对于非事物表采用延时插入方式(INSERT DELAYED)而非INSERT导出数据。如dump文件中一行INSERT  DELAYED INTO `dump` VALUES (1);

mysql备份还原-mysqldump参数介绍

    --disable-keys, -K
    对于每个表,用/*!40000 ALTER TABLE tbl_name DISABLE KEYS */;和/*!40000 ALTER TABLE tbl_name ENABLE KEYS */;语句引用INSERT语句。这样可以更快地导入dump出来的文件,因为它是在插入所有行后创建索引的。该选项只适合非唯一索引的MyISAM表,默认为打开状态。
    --extended-insert, -e

    使用具有多个VALUES列的INSERT语法。这样使导出文件更小,并加速导入时的速度。默认为打开状态,使用--skip-extended-insert取消选项。

mysql备份还原-mysqldump参数介绍

    --insert-ignore

    使用INSERT IGNORE语句替代INSERT语句,如dump文件中一行INSERT  IGNORE INTO `dump` VALUES (1);

mysql备份还原-mysqldump参数介绍

    --opt(默认开启)
    提供了mysqldump快速备份还原的操作,是如下参数的简写
    ( --add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset)不启用该参数的话要显示指定--skip-opt。
    --quick, -q
    该选项在导出大表时很有用,它强制 mysqldump 从服务器查询取得记录直接输出而不是取得所有记录后将它们缓存到内存中,即不缓冲查询,直接导出到标准输出。默认为打开状态,使用--skip-quick取消该选项。
    --skip-opt
    关闭--opt选项。
    1.11 事务选项
    --add-locks

    在每个表导出内容之前增加LOCK TABLES语句并且在表最后添加UNLOCK  TABLE语句。(默认为打开状态,使用--skip-add-locks取消选项),这样在导入数据时可以加快insert的速度。
    --flush-logs, -F
    开始导出之前刷新日志。使用--all-databases参数时,对将要导出的数据库执行flush操作。例外是使用--lock-all-tables, --master-data, 或 --single-transaction参数,和这些参数配合使用时,flush只在dump进行时执行一次。
    --flush-privileges
    在导出[mysql]数据库之后,发出一条FLUSH  PRIVILEGES 语句。为了正确恢复,该选项应该用于导出[mysql]数据库或依赖[mysql]数据库数据的任何时候。
    --lock-all-tables, -x
    在备份过程中,提交请求锁定所有数据库中的所有表,以保证数据的一致性。这是一个全局读锁,并且自动关闭 --single-transaction 和 --lock-tables 选项。
    --lock-tables,-l
    该参数适用于myisam表,仅锁定将要进行备份的数据库的相应表。相应的表使用READ LOCAL方式锁定,即:锁定期间允许允许读及从表的尾部对表进行并发热插入。
    --no-autocommit

    每一个导出表的所有insert语句作为一个整体,在其前后加上SET autocommit = 0 和 COMMIT,设置为非自动提交模式,即全部insert执行完,在执行COMMIT(通过验证)。

mysql备份还原-mysqldump参数介绍

    --order-by-primary
    如果存在主键,或者第一个唯一键,对每个表的记录进行排序。在导出MyISAM表到InnoDB表时有效,但会使得导出工作花费很长时间。
    --shared-memory-base-name=name
    该参数主要用于windows上,默认值为MYSQL,且大小写敏感。mysql server启动时使用--shared-memory参数该参数才有效。
    --single-transaction
    该参数适用于InnoDB表,与--lock-tables参数互斥,备份期间不锁表,即热备份。
    为确保得到有效的备份文件,使用该参数备份期间应避免使用DDL(ALTER TABLE, CREATE TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE.)语句,因为连续性的读并没有对这些语句进行隔离,备份期间使用这些DDL语句会导致潜在的select获取到的返回的数据不一致或错误,比如数据读出一半表被删了。
****************************************************************************************
    原文地址: http://blog.csdn.net/jesseyoung/article/details/41042825
    博客主页: http://blog.csdn.net/jesseyoung
****************************************************************************************