千家信息网

如何理解mysqldump备份数据库

发表于:2024-10-03 作者:千家信息网编辑
千家信息网最后更新 2024年10月03日,这篇文章给大家介绍如何理解mysqldump备份数据库,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。mysqldump 用于导出mysql数据库的结构和数据。Usage: mys
千家信息网最后更新 2024年10月03日如何理解mysqldump备份数据库

这篇文章给大家介绍如何理解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 = ,MASTER_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备份数据库就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

0