mysqldump
-A, --all-databases //备份所有数据库和表。在8.0之前使用-A的时候不需要显式指定--routines和--events参数来备份存储过程、函数和事件,因为备份的时候会备份mysql库,里面包含了mysql.proc和mysql.event表。在8.0开始使用-A的时候需要显式指定--routines和--events参数来备份存储过程、函数和事件,因为8.0开始不会备份mysql.proc和mysql.event表。
-Y, --all-tablespaces //只与NDB cluster有关,将在备份文件保存创建NDB表使用的任何表空间所需要的所有sql语句。
-y, --no-tablespaces //该选项抑制mysqldump输出中的所有CREATE LOGFILE GROUP和CREATE TABLESPACE语句。
--add-drop-database //在每个CREATE DATABASE语句之前写一个DROP DATABASE语句,该选项默认是false。该选项通常与--all-databases或--databases选项一起使用。在8.0开始要使用--add-drop-database,请使用--databases指定要备份的数据库并且其中不包括mysql库。
--add-drop-table //在每个CREATE TABLE语句之前写一个DROP TABLE语句。默认为on,如果不想加的话使用--skip-add-drop-table。
--add-drop-trigger //在每个CREATE TRIGGER语句之前写一个DROP TRIGGER语句。
--add-locks //在每个表insert语句前后加上lock tables和unlock tables。默认是on,不想加的话可以使用--skip-add-locks。
--allow-keywords //允许创建关键字列名。
--apply-slave-statements //8.0.26之前使用的是这个选项,之后使用的是--apply-replica-statements。在带有二进制日志坐标的语句之前加一个stop replica(stop slave),在文件末尾添加start replica(start slave)。
--bind-address //在具有多个网络接口的计算机上,使用此选项选择使用哪个接口连接到MySQL服务器。
--character-sets-dir //字符集安装的目录。
-i, --comments //在备份文件中添加附加信息(程序版本、服务器版本和主机等信息),默认情况下是启用的,可以使用--skip-comments来禁止。
--compatible //导出的数据与其他数据库系统或旧的mysql服务器更兼容,该选项唯一允许的值是ansi(这种模式改变语法和行为,使其更接近标准sql)。
--compact //使备份文件更紧凑,去掉注释和头尾等结构。该选项会启用--skip-add-drop-table、--skip-add-locks、--skip-comments、--skip-disable-keys和--skip-set-charset选项。
-c, --complete-insert //使用包含列名的完整的sql语句,但是可能会受到max_allowed_packet参数的影响。
-C, --compress //压缩client和server段之间发送的所有信息,压缩产生于客户端,但是影响客户端和服务器端的CPU负载,因为双方都执行压缩和解压缩的操作。从8.0.18开始,这个选项被弃用。
-a, --create-options //create table语句中包括所有mysql特性选项(默认打开)。如果关闭可以使用--skip-create-options。
-B, --databases //备份多个数据库。通常mysqldump将命令行上的第一个名称参数作为数据库名,将后面的名称作为表名,使用此选项后会将该参数后面的所有名称视为数据库名称,因为使用-A也不会备份performance_schema、infomation_schema、sys数据库,但是可以使用该参数来备份这些数据库。
--tables //需要备份哪些表。
--default-character-set //配置字符集,5.7默认utf8,8.0默认utf8mb4。
--delete-master-logs //从8.0.26开始使用--delete-source-logs,两种具有相同用的效果。在进行备份后通过向服务器发送purge binary log语句来删除二进制日志。该选项启用--master-data(8.0.26开始叫做--source-data)。
-K, --disable-keys //对于每个表在insert语句周围加上alter table tbl_name disable keys和alter tbl_name enable keys语句,这使得备份更快,因为索引是在插入所有行之后创建的,此选项进对于myisam表的非唯一索引有效。默认开启的,可以使用--skip-disable-keys来禁用。
--dump-slave //从8.0.26开始使用--dump-replica参数,这两个参数具有同样的效果。该选项将导致主的binlog位置和文件名追加到备份文件中。设置为1时,将会以CHANGE MASTER命令输出到数据文件(不会注释),设置为2时会进行注释。该选项将会打开--lock-all-tables,除非指定了--single-transaction。该选项会自动关闭--lock-tables选项。默认值为0。与--master-data的区别是,--dump-slave会在备份开始的时候执行stop slave sql_thread,备份完成后执行start slave,如果备份失败,可能导致sql thread停止。
-E, --events //导出事件,在备份文件中包含数据库的事件,文件中包含create event语句来创建对应的事件。
-e, --extended-insert //该选项是将多个insert语句合并成一个(insert into .. values (),(),(),()..)提高导入效率,可以使用--skip-extended-insert 来关闭该选项(insert into .. values(); insert into .. values()...),但是开启该选项比关闭该选项耗时减少3、4倍。
-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错误。
--hex-blob //使用十六进制表示法转储二进制列(例如,'abc'变成0x616263)。当与二进制字符集一起使用时,受影响的数据类型为BINARY、VARBINARY、BLOB类型、BIT、所有空间数据类型和其他非二进制数据类型。
-h, --host //从给定主机上的MySQL服务器进行备份。默认主机为localhost。
--ignore-error=error[,error]... //忽略指定的错误。选项值是一个用逗号分隔的错误编号列表,指定在mysqldump执行期间要忽略的错误。如果还指定了——force选项以忽略所有错误,则--force优先。
--ignore-table=name //不转储指定的表。若要指定要忽略的多个表,请多次使用该指令,每个表一次。每个表必须同时指定数据库名和表名,例如--ignore-table=database.table。
--include-master-host-port //8.0.26开始使用--include-source-host-port,这两个有相同的效果。与--dump-slave一起使用,在--dump-slave产生的'CHANGE MASTER TO..'语句(8.0.23是CHANGE REPLICATION source to)中增加'MASTER_HOST=,MASTER_PORT=' ,在从库使用。
--insert-ignore //在插入行时使用INSERT IGNORE语句。insert ignore into 是如果数据库没有这条数据,就插入该数据数据,如果有数据的话(比如主键冲突)就跳过这条数据。
-x, --lock-all-tables //备份的时候加全局读锁(flush tables with read lock),锁定所有数据库中的所有表,并且这个选项会自动关闭-lock-tables选项,并且 不能和--single-transaction一起使用。
-l, --lock-tables //对于备份每个数据库的时候,备份前先锁定该库中所有的表(lock table tb1 read,tb2 read....;),备份完成该库后就会释放锁,备份另一个数据库的时候再去锁定另一个库中的表。myisam表应该使用该参数锁定表,对于innodb的事务表--single-transaction是一个更好的选择,因为它不需要锁表。因为--lock-tables是分别锁定的库中的表,所以不能保证备份文件中的表在数据库之间的逻辑的一致性。--opt参数会自动启用--lock-tables,如果不想启用则使用--skip-lock-tables。
--log-error=name //将告警和错误记录到指定文件中,默认是不记录的。
--master-data[=#] //8.0.26变为了--source-data,两种效果是一样的。当为1的的时候在备份文件中存在change master to (8.0.23之后change replication source to)语句;当为2的时候存在change语句但是是注释状态。该参数会默认打开--lock-all-tables,关闭--lock-tables。如果一起使用了--single-transaction那么会锁很短的时间就会释放锁。如果使用--dump-slave参数的话会忽略--master-data参数。
--max-allowed-packet=# //服务器发送和接收的最大包长度,默认6M,最大1GB。该选项的值是特定于mysqldump的,不要于mysql内部的max_allowed_packet系统变量混淆。
--net-buffer-length=# //客户端和服务器通信缓冲区的初始大小。当创建多行insert语句时(使用--extend-insert),mysqldump创建的行长度不超过--net-buffer-length字节。如果mysqldump的时候增加该值,也请确保mysql内部该变量的值至少有这么大。
--no-autocommit //将每个备份的表insert语句包含在set autocommit=0和commit语句中。
-n, --no-create-db //在备份文件中不包含create database语句。
-t, --no-create-info //只导出数据,不添加create table语句。
-d, --no-data //只导出表结构,不导出表数据。
-N, --no-set-names //关闭--set-charset设置,与--skip-set-charset相同。
--set-charset //将SET NAMES default_character_set(值)写入备份文件,默认启用,如果关闭需要使用上面的参数或者--skip-set-charset。
-q, --quick //将select出来的结果直接dump到备份文件,默认情况下是开启的。如果关闭的话(--skip-quick)会将select结果先缓存到内存中,是非常消耗内存的。
--opt //等同于--add-drop-table, --add-locks, --create-options, --quick, --extended-insert, --lock-tables, --set-charset, --disable-keys 该选项默认开启, 可以用--skip-opt关闭。
--order-by-primary //在备份每个表的时候,按照其主键或者第一个唯一索引(如果存在的话)进行排序,这在将myisam表恢复到innodb表时非常有用,但是也会使备份操作花费相当长的时间。
-u, --user=name //备份使用的用户。
-p, --password[=name] //备份用户的密码。
-P, --port=# //备份数据库的端口号。
--protocol={TCP|SOCKET|PIPE|MEMORY} //用于指定连接到服务器的传输协议。
-Q, --quote-names //使用``引起数据名、表名和列名,默认打开。可以使用--skip-quote-names关闭。
--replace //使用replace into来代替insert into。
-r, --result-file=name //指定备份输出的文件,即使在备份过程中发生错误,也会创建该文件并且如果该文件存在话会覆盖之前内容。这个选项应该应用在DOS、windows系统上,以防止换行符\n被转换为回车换行\r\n。
-R, --routines //导出存储过程和自定义函数,备份文件中包含CREATE PROCEDURE和CREATE FUNCTION语句。
--single-transaction //该选项在备份的时候会将隔离级别设置为RR,并且使用start transaction来开启一个事务,来达到备份的一致性,只对事务表(innodb)有用。使用该选项的时候只有事务表是一致的状态,而myisam或者memory表仍然可能改变状态。该选项和--lock-tables是互斥的,因为lock tables会隐式提交任何挂起的事务。该参数不能与--lock-all-tables一起使用会报错。--master-data会自动关闭--lock-tables。
--set-gtid-purged //该参数是基于GTID模式的,是获取的gtid_excuted系统变量,开启该参数的时候会在备份文件中加入set @@session sql_log_bin=0语句,这样会使得恢复的时候不计入binlog,如果在主库恢复可能导致主备不一致。开启该选项的话和--single-transaction一起使用可能导致输出不一致,如果需要使用的话可以与--lock-all-tables一起使用(--master-data默认开启--lock-all-tables)。
有如下几个值:
auto:默认值,如果数据库中启用了gtid且gtid_excuted不为空则将set @@global.gtid_purged和set @@session.sql_log_bin=0添加到备份文件中。如果没有开启gtid则不会添加。
off:不会在备份文件中添加set @@global.gtid_purged和set @@session.sql_log_bin=0。
on:如果数据库中启用了gtid且gtid_excuted不为空则将set @@global.gtid_purged和set @@session.sql_log_bin=0添加到备份文件中,如果没有启用gtid则会发生错误。
--dump-date //将备份时间添加到文件末尾,默认打开。可以使用--skip-dump-date来关闭。
--server-public-key-path=name //PEM格式文件的路径名,其中包含服务器进行基于RSA密钥对的密码交换所需的公钥的客户端副本。该选项适用于使用sha256_password或caching_sha2_password身份验证插件进行身份验证的客户端。对于没有使用这些插件之一进行身份验证的帐户,该选项将被忽略。
--get-server-public-key //从服务器请求基于RSA密钥对的密码交换所需的公钥。该选项适用于使用caching_sha2_password身份验证插件进行身份验证的客户端。
--fields-terminated-by 、--fields-enclosed-by、--fields-optionally-enclosed-by、--fields-escaped-by //这些选项与--tab选项一起使用,与load data infile对应的选项意义相同,但是不能与--databases和--all-databases一起使用。
--lines-terminated-by //该选项与--tab选项一起使用,与LOAD DATA对应的LINES子句具有相同的含义。但是不能与--databases和--all-databases一起使用。
-T, --tab=name //需要在mysql中设置secure_file_priv参数。指定生成文件的路径,每个表分别生成两个文件(.txt存储数据、.sql存储sql语句),在.txt文件中每列的数据默认以tab分割,与上面的几个参数搭配使用,相当于load data infile。只有当mysqldump和mysqld在同一台机器上运行时,才应该使用这个选项。
--triggers //备份每个表中的触发器。默认情况下启用此选项,使用--skip-triggers禁用它。
--tz-utc //在备份文件顶部设置时区TIME_ZONE='+00:00' ,以保证在不同时区导出的TIMESTAMP 数据或者数据被移动其他时区时的正确性。默认开启,可以使用--skip-tz-utc来关闭。
-w, --where=name //只转储给定的WHERE条件选择的记录。请注意如果条件包含命令解释符专用空格或字符,一定要将条件引用起来。
-X, --xml //导出xml格式。
--default-auth //使用客户端身份认证插件。
--plugin-dir //查找插件的目录,一般使用--default-auth参数,且mysqldump找不到插件时使用该参数显示指定。
--enable-cleartext-plugin //激活或者禁用mysql_clear_password认证插件