dump命令详解 mysql_mysqldump命令使用详解

· --compress,-C:在客户端与服务器都支持的压缩算法中,选择压缩数据进行通信。

· --create-options:在CREATE TABLE语句包含所有表选项。

· --database,-B:备份制定数据库。一般来说,mysqld对待name参数时,第一个参数作为数据库名,紧随其后的作为表名。但是在使用这个选项时,会将所有name参数作为数据库名进行备份。在每一个数据库备份前都会添加CREATE DATABASE 与 USE指令。

· --debug=[debug_options],-# [debug_options] :写入debug日志,常用debug_options使用字符串 d:t:o,filen_ame,默认值为d:t:o,/tmp/mysqldump.trace

· --debug-check:在程序退出时打印debug信息。

· --debug_info:在程序退出时打印内存、CPU使用状态至debug信息中。

· --default-auth=plugin:对客户端身份验证插件的使用提示。此特性5.5.9开始加入。

· --default- character-set=charset_name:使用charset_name作为字符集。

· -- defaults-extra-file=file_name:读取选项文件作为全局选项(Unix环境),并在用户选项之前生效。如果文件不存在或由于权限致使无法访问,则会产生错误。在MySQL5.5.8之前必须使用绝对路径。5.5.8之后可以使用相对路径。

· --defaults-file=file_name:仅使用默认选项文件。如果文件不存在或由于权限致使无法访问,则会产生错误。在MySQL5.5.8之前必须使用绝对路径。5.5.8之后可以使用相对路径。

· --defaults-group-suffix=str:Read不仅使用通常的组名,而且也支持定义组别名。举例:mysqldump通常会读取[client]与[mysqldump]的组。如果给出了--defaults-group-suffix=str,mysqldump也会读取[client_ohter]与[mysqldump_other]组。

· --delayed-insert:在INSERT时会使用INSERT DELAYED

· --delete- mastelogs:在主从架构中,会使用PURGE BINARY LOG指令来删除主服务器中的从服务器备份的二进制日志。这个选项会自动启用 --master-data

· --disable-keys,-K:在每一个表中的INSERT都会使用 /*!40000 ALTER TABLE tbl_name DISABLE KEYS */  /*!40000 ALTER TABLE tbl_name ENABLE KEYS */包起来。这样可以使得还原时速度更快,因为索引信息在所有INSERT操作之后才会建立,这个选项只会影响MyISAM表的 nonunique 索引,对其他引擎不生效。

· --dump-date:如果给出了--comments选项,mysqldump会在备份文件的结尾处添加-- Dump completed on DATE。然而,由于在备份时,会消耗时间所以为产生不同的日期。--dump-date与--skip-dump-date控制如何记录日期,默认为--dump-date,日期包含在 comment中,--skip-dump-date支持阻止时间打印。

· --dump-slavel=[value]:这个选项与--master-data相似(除包含主从关系外),它会引起备份输出至从服务器的二进制日志(包含有CHANGE MASTER TO指令)主服务器则会替换。

--dump-slave:协调主从服务器就像使用--master-data选项。但是会引起--master-data失效。这个选项的值像是挂起--master-data的行为(不传入值或者1,CHANGE MASTER TO,设置为2会导致SQL被包起来)而且与之具有相同效应。这个选项会引起mysqldump在备份前停止停止slave SQL线程,而后重启。也可以结合--dump-slave --applay-slave-statements 与 --include-master-host-port使用。此特性在MySQL5.5.3被引入。

· --events,-E:使用事件调度器完成备份,但是需要数据库相关权限。

· -- extended-insert, -e:会使用列表写入INSERT,即一条语句插入多个值,这样会是备份文件更小。

· --fields-terminated-by=..., --fields-enclosed-by=..., --fields-optionally-enclosed-by=..., --fields-escaped-by=...:这些选项配合使用--tab选项卡而且要具备对应含义的FIELDS列作为LOAD TATA INFILE

· --first-slave:已弃用!使用--lock-all-tables代替。 此指令在MySQL5.5.3被启用。

· --flush-logs,-F:在备份前刷新MySQL服务器的日志,此选项需要RELOAD权限。如果你在--all-databases情景下使用此选项,则会在每个数据库时刷新logs。 --lock-all-tables, --master-data, or (as of MySQL 5.5.21) --single-transaction时:日志只会被刷新一次,执行时会加表锁。如果你想在备份时刷新日志,--lock-all-tables, --master-data, or --single-transaction.配合此选项使用。

· --flush-privileges:在备份文件中添加执行FLUSH PRIVILEGES指令。如果你需要备份mysql库来回复某些权限时应当使用此选项。

· --force,-f:及时在备份表出现错误时依然继续执行。这个选项的使用场景之一是:在备份时出现错误,因为表已被删除。如果不使用此选项,mysqldump则会存在错误信息。如果使用,则会将错误信息打印出来后继续执行SQL指令。

· --enable-cleartext-plugin:开启cleartext插件。此特性在MySQL5.5.7时引入。

· --host=name,-h host_name:从给出的主机名备份,如果没给出,则默认为localhost

· --hex-blob:包含有二进制信息的列将会由十六进制输出(比如,‘abc’,将会输出为 0x616263,受影响的数据类型:BINARY, VARBINARY, the BLOB types, and BIT

· --include-master-host-port:在从服务器上的CHANGE MASTER TO 指令将会由--dump-slave选项备份,MASTER_HOST,MASTER_PORT指TCP/IP端口。此特性在MySQL5.5.3引入

· --ignore-table=db_name.tbl_name:忽略要被备份的表,如果忽略多个则需要使用多次此选项,此选项还可以忽略VIEW。

· --insert-ignore:使用INSERT IGNORE 代替INSERT

· --lines-terminated-by=...:这个选项在LOAD DATA INFILE使用对应意义的--tab作为LINES列

· --lock-all-tables, -x:在备份时添加全局锁。此选项会自动关闭--single-transaction and --lock-tables.

· --lock-tables, -l:对于每个数据库,都会在备份之前锁所有表。在MyISAM表会施加READ LOCAL。对于Innodb这种带有事物的引擎,--single-transaction可能是更好的选择。

· --log-error=file_name:将错误记录到指定file_name,默认不记录。

· --master-data[=value]:使用此选项可以将主服务器转储为备份文件,使用另外一台服务器还原时依然可以作为主服务器。但是这些服务器应该是从服务器还原之后再还原主服务器。如果选项值是2,CHANGE MASTER TO 被编写为一个SQL注释,因此只是信息;它转储文件还原时没有影响。如果选项值是1,该声明是没有写评论和生效当转储文件重新加载。如果没有指定选项值,默认值是1。此选项要求具备 RELOAD而且要开启二进制日志。

--master-data选项会默认关闭--lock-tables,而且默认打开 --lock-all-tables,但是 --lock-all-tables除外。在一种情况下:在开始备份前会需要一些时间添加全局读锁。如论如何,logs会详细记录dump时刻。

如果备份的主服务器含有从服务器时,也可能建立一个从服务器。在MySQL5.5.3或以上版本时,你可以使用--dump-slave,但是如果同时存在时会覆盖--master-data选项。在MySQL5.5.3之前,使用如下规则来备份:

1.停止从服务器获取当前状态

mysql> STOP SLAVE SQL_THREAD;

mysql> SHOW SLAVE STATUS;

2.从SHOW SLAVE STATUS指令输出的内容中与主服务器对应的新从服务器的二进制日志应该开始替换Relay_Master_Log_File and Exec_Master_Log_Pos表示file_name与file_pos

3.备份从服务器

shell> mysqldump --master-data=2 --all-databases > dumpfile

4.重启从服务器

mysql> START SLAVE;

5.在新的从服务器上导入数据

shell> mysql < dumpfile

6.在新的从服务器上设置主服务器信息

mysql> CHANGE MASTER TO

-> MASTER_LOG_FILE = 'file_name', MASTER_LOG_POS = file_pos;

CHANGE MASTER TO指令可能还需要其他参数,比如MASTER_HOST指向当前从服务器对应的主服务器。添加其他必要参数

· --no-autocommit:在执行INSERT时关闭自动提交,即autocommit = 0 ,使用 COMMIT

· --no-create-db, -n:在给出--databases 或 --all-databases选项时,不执行CREATE DATABASE 指令

· --no-create-info, -t:在创建备份的表示,不执行CREATE TABLE。注意:不过此选项不排除mysqldump时会在日志文件中记录文件组与表空间,可是,你可以使用--no-tablespaces来完成。

· --no-data, -d:不会在表中记录信息。这就在你只想CREATE TABLE时就很有用了(比如,只想备份表结构)

· --no-defaults:不读取选项文件,如果程序因为读取未知文件而失败可以使用此选项避免读取。

· --no-set-names, -N:此选项与--skip-set-charset.效果相同。

· --no-tablespaces, -y:CREATE LOGFILE GROUP与CREATE TABLESPACE指令不会被写进备份文件。

· --opt:相当于 --add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset,它提供了一个快速备份和还原的功能。

· --order-by-primary:备份表时会根据主键或第一个不重复的索引排序。如果索引存在,这就使得从一个MyISAM表向Innodb表导入时很方便了,不过这也会使备份时需要计算的时间更长。

· --password[=password], -p[password]:连接数据库的密码。如果使用短标签时,在密码与p之间不要有空格,如果你省略了password的值,mysqldump会提示输入。为了安全起见,当然你也可以在选项文件中提供,避免使用时输入。

· --pipe, -W:在Windows中,是通过管道连接MySQL服务器。这个选项提供了只有MySQL服务器提供的管道连接。

· --plugin-dir=dir_name:你插件的文件夹。如果--default-auth时,mysqldump不会去寻找。

·--port=port_num, -P port_num:TCP/IP使用的端口号。

· --print-defaults:在输出的文件中打印程序名与选项。

· --protocol={TCP|SOCKET|PIPE|MEMORY}:使用此选项你可以指定传输方式。

· --quick, -q:在备份数据量比较大的表时有用。会将数据读入内存,在输出完成之前会存在内存缓冲区。

· --quote-names, -Q:会将逃逸字符进行转义,“‘” '"'会换位'`',如果是ANSI_QUOTES SQL模式支持的话,会转为‘"‘’,此选项默认启动,如果需要关闭,可以使用--skip-quote-names。

· --replace:使用REPLACE代替INSERT。

· --result-file=file_name, -r file_name:直接输出到指定的文件。创建结果文件及其之前的内容覆盖,即使发生错误而生成转储。这个选项应该在Windows上使用,以防止换行符“\ n”字符被转换为“\ r \ n”回车/换行符序列

` --routines, -R:包括存储程序(过程和函数)的倾倒数据库输出。这个选项需要mysql.proc表的SELECT权限。使用,例程生成的输出包含创建过程和创建函数语句创建例程。然而,这些语句不包括属性,如例程创建和修改时间戳,所以当例程.重新加载,创建时间戳等于重新加载时间。如果你需要创建例程和原来的时间戳属性,不使用,例程。相反,转储和重载mysql的内容。proc直接表,使用MySQL账户有合适的MySQL数据库特权。

· --set-charset:在输出的文件中添加SET NAMES 指定,此选项是默认的,如需关闭可使用--skip-set-charset。

· --shared-memory-base-name=name:在Windows上,所使用的共享内存的名字,使用共享内存连接到本地服务器。默认值是MYSQL。共享内存名称是区分大小写的。服务器必须启动——共享内存选项来启用共享内存连接。

· --single-transaction:这个选项设置事务隔离模式可重复读取和发送一个开始事务服务器的SQL语句,并把数据。是有用的只有InnoDB等事务性表,因为它转储的一致状态数据库事务开始时发布不阻止任何应用程序。当使用这个选项,你应该记住,只有InnoDB表在一个一致的状态。例如,任何MyISAM表或内存倾倒在使用这个选项可能仍然改变状态。

——单独的事务转储是在过程,以确保一个有效的转储文件和二进制日志坐标)(正确的表内容,没有其他的连接应使用以下语句:ALTER table,创建表,删除表,重命名表,截断。目的是为了保持一致性。这也会添加表锁。

此选项支持MySQL集群,结果不能保证因为NDBCLUSTER一致存储引擎只支持READ_COMMITTED事务隔离级别。你应该总是使用NDB备份和恢复。

在备份很大的表时,结合--quick与此选项使用。

· --skip-comments:参照--comments

· --skip-opt:参照--opt。

· --socket=path, -S path:在与本机通信时,Unix系统会基于Unix sock file进行通信,Windows基于pipe。

· --ssl*:使用ssl加密通信数据

· --tab=dir_name, -T dir_name:产生制表符分隔的文本格式的数据文件。对于每个转储表,,mysqldump创建一个tbl_name。sql文件,其中包含CREATE TABLE语句创建表,和服务器tbl_name写道。txt文件,其中包含数据的选项值是编写的文件的目录。

此选项只应该在MySQL服务器备份时使用。

·  --tables:--databases后使用,此选项会使mysqldump将之后参数视为表名。

· --triggers:会在导出每个表时都导出触发器,不过需要具有TIGGER的权限,此选项默认启用。

· --tz-utc:默认启用,禁用可以使用--skip-tz-utc。此为时区信息。

· --user=user_name, -u user_name:连接MySQL服务器使用的用户名

· --verbose, -v:verbose模式,此模式会输出更多有关程序的信息。

· --version, -V:显示版本信息并退出程序。

· --where='where_condition', -w 'where_condition':备份时使用where条件

· --xml, -X:输出为xml格式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值