MariaDB社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 10097|回复: 12
打印 上一主题 下一主题

[mysqldump] mysqldump命令参数解释

[复制链接]
跳转到指定楼层
1#
发表于 2007-9-3 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[root@DevDBServer mysql]# mysqldump
Usage: mysqldump [OPTIONS] database [tables]
OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR     mysqldump [OPTIONS] --all-databases [OPTIONS]

实用程序,为备份或为把数据转移到另外的SQL服务器上倾倒一个数据库或许多数据库。倾倒将包含 创建表或充实表的SQL语句。

shell> mysqldump [OPTIONS] database [tables]

如果你不给定任何表,整个数据库将被倾倒。

通过执行mysqldump --help,你能得到你mysqldump的版本支持的选项表。

注意,如果你运行mysqldump没有--quick或--opt选项,mysqldump将在倾倒结果前装载整个结果集到内存中,如果你正在倾倒一个大的数据库,这将可能是一个问题。

mysqldump支持下列选项:

--add-locks
在每个表倾倒之前增加LOCK TABLES并且之后UNLOCK TABLE。(为了使得更快地插入到MySQL)。

--add-drop-table
在每个create语句之前增加一个drop table。

--allow-keywords
允许创建是关键词的列名字。这由表名前缀于每个列名做到。

-c, --complete-insert
使用完整的insert语句(用列名字)。

-C, --compress
如果客户和服务器均支持压缩,压缩两者间所有的信息。

--delayed
用INSERT DELAYED命令插入行。

-e, --extended-insert
使用全新多行INSERT语法。(给出更紧缩并且更快的插入语句)

-#, --debug[=option_string]
跟踪程序的使用(为了调试)。

--help
显示一条帮助消息并且退出。
--fields-terminated-by=...
--fields-enclosed-by=...
--fields-optionally-enclosed-by=...
--fields-escaped-by=...
--fields-terminated-by=...

这些选择与-T选择一起使用,并且有相应的LOAD DATA INFILE子句相同的含义。见7.16 LOAD DATA INFILE语法。

-F, --flush-logs
在开始倾倒前,洗掉在MySQL服务器中的日志文件。

-f, --force,
即使我们在一个表倾倒期间得到一个SQL错误,继续。

-h, --host=..
从命名的主机上的MySQL服务器倾倒数据。缺省主机是localhost。

-l, --lock-tables.
为开始倾倒锁定所有表。

-t, --no-create-info
不写入表创建信息(CREATE TABLE语句)

-d, --no-data
不写入表的任何行信息。如果你只想得到一个表的结构的倾倒,这是很有用的!

--opt
同--quick --add-drop-table --add-locks --extended-insert --lock-tables。应该给你为读入一个MySQL服务器的尽可能最快的倾倒。

-pyour_pass, --password[=your_pass]
与服务器连接时使用的口令。如果你不指定“=your_pass”部分,mysqldump需要来自终端的口令。

-P port_num, --port=port_num
与一台主机连接时使用的TCP/IP端口号。(这用于连接到localhost以外的主机,因为它使用 Unix套接字。)

-q, --quick
不缓冲查询,直接倾倒至stdout;使用mysql_use_result()做它。

-S /path/to/socket, --socket=/path/to/socket
与localhost连接时(它是缺省主机)使用的套接字文件。

-T, --tab=path-to-some-directory
对于每个给定的表,创建一个table_name.sql文件,它包含SQL CREATE 命令,和一个table_name.txt文件,它包含数据。 注意:这只有在mysqldump运行在mysqld守护进程运行的同一台机器上的时候才工作。.txt文件的格式根据--fields-xxx和--lines--xxx选项来定。

-u user_name, --user=user_name
与服务器连接时,MySQL使用的用户名。缺省值是你的Unix登录名。

-O var=option, --set-variable var=option
设置一个变量的值。可能的变量被列在下面。

-v, --verbose
冗长模式。打印出程序所做的更多的信息。

-V, --version
打印版本信息并且退出。

-w, --where='where-condition'
只倾倒被选择了的记录;注意引号是强制的!
"--where=user='jimf'" "-wuserid>1" "-wuserid<1"


最常见的mysqldump使用可能制作整个数据库的一个备份:

mysqldump --opt database > backup-file.sql

但是它对用来自于一个数据库的信息充实另外一个MySQL数据库也是有用的:

mysqldump --opt database | mysql --host=remote-host -C database
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 顶 踩
2#
发表于 2007-10-2 00:11:49 | 只看该作者
多谢楼主,mysqldump基本懂了一点.在cmd里备份本地的数据库是比较简单.
执行命令,如:mysqldump -u root -p dataName >c:\qq.sql, 回车后,输入密码是可以在C盘备份dataName的数据库名了.
但问题需要延伸一下又该如何呢?
如:
1.我需要在程序里用shell方式调用mysqldump,又如何输入密码呢?有没有直接把密码也的格式也输进一句里呢?
2.像这句mysqldump -u root -p dataName >c:\qq.sql仅是备份本地的数据,如果我要备份网络上的数据库,
比如,IP:192.168.0.5,端口:8005,用户名:root,密码为:168,该如何写格式,我需要一句搞掂的,我是初学者,请不辞劳苦把整句包括完整的格式写给我吧.谢谢.
3#
发表于 2007-10-2 00:50:45 | 只看该作者
不好意思,自己解决了,如下:
mysqldump -h192.168.0.5 -P 3306 -uroot -p168 --opt dataName >c:\qq.sql
不知道是否完全正确,请指正.
4#
 楼主| 发表于 2007-10-3 00:39:01 | 只看该作者
5#
发表于 2008-11-27 21:37:44 | 只看该作者
奇怪我试验了怎么就是不成功,能不能把细节讲更清楚点,或者举个例子
谢谢
6#
发表于 2008-11-27 21:39:17 | 只看该作者
更mysql版本有关系吗
我的版本是5.0.15b的
7#
发表于 2008-11-27 21:39:47 | 只看该作者
我急着知道,能有人快点告诉我们,谢谢
8#
 楼主| 发表于 2008-11-28 10:29:17 | 只看该作者
有关系的,安装了不同的MySQL版本mysqldump 是不一样的,其功能也有些差异。

如:MySQL4.1中
[root@Server1 root]# mysqldump --version
mysqldump  Ver 10.8 Distrib 4.1.7, for pc-linux (i686)

如:MySQL5.0中
[root@Node01 bin]# mysqldump --version
mysqldump  Ver 10.10 Distrib 5.0.21, for pc-linux-gnu (i686)

其中MySQL5.0中就有
--ignore-table 选项

详细:  注意备份恢复时所用的mysqldump版本
9#
发表于 2008-11-28 11:24:35 | 只看该作者
自己找了很多资料,还以为资料上有错误呢,原来是路径不正确,其实我的版本号是可以的。
终于自己找出原因了,但也花了不少时间,但很值得!
即在CMD命令行下,打入如下命令:
C:\Documents and Settings\Administrator>d:\phpnow\mysql-5.0.15b\bin\mysqldump.exe
-u root -p dataname >c:\shiyan.sql -- 这样才是成功的,可能跟我用的软件有关系,
我是用一键包的(phpnow)。
所以敢请板主能对你的教程再做详细的说明,就是mysqldump的路径问题,这样可以让更多的人少走弯路
也谢谢你的回答,这里是一个不错的学习地!!!
10#
发表于 2008-11-28 11:25:14 | 只看该作者
UP UP UP UP UP UP UP UP !!!!!
11#
 楼主| 发表于 2008-11-28 11:33:38 | 只看该作者
当然了,你的回复就是对上面最好的补充
12#
 楼主| 发表于 2009-2-20 15:21:41 | 只看该作者
备份数据库中的表结构到当前目录下,并形成单表单文件:
mysqldump -uroot -p --opt -d -T ./ DBNAME
13#
发表于 2013-3-15 10:42:07 | 只看该作者
咨询下我执行mysqldump database 之后,没有指定目录,我现在想知道备份的数据库存储在哪里目录下。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|MariaDB社区 ( 京ICP备07012489号    |
业务联系: QQ:48474881; 邮箱: 48474881@qq.com; 电话:13911732319
声明:本站部分文章是网友转载,若未经作者同意或署名有误,请联系网站管理员。

GMT+8, 2024-9-20 07:51 , Processed in 0.077226 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表