参数 缩写 是否默认 说明
--print-defaults - - 用于打印默认参数
--no-defaults - - 禁止从默认配置文件中读取默认参数,
mysqldump 默认会从 /etc/my.cnf
/etc/mysql/my.cnf ~/.my.cnf 默认配置文件中
读取 mysqldump mariadb-dump client、
client-server client-mariadb 等客户端配置。
--defaults-file - - 指定 mysqldump 默认配置文件,
mysqldump 将仅从该文件读取默认配置。
--defaults-extra-file - - 指定 mysqldump 额外的配置文件,
mysqldump 将除了从默认配置文件读取配置外,
还将从该文件读取。
--defaults-group-suffix - - 除默认组外,额外读取的组名,多个用逗号分隔。
--all-databases -A False 备份所有库
--all-tablespaces -Y False 备份所有表空间
--no-tablespaces -y False 不备份任何表空间
--add-drop-database False CREATE DATABASE 前添加 DROP DATABASE
--add-drop-table True CREATE TABLE 前添加 DROP TABLE
--skip-add-drop-table - 禁用** --add-drop-table **
--add-drop-trigger False CREATE TRIGGER 前添加 DROP TRIGGER
--add-locks True INSERT 语句前添加 LOCK TABLES ,语句后添加 UNLOCK TABLES;
--skip-add-locks - 禁用** --add-locks **
--allow-keywords False 允许创建包含关键字的列名
--apply-slave-statements False CHANGE MASTER 前添加 STOP SLAVE ,备份文件末尾添加 START SLAVE
--character-sets-dir - 字符集文件目录,用 --character-sets-dir=name 指定
--comments* -i True 添加注释信息
--skip-comments - 禁用** --comments* **
--compatible - 与其他数据库或不同 mysql 版本匹配,需要 4.1.0 以上版本;
可以设置的值有 ansi , mysql323 , mysql40 , postgresql ,
oracle , mssql , db2 , maxdb , no_key_options ,
no_table_options , no_field_options
--compatible=name 指定,多个用逗号分隔
--compact False 禁用注释和前后的 dump 文件信息,提供较少输出,适用于调试;
默认启用以下选项: --skip-add-drop-table --skip-add-locks
--skip-comments --skip-disable-keys --skip-set-charset
--complete-insert -c False 使用带有完整列名的 INSERT 语句,默认不带列名
--compress -C False 在服务端和客户端的协议中使用压缩
--create-options -a True 包含所有MySQL的特定创建选项
--skip-create-options - 禁用** --create-options **
--databases -B False 备份多个数据库,如果没有使用 --tables 选项,
后边的值都将被认为是数据库名,多个用逗号分隔;
将会在输出文件中添加 'USE db_name'
--debug -# 非调试版本
--debug-check False 在退出时检查内存和打开文件的使用情况
--debug-info False 在退出时打印一些调试信息,包括用户占用 CPU 事件,
系统占用 CPU 事件,上下文切换等系统信息。
--default-character-set utf8 设置默认字符集, --default-character-set=utf8
--delayed-insert False 使用 INSERT DELAYED 而表示 INSERT 插入数据,
INSERT DELAYED 在空闲时候插入数据,当有如 SELECT 等其他操作时候,
先处理其他操作,新版本已经不支持了。
--delete-master-logs False 备份后从 master 删除日志,该选项会自动启用 --masert-data 选项
--disable-keys -K True INSERT 语句前添加
'/*!40000 ALTER TABLE tb_name DISABLE KEYS */; 禁用索引,
INSERT 语句后添加
'/*!40000 ALTER TABLE tb_name ENABLE KEYS */; 启用索引;
因为一次创建索引比逐行创建效率更高,这样可以提高数据恢复效率。
--skip-disable-keys 禁用** --disable-keys **
--dump-slave 0 会将二进制文件位置和主文件名附加到备份文件中,
默认为 0
如果为 1 ,将会以 CHANGE MASTER 语句方式输出到备份文件;
如果为 2 CHANGE MASTER 语句将会以注释形式输出到备份文件;
除非指定了 --single-transaction ,否则
将自动开启全局锁 --lock-all-tables ;
该选项会自动关闭 --lock-tables
--events -E False 备份事件
--extended-insert -e True 使用包含多个值列表的多行插入语法。
--skip-extended-insert - 禁用** --extended-insert **
--fields-terminated-by - 结合** -T,--tab=path **选项使用,
tb_name.txt 文件中的字段以指定字符串结尾,默认是 TAB
--fields-terminated-by=name
--fields-enclosed-by - 结合** -T,--tab=path **选项使用,
tb_name.txt 文件中的字段以指定字符串括起来,默认无
--fields-enclosed-by=name
--fields-optionally-enclosed-by - 结合** -T,--tab=path **选项使用,
tb_name.txt 文件中的字段以指定字符串括起来,默认无
--fields-optionally-enclosed-by=name
--fields-escaped-by - 结合** -T,--tab=path **选项使用,
tb_name.txt 文件中的字段以指定字符串转义,默认 \ ,
效果就是将 \ 替换成指定字符,
--fields-escaped-by=name
--flush-logs -F False 备份前生成新的服务器备份库的二进制日志文件,
备份多个库则每个库都会生成一个,
需要 RELOAD 权限,
如果只想生成一次,则应搭配 --lock-all-tables --master-data 使用
--flush-privileges False 在备份后执行 FLUSH PRIVILEGES
在备份包含 MySQL 数据库或任何依赖 MySQL 中的数据库的数据库时需要使用
--force -f False 忽略错误
--gtid - --master-data=1 dump-slave=1 搭配使用,
当启用时,输出内容中将设置 GTID 位置替代 binlog 文件和偏移量,
binlog 文件和偏移量将仅作为注释显示;
当禁用时,与之相反, GTID 将仅作为注释显示
--help -? - 显示 mysqldump 工具帮助信息
--hex-blob False BINARY, VARBINARY, BLOB 格式的二进制字符串备份成十六进制
--host -h - 指定连接主机, --host=name
--ignore-database - 忽略备份的库,忽略多个库需要多次使用该指令;
--all-database -A 搭配使用
--ignore-database=db_name
--ignore-table-data - 忽略备份的表的数据,忽略多个表的数据需要多次使用该指令;
必须同时指定数据库和表名;
--ignore-table-data=db_name.tb_name
--ignore-table - 忽略备份的表,忽略多个表需要多次使用该指令;
必须同时指定数据库和表名;
--ignore-table=db_name.tb_name
--include-master-host-port False 在使用 --dump-slave 时候,
CHANGE MASTER TO 语句中添加 MASTER_HOST=host MASTER_PORT=port
--insert-ignore False 使用 INSERT IGNORE 替代 INSERT ,有重复数据时候忽略报错
--lines-terminated-by - 结合** -T,--tab=path **选项使用,
tb_name.txt 文件以指定字符串结尾,默认无,
--lines-terminated-by=name
--lock-all-tables -x False 在备份期间通过获取全局读取锁来锁定所有库和所有表,
将会自动关闭 --single-transaction --lock-tables
--lock-tables -l True 对需要备份的库的所有表加读锁,
事务型表使用 --single-transaction 而非** --lock-tables **
--skip-lock-tables - 关闭** --lock-tables **
--log-error - 指定文件中添加告警和错误日志, --log-error=file
--log-queries True 到数据恢复时,如果日志记录是打开的,把查询记录到常规和慢查询日志中
--skip-log-queries - 禁用** --log-queries **
--master-data 0 将日志文件名和位置附加到备份文件中,默认值为 0
如果值为 1 ,将会以 CHANGE MASTER 命令的形式附加,
如果值为2, CHANGE MASTER 命令将会以注释形式附加,
除非指定了 --single-transaction
否则将自动开启全局读锁选项 --lock-all-tables
该选项会自动关闭 --lock-tables
--master-data=0
--max-allowed-packet 25165824 与服务器通信的最大数据包长度,应该大于单行数据大小,
小于mysql服务端设置的该变量大小,默认 24M
--net-buffer-length 1046528 TCP/IP和Socket通信的缓冲区大小
--no-autocommit False INSERT 语句前添加 set autocommit=0;
INSERT 语句及 UNLOCK TABLES 后添加 commit; ,
autocommit=0 表示当前连接的操作都会被当成一个事务,
直到调用 commit 提交或 ROLLBACK 可以回滚;
autocommit=1 每条语句会被当成单独的事务,自动 commit
--no-create-db -n False --all-databases --databases 搭配使用,
取消创建数据库 CREATE DATABASE...IF NOT EXISTS 语句
--no-create-info -t False 取消创建数据表相关语句,
包括 DROP TABLE IF EXISTS... CREATE TABLE... 语句
--no-data -d False 仅备份数据结构,不备份数据
--no-set-names -N - 等同于 --skip-set-charset
--opt - 等同于 --add-drop-table --add-locks --create-options --quick
--extended-insert --lock-tables --set-charset --disable-keys
--skip-opt - 禁用** --opt **,
禁用 --add-drop-table --add-locks --create-options --quick
--extended-insert --lock-tables --set-charset --disable-keys
--order-by-primary False 如果备份表存在主键和唯一键,将会以主键和唯一键排序,
对于需要将MyISAM数据导入INNODB表时非常有用,
但会增加数据备份时长
--password -p - 用户账号的密码,如果没有给出密码则会提示输入密码, --password=name
--port -P 0 MySQL 服务连接端口, --port=3306
--protocol - 连接协议,可选的有 tcp、socket、pipe、memory --protocol=name
--quick -q True 不缓冲查询,直接将结果转向标准输出
--skip-quick - 禁用** --quick **
--quote-names -Q True 表名、列名、字段等加反引号括起来
--skip-quote-names - 禁用** --quote-names **
--replace False 使用 REPLACE INTO 语句替代 INSERT INTO 语句,
REPLACE INTO 会先根据主键或唯一索引判断是否有重复数据,
如果有则替换旧数据,没有则直接插入新数据,
没有主键或唯一索引的表可能导致重复数据
--result-file=name -r - 结果输出到指定文件中,
用在使用回车换行符 \r\n 分隔文本的系统中,如 Windows DOS
--result-file=name
--routines -R False 备份函数和存储过程
--set-charset True 再备份文件中添加字符集相关信息,
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--skip-set-charset - 禁用** --set-charset **
--single-transaction False 通过在一个事务中备份所有表来创建一致性快照,
设置事务隔离级别为可重复读,即 Repeatable Read
并向服务端发送 START TRANSACTION ,在这期间不会锁表
其他连接对数据的修改对事务内相同的查询结果没有影响,
仅对支持事务隔离的引擎有效,当前只支持INNODB,
为保障备份有效性,其他连接不可以使用 ALTER TABLE
DROP TABLE TRUNCATE TABLE RENAME TABLE 语句,
因为事务快照不会与它们隔离,
该选项会自动关闭选项 --lock-tables
--dump-date True 在备份文件末尾添加备份完成日期和时间,
-- Dump completed on 2021-03-02 3:56:16
--skip-dump-date - 禁用** --dump-date **,
备份文件结尾为 -- Dump completed ,不再显示日期和时间
--socket=name -S - Socket 连接文件地址, --socket=name
--ssl False 连接启用 SSL (使用其他标志自动启用)
--ssl-ca - 指定 PEM 格式的 CA 文件名称,自动启用 --ssl --ssl-ca=name
--ssl-capath - 指定 CA 文件目录,自动启用 --ssl --ssl-capath=name
--ssl-cert - 指定 PEM 格式的 X509 证书文件名称,自动启用 --ssl --ssl-cert=name
--ssl-cipher - 用于 SSL 加密的密码,自动启用 --ssl --ssl-cipher=name
--ssl-key - 指定 PEM 格式的 X509 密钥文件名称,自动启用 --ssl --ssl-key=name
--ssl-verify-server-cert False 用主机名验证证书中的 Common Name 字段
--tab -T - 在指定目录创建 TAB 分隔的 tb_name.txt 文件和数据备份文件 tb_name.sql
仅当 mysqldump 与服务器在一台服务器时使用,
目录需要设置 chown mysql.mysql tab_path ,
--tab=name
--tables - 覆盖选项 --databases ,指定单个数据库的多张表
--triggers True 备份表关联的触发器
--skip-triggers - 禁用** --triggers **
--tz-utc True 在备份文件开头添加 SET TIME_ZONE='+00:00'
允许备份的数据库中有不同时区的 TIMESTAMP 类型数据,
或要将这一类数据迁移到不同时区时
--skip-tz-utc - 禁用** --tz-utc **
--user -u - 用于连接的用户账号, --user=name
--verbose -v False 显示备份过程中各阶段信息
--version -V - 打印版本号
--where=name -w - 仅备份选定的数据记录,在查询语句后边添加 WHERE 条件语句
--where=name
--xml -X - 备份文件以 xml 格式导出
--plugin-dir - 客户端插件目录, --plugin-dir=name
--default-auth - 客户端验证插件名称, --default-auth=name
mysqldump MySQL 自带的逻辑 备份 工具。它的 备份 原理是通过协议连接到 MySQL 数据库,将需要 备份 的数据查询出来,将查询出的数据转换成对应的insert语句,当我们需要还原这些数据时,只要执行这些insert语句,即可将对应的数据还原。 http://www.open-open.com/lib/view/open1358172843762.html mysqldump -S /tmp/ mysql 3306.sock -uroot --opt --events --igno... mysqldump 备份 : 代码如下: mysqldump -u用户名 -p密码 -h主机 数据库 a -w “sql条件” –lock-all-tables > 路径 mysqldump 还原: 代码如下: mysqldump -u用户名 -p密码 -h主机 数据库 < 路径 mysqldump 按条件导出: 代码如下: mysqldump -u用户名 -p密码 -h主机 数据库 a –where “条件语句” –no-建表> 路径 mysqldump -uroot -p1234 dbname a –where “tag=’88′” –no-create-info> c:\a.sql mysql du 1、 mysqldump 1.1 备份 mysqldump 是采用SQL级别的 备份 机制,它将数据表导成 SQL 脚本文件,在不同的 MySQL 版本之间升级时相对比 较合适,这也是最常用的 备份 方法。现在来讲一下 mysqldump 的一些主要 参数 : --compatible=name 它告诉 mysqldump ,导出的数据将和哪种数据库或哪个旧版本的 MySQL 服务器相兼容。值可以为 ansi、 ... $ time mysqldump --databases ` mysql --skip-column-names -e "SELECT GROUP_CONCAT(schema_name SEPARATOR ' ') FROM information_schema.schemata WHERE schema_name NOT IN (' mysql ','performance_schema','info... mysqldump -u [user name] -p[password] [database name] > [dump file] 一般来说在终端中执行该命令时,-p 参数 后留空,系统会在执行时提示你要输入对应的密码。 如果把这个命令放到脚本里去,-p 参数 后就要填写真实的密码,这样脚本才能正确执行,否则系统会等待用户输入密码直到超时退出。 这里要讲的是, mysql d. 一致性:--single-transaction 全库:--all-databases,-A mysqldump --defaults-file=/etc/my.cnf -uroot -psam123 --single-transaction --master-date=2 --log-error=/tmp/dump.log -A > all.sql 2.忽略导出过程的W...