MySQL:备份数据库及数据。

42
我想使用Unix命令行将我的数据库连同表架构和表数据一起导出。
我已经使用过...
mysqldump -d -u root  -p frontend > frontend.sql

但上述命令只转储数据库的模式,而不是数据。

请帮帮我,如何同时转储数据库和数据。


3
你想要的是 mysqldump - fge
9
从"man mysql dump"中的-d选项可以看出,这个选项的作用是不写入表格行信息,也就是不转储表格内容。如果你只想转储表格的CREATE TABLE语句(例如通过加载转储文件创建空表格副本),那么这个选项非常有用。 - Jonathan de M.
7个回答

50
backup: # mysqldump -u root -p[root_password] [database_name] > dumpfilename.sql

这样就可以了,

如果您的要求只是转储数据,那么请选择这个选项,

导出到文件(仅限数据)

mysqldump -u [user] -p[pass] --no-create-db --no-create-info mydb > mydb.sql

@masterofdestiny,你能试一下这个并且如果遇到任何问题请回复我吗? - Mariappan Subramanian
如果您的数据库引擎是InnoDB,建议使用--single-transaction选项。更多信息请参见此处 - FelikZ
我猜这个方法只会创建包含“CREATE TABLE”语句而不包含“CREATE DATABASE”语句的SQL。 - EightT

21

14

你只需要从 mysqldump 命令中移除 -d


1
我曾经苦苦寻找这个能够正常工作的答案。 - Siva Tumma
1
那就是解决方案!+1 - Manuel Quintana
1
这就是解决方案!+1 - Manuel Quintana

3

mysqldump提供了很多选项来从您的数据库中构建适当的备份:

mysqldump [options] db_name [tbl_name ...]
mysqldump [options] --databases db_name ...
mysqldump [options] --all-databases

在这里,您可以找到有关如何使用mysqldump的更多详细信息:

http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html


1

你缺少了 --no-data=False 参数

例如:

mysqldump -d -u root frontend --no-data=False -p > frontend.sql


是的,那是理想的答案。谢谢。 - PHPFan

0

从.sql转储文件还原数据库

mysql -u [yourusername] -p [password] [nameofthedatabase] < /pathtoyoursqldumpfile.sql

使用mysqldump从数据库创建备份。

mysqldump -u [yourusername] -p [password] [nameofthedatabase] > /pathtoyoursqldumpfile.sql


-2

我认为你需要的命令将是mysqldump。请尝试以下操作:

mysqldump -u root -p -h localhost frontend < frontend.sql

frontend.sql为什么要定向到stdin?mysqldump会从stdin读取吗? - eggyal
请检查更新,我已经尝试过了,但只导出了模式。 - masterofdestiny
2
这个回答唯一不好的地方就是数据重定向的方向。。应该是“>”,而不是“<”。。">"将mysqldump的输出重定向到frontend.sql中。。"<"读取frontend.sql并将其重定向到mysqldump的标准输入,但mysqldump不会对其执行任何操作。 - KnF

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接