共计 8266 个字符,预计需要花费 21 分钟才能阅读完成。
这篇文章给大家介绍如何理解 mysqldump 备份数据库,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
mysqldump 用于导出 mysql 数据库的结构和数据。
Usage: mysqldump [OPTIONS] database [tables] #导表
OR mysqldump [OPTIONS] –databases [OPTIONS] DB1 [DB2 DB3…] #导库
OR mysqldump [OPTIONS] –all-databases [OPTIONS]
默认选项按照给定顺序从以下文件读取:
/etc/my.cnf /etc/mysql/my.cnf /u01/app/mysql/my.cnf ~/.my.cnf
The following groups are read: mysqldump client
The following options may be given as the first argument:
–print-defaults 打印程序参数列表并退出。
–no-defaults 不要从任何选项文件读取默认选项。
–defaults-file=# 只读从给定文件的默认选项 #.
–defaults-extra-file=# 读取全局文件后读取此文件.
-A, –all-databases 导出所有数据库. 这和 –databases 选择所有数据库相同
-Y, –all-tablespaces 导出所有表空间
-y, –no-tablespaces 不转储任何表空间信息.
–add-drop-database 在每次创建之前添加一个 DROP DATABASE.
–add-drop-table 在每次创建之前添加 DROP TABLE.(默认开启,使用 –skip-add-drop-table 将其禁用)
–add-locks 在 INSERT 语句周围添加锁定.(默认开启,使用 –skip-add-locks 将其禁用 )
–allow-keywords 允许创建作为关键字的列名称.
–apply-slave-statements 在“CHANGE MASTER”和“START SLAVE”之前添加“STOP SLAVE”到转储底部。
–character-sets-dir=name 文件名录的字符集
-i, –comments 注释信息 (默认开启,使用 –skip-comments 将其禁用)
–compatible=name 将转储更改为与给定模式兼容。默认情况下,表以适合 MySQL 的格式转储。合法的模式是:ansi,mysql323,mysql40,postgresql,oracle,mssql,db2,maxdb,no_key_options,no_table_options,no_field_options。可以使用由逗号分隔的几种模式。注意:需要 MySQL 服务器版本 4.1.0 或更高版本。早期服务器版本将忽略此选项。
–compact 减少输出(适用于调试)。禁用结构注释和页眉 / 页脚结构。启用选项 –skip-add-drop-table –skip-add-locks –skip-comments –skip-disable-keys –skip-set-charset。
-c, –complete-insert 使用完整的 insert 语句
-C, –compress 在服务器 / 客户端协议中使用压缩。
-a, –create-options 包括所有 MySQL 特定的创建选项(默认为 on; 使用 –skip-create-options 禁用)。
-B, –databases 转储几个数据库。所有名称参数都被视为数据库名称。
-#, –debug[=#] 这是一个非调试版本。捕捉这个并退出。
–debug-check 检查内存并在退出时打开文件使用情况。
–debug-info 在退出时打印一些调试信息。
–default-character-set=name 设置默认字符集。
–delayed-insert 使用 INSERT DELAYED 插入行。
–delete-master-logs 在备份后删除主服务器上的日志。这会自动启用 –master-data。
-K, –disable-keys /*!40000 ALTER TABLE tb_name DISABLE KEYS */; and
/*!40000 ALTER TABLE tb_name ENABLE KEYS */; will be put
in the output.
–dump-slave[=#] (默认为 on; 使用 –skip-disable-keys 禁用。)这将导致主站的二进制日志位置和文件名附加到转储数据输出。将值设置为 1,将在转储数据输出中作为 CHANGE MASTER 命令打印; 如果等于 2,该命令将以注释符号作为前缀。该选项将打开 –lock-all-tables,除非指定了 –single-transaction(在这种情况下,全局读锁定只在转储开始时进行一小段时间 – 不要忘记阅读 –single-transaction 下面)。在所有情况下,对日志的任何操作将发生在 dump 的确切时刻.Option 会自动关闭 – 锁定表。
-E, –events 转储事件。
-e, –extended-insert 使用包含多个 VALUES 列表的多行 INSERT 语法(默认为 on; 使用 –skip-extended-insert 禁用)。
–fields-terminated-by=name 终止符
–fields-enclosed-by=name 分隔符
–fields-optionally-enclosed-by=name 字段可选分隔符
–fields-escaped-by=name 转义字符
-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 即使错误也继续执行
-?, –help 查看帮助信息
–hex-blob 以十六进制转储二进制文件
-h, –host=name 连接主机
–ignore-table=name 不备份指定的表。要指定要忽略的多个表,请多次使用指令,每个表使用一次。每个表必须同时指定数据库和表名,例如,– ignore-table = database.table。
–include-master-host-port 在使用 –dump-slave 生成的转储中添加 MASTER_HOST = host,MASTER_PORT = port 到 CHANGE MASTER TO ..。
–insert-ignore 使用 INSERT IGNORE 插入行。
–lines-terminated-by=name 行终止符
-x, –lock-all-tables 备份期间锁定所有表,通过添加全局锁来实现。会自动关闭 –single-transaction 和 –lock-tables off.
-l, –lock-tables 锁定所有表(默认开启,使用 –skip-lock-tables 禁用)
–log-error=name 错误日志文件
–master-data[=#] 这将导致二进制日志位置和文件名附加到输出。如果等于 1,将其作为 CHANGE MASTER 命令打印; 如果等于 2,该命令将以注释符号作为前缀。此选项将打开 –lock-all-tables,除非指定了 –single-transaction(在这种情况下,全局读锁定只在转储开始时进行很短的时间; 不要忘记阅读 –single-transaction)。在所有情况下,对日志的任何操作都将发生在转储的确切时刻。选项自动关闭 –lock-tables。
–max-allowed-packet=# 发送到服务器或从服务器接收的最大包长度。
–net-buffer-length=# 用于 TCP / IP 和套接字通信的缓冲区大小。
–no-autocommit 使用 autocommit / commit 语句来封装表。
-n, –no-create-db 不使用 CREATE DATABASE … IF EXISTS 语句,如果给出 –all-databases 或 –databases,则通常为每个转储的数据库输出。
-t, –no-create-info 不写表的信息
-d, –no-data 不导出数据
-N, –no-set-names 不设置字符集,与 –skip-set-charset 一样
–opt 与 –add-drop-table, –add-locks, –create-options,–quick, –extended-insert, –lock-tables, –set-charset,and –disable-keys. Enabled by default, disable with–skip-opt 一样.
–order-by-primary 如果存在主键或者唯一键,则按此类键进行排序。在转储从 MyISAM 到 InnoDB 表会很有用,但会使转储本身需要更长的时间。
-p, –password[=name] 密码
-P, –port=# 连接端口
–protocol=name 连接协议 (tcp, socket, pipe,
memory).
-q, –quick 不要缓冲查询,直接转储到 stdout(默认为 on; 使用 –skip-quick 禁用)。
-Q, –quote-names 引号表和带有反引号(`)的列名(默认为 on; 使用 –skip-quote-names 禁用)。
–replace 使用 REPLACE INTO 而不是 INSERT INTO。
-r, –result-file=name 直接输出到给定文件。此选项应在使用回车换行对(\ r \ n)分隔文本行的系统(例如,DOS,Windows)中使用。此选项确保只使用单个换行符。
-R, –routines 转储存储例程(函数和过程)。
–set-charset 将“SET NAMES default_character_set”添加到输出。(默认为 on; 使用 –skip-set-charset 禁用)。
–single-transaction 通过在单个事务中转储所有表来创建一致的快照。仅适用于存储在支持多版本的存储引擎中的表(当前只有 InnoDB); 转储不保证对于其他存储引擎是一致的。当单事务转储正在进行时,为了确保有效的转储文件(正确的表内容和二进制日志位置),没有其他连接应该使用以下语句:ALTER TABLE,DROP TABLE,RENAME TABLE,TRUNCATE TABLE,as 一致的快照不与它们隔离。选项自动关闭 –lock-tables.
–dump-date 将转储日期放在输出结尾。(默认开启; 使用 –skip-dump-date 禁用.)
–skip-opt 禁用 –opt. Disables –add-drop-table, –add-locks,
–create-options, –quick, –extended-insert,
–lock-tables, –set-charset, and –disable-keys.
-S, –socket=name 连接用的 socket
-T, –tab=name 为每个给定路径的表创建制表符分隔的文本文件。(创建.sql 和.txt 文件。)注意:这仅在 mysqldump 在与 mysql 服务器相同的机器上运行时才有效。
–tables 覆盖选项 –databases(-B)。
–triggers 转储每个转储表的触发器.(默认为 on; 使用 –skip-triggers 禁用)。
–tz-utc SET TIME_ZONE = 转储顶部的 + 00:00,以便当服务器在不同时区中的数据在不同时区的服务器之间移动时允许转储 TIMESTAMP 数据(默认为 on; use –skip- tz-utc 禁用。)
-u, –user=name 用户名.
-v, –verbose 打印各个阶段的信息.
-V, –version 输出版本信息并退出。
-w, –where=name 导出查询条件中的数据
-X, –xml 使用 XML 格式
–plugin-dir=name 客户端插件目录
–default-auth=name 使用的默认认证客户端插件。
Variables (–variable-name=value)
and boolean options {FALSE|TRUE} Value (after reading options)
——————————— —————————————-
all-databases FALSE
all-tablespaces FALSE
no-tablespaces FALSE
add-drop-database FALSE
add-drop-table TRUE
add-locks TRUE
allow-keywords FALSE
apply-slave-statements FALSE
character-sets-dir (No default value)
comments TRUE
compatible (No default value)
compact FALSE
complete-insert FALSE
compress FALSE
create-options TRUE
databases FALSE
debug-check FALSE
debug-info FALSE
default-character-set utf8
delayed-insert FALSE
delete-master-logs FALSE
disable-keys TRUE
dump-slave 0
events FALSE
extended-insert TRUE
fields-terminated-by (No default value)
fields-enclosed-by (No default value)
fields-optionally-enclosed-by (No default value)
fields-escaped-by (No default value)
flush-logs FALSE
flush-privileges FALSE
force FALSE
hex-blob FALSE
host (No default value)
include-master-host-port FALSE
insert-ignore FALSE
lines-terminated-by (No default value)
lock-all-tables FALSE
lock-tables TRUE
log-error (No default value)
master-data 0
max-allowed-packet 25165824
net-buffer-length 1046528
no-autocommit FALSE
no-create-db FALSE
no-create-info FALSE
no-data FALSE
order-by-primary FALSE
port 0
quick TRUE
quote-names TRUE
replace FALSE
routines FALSE
set-charset TRUE
single-transaction FALSE
dump-date TRUE
socket (No default value)
tab (No default value)
triggers TRUE
tz-utc TRUE
user (No default value)
verbose FALSE
where (No default value)
plugin-dir (No default value)
default-auth (No default value)
—————————————————————————————————–
1、导单表
mysqldump -uroot -p mysql user;
2、导单库
mysqldump -uroot -phwj3509 –databases hwj test.sql
3、导多表
mysqldump -uroot -p mysql user proc test.sql
4、导多库
mysqldump -uroot -p –databases hwj 51vj test.sql
5、增量备份
mysqldump 下实现增量备份,其实是靠 mysqldump 全备和 binlog 日志实现,通过在 mysqldump 命令中添加 –flush-logs 来生成新的日志。恢复时使用 mysqlbinlog 进行恢复。
mysqldump -uroot -phwj3509 –single-transaction –flush-logs –master-data=2 –all_databases backup.sql;
关于如何理解 mysqldump 备份数据库就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。