本文介绍了如何理解mysqldump备份数据库。内容非常详细。感兴趣的朋友可以参考一下,希望对大家有所帮助。
Mysqldump用于导出mysql数据库的结构和数据。
usage : MySQL dump[选项]数据库[表] #指南表。
或者MySQL dump[选项]-数据库[选项] db1 [DB2 db3.】#指南库。
或者MySQL dump[选项] -全数据库[选项]
默认选项按照给定的顺序从以下文件中读取:
/etc/my . CNF/etc/MySQL/my . CNF/u01/app/MySQL/my . CNF ~/. my . CNF
以下组是read: mysqldump客户端
下列选项可作为第一个参数:
- print-defaults打印程序参数列表并退出。
-否-默认值不要从任何选项文件中读取默认选项。
- defaults-file=#=#从给定文件的默认选项中只读#。
-默认值-额外文件=#-文件=#读取全局文件后读取此文件。
-a -A,-all-数据库导出所有数据库。这与-数据库选择所有数据库相同。
-y -Y,-all-表空间导出所有表空间。
-y -y,-no-表空间不会转储任何表空间信息。
-添加-删除-数据库在每次创建之前添加-添加-删除-数据库。
-添加-删除-表格在每次创建之前添加-添加-删除-表格。(默认情况下打开,使用-跳过-添加-删除-表格禁用)。
-add-lock在INSERT语句周围添加锁。(默认情况下是打开的,通过使用-跳过-添加-锁定来禁用)。
- allow-keywords允许创建列名作为关键字。
-apply-apply-SLAVE-语句在转储底部的“更改主机”和“启动从机”之前添加“停止从机”。
-字符集-dir=命名文件目录的字符集。
-I,-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或更高版本。早期版本的服务器将忽略此选项。
-紧凑减少输出(用于调试)。禁用结构注释和页眉/页脚结构。启用选项-跳过-添加-删除-表格-跳过-添加-锁定-跳过-注释-跳过-禁用-键-跳过-设置-字符集。
-c -c,- complete-insert使用完整的insert语句。
-c,-compress在服务器/客户端协议中使用压缩。
-a -a,- create-options包括所有特定于MySQL的创建选项(默认值为on;使用-跳过-跳过-创建-选项禁用)。
-b,-数据库转储几个数据库。所有名称参数都被视为数据库名称。
-#,-debug [=#]这是非调试版本。抓住这个然后离开。
-调试-检查退出时检查内存和打开文件的使用情况。
况。
--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备份数据库就分享到这里了,希望
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/48247.html