如何理解mysqldump备份数据库

这篇文章给大家介绍如何理解MySQLdump备份数据库,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

成都创新互联公司主要从事做网站、网站设计、网页设计、企业做网站、公司建网站等业务。立足成都服务茄子河,十多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575

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


分享名称:如何理解mysqldump备份数据库
文章出自:http://scyanting.com/article/ppicdp.html