GreatSQL社区

搜索

李努力

mysqldump部分参数整理

热度 1李努力 已有 518 次阅读2022-12-9 08:47 |个人分类:MySQL|系统分类:运维实战

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认证插件


发表评论 评论 (3 个评论)

回复 鹿尤知马力 2022-12-13 12:15
感谢分享!有兴趣可以将文章投稿社区公众号哈~
回复 李努力 2022-12-14 08:55
鹿尤知马力: 感谢分享!有兴趣可以将文章投稿社区公众号哈~
   怎么投稿呀
回复 鹿尤知马力 2022-12-27 16:34
李努力:    怎么投稿呀
具体可以参考这个社区活动:https://greatsql.cn/thread-100-1-1.html

投稿方式:将想要投稿的文章,以附件形式,通过邮件发送至社区管理员邮箱:greatsql@greatdb.com

邮件标题:【投稿】+ 文章标题

邮件内容:
文章标题 + 文章摘要 + 作者简介
如果投稿文章在其它技术平台发表过,请附上最早发表的技术平台文章地址链接。
稿件优先以markdown格式编辑,若有图片等附件请一并打包,图片需保证清晰无水印。
稿件亦可直接以编辑好可直接发布到微信公众号的格式提交。

facelist

您需要登录后才可以评论 登录 | 立即注册

合作电话:010-64087828

社区邮箱:greatsql@greatdb.com

社区公众号
社区小助手
QQ群
GMT+8, 2024-4-26 05:55 , Processed in 0.014203 second(s), 9 queries , Redis On.
返回顶部