如何理解mysqldump备份数据库

68次阅读
没有评论

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

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-27发表,共计8266字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)