mysqldump 参数解析(详细)

目录

  • DDL Options
    Replication Options
    Format Options
    Filtering Options
    Transactional Options
    总结
DDL Options
--add-drop-database

default: false

在创建每个数据库语句之前编写一个DROP(if exists)数据库语句. 这个选项通常和“–all-databases“或”–databases”选项一起使用,因为除非指定了其中的一个选项,否则在导出的SQL文件中不会编写 create database 语句。

--add-drop-table

default:true

在创建每个表前添加一个 DROP(if exists) table 语句 ----【体现在导入的SQL文件中】

--add-drop-trigger

default:false

在每个创建触发器语句之前编写一个DROP触发器语句。

--all-tablespaces ,  -Y

default:false

将创建NDB表使用的任何表空间所需的所有SQL语句添加到表dump文件中。在mysqldump的输出中没有包含此信息。这个选项目前只与NDB集群表相关,MySQL 5.7不支持NDB集群表。

--no-create-db , -n

default:false

如果给定“–databases”或“–all-databases”选项,则禁止输出中包含CREATE DATABASE语句。

如果未指定 -B 或 -A 选项,则输出中也没有 CREATE DATABASE 语句。

--no-create-info , -t

default:false

不导出表结构:无 create table 语句。

但是此选项可以导出创建日志文件组或表空间的语句;您可以为此使用–no-tablespaces选项来禁止导出。

--no-tablespaces , -y

default:FALSE

该选项不输出CREATE LOGFILE GROUP and CREATE TABLESPACE 语句。

--replace

default:false

用replace 替换SQL文件中的 insert

--force, -f

default:false

忽略所有error,此选项比–ignore-error 优先级高。

--default-character-set=charset_name

使用charset_name作为默认字符集,mysqldump默认使用utf8.

Replication Options
--apply-slave-statements

对使用–dump-slave选项生成的SQL文件中,会在change master to 语句之前添加 stop slave 语句,并在输出末尾添加 start slave 语句。

--delete-master-logs

在主复制服务器上,执行完dump操作之后,会向服务器发送 PURGE BINARY LOGS 语句清除binlog。此选项自动启用–master-data

--dump-slave

会在dump后的SQL文件中,添加 change master to 语句,该语句指定被转储从的binlog文件名和位置。

从SHOW SLAVE STATUS输出中读取Relay_Master_Log_File和Exec_Master_Log_Pos的值,分别用于MASTER_LOG_FILE和MASTER_LOG_POS。这些是主服务器的文件名和位置,从服务器开始复制。

--master-data

使用此选项dump a master replication server到dump文件,可用于设立另一台服务器作为master的slave。它会使dump输出包含CHANGE MASTER TO语句,标记dump源的二进制日志坐标(文件名和位置)。在把load dump文件加载到slave之后,slave应当从该master坐标开始复制。

如果选项赋值为2,那么CHANGE MASTER TO 语句会被写成一个SQL comment(注释),从而只提供信息;

如果选项赋值为1,那么语句不会被写成注释并且在dump被载入时生效。

如果没有指定,默认值为1。

--set-gtid-purged=ON/OFF

如果转储文件包含系统表,则不建议在服务器gtid_mode= on时加载转储文件.

如果不设置 --set-gtid-purged=OFF 这个参数,最终的备份文件中会有这样一句话:SET @@GLOBAL.GTID_PURGED=‘5adbcab4-fcbb-11e7-a900-000c29e774f1:1-347’;这个的区间是主库中当前所完成的所有事务号。这条语句在备份被恢复的时候,起到的作用是,不再从主库同步1-347 这个范围内的事务了。如果我们不是主从之间的转储,我们不应该阻止该库同步1-347全部区间的数据。因此部分备份是加上–set-gtid-purged=OFF 这句,不强行指定跳过这些操作.

Format Options
--hex-blob

使用十六进制表示法转储二进制列

--xml

转储为xml格式

Filtering Options
--all-databases , -A

dump 所有数据库。

--database ,-B

dump 指定数据库 ,可以指定一个或多个。

--tables

mysqldump将该选项后面的所有名称参数都视为表名。

--events ,-E

dump 服务器事件。须有event权限。

--ignore-table=db_name.tal_name

不要dump给定的表,必须使用数据库名和表名指定给定的表。若要忽略多个表,请多次使用此选项。这个选项也可以用来忽略视图。

--no-data , -d

不导出数据

--triggers

导出表的触发器,默认启动。可以用 --skip-triggers 禁用。

--where=''   , -w  ''

只dump由where选择的行,如果条件中包含特殊字符,须在条件周围加上引号。

--insert-ignore

出现主键重复但使用了ignore则错误被忽略,数据不变。

--opt

提供了快速dump操作,默认开启。可通过 --skip-opt 关闭。

Transactional Options
--flush-logs , -F

切换一下binlog file。

在开始dump前,flush 一个新的binlog file。此选项适用于为备份恢复加一个保险。

--single-transaction

不支持ddl,加上这个参数,对于innodb 表来说不锁表和行。形成一致性快照。

--no-autocommit

将dump文件中的每一个INSERT语句括在SET autocommit = 0和COMMIT语句中。

--compact

优化备份文件。此选项启用-skip-add-drop-table、-skip-add-locks、-skip-comments、-skip-disable-keys和-skip-set-charset选项。

-T

每一个表生成两个文件,一个SQL 文件,一个TXT 文件。可以备份成一个文件,可以是点SQL 结尾,也可以是点txt 结尾,导出一行行数据,每行数据指定以tab 方式分割每一个列,每行的分隔符默认是回车。

--lines-terminated-by

行与行之间的分隔符,默认为回车

--fileds-terminated-by=','

列与列之间的分割符。

总结

我在工作中所最长用的参数:

mysqldump -u user -ppassword --single-transaction --set-gtid-purged=off --hex-blob -R -E

(-F:备份开始时重建binlog文件)(–master-data=2:如为master)(-d/–no-data:不导出数据)(-t:不导出结构)(–ignore-table=db.table)(–events/-E:导出事件)(-R/–routines:导出存储过程和函数)(导出多个库:–databases)(–where=‘where条件’)