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 所有数据库。
--databases ,-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=','
列与列之间的分割符。
总结
我在工作中所最长用的参数:
(1)
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条件’)
(2)
mysqldump -u user -ppassword -P3306 -hxx.xx --single-transaction --compact --set-gtid-purged=off dbname tablename > dbname_tablename.sql
|