如何在MySQL中备份表结构而不备份数据


20

我正在使用MySQL Administrator进行数据库备份。我可以用其所有表完美地备份整个数据库。有些表的尺寸很大,所以我想知道是否只能备份表的结构(仅备份元素)而不备份数据。

Answers:


40

使用--no-data带有mysqldump 的开关来告诉它不要转储数据,仅转储表结构。

这将为表输出CREATE TABLE语句。

像这样

mysqldump --no-data -h localhost -u root -ppassword mydatabase > mydatabase_backup.sql

要定位特定的表,请在数据库名称后输入它们。

mysqldump --no-data -h localhost -u root -ppassword mydatabase table1 table2 > mydatabase_backup.sql

http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html#option_mysqldump_no-data

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


+1看起来不错。
大卫·帕什利

非常感谢LukeR。我可以解决。在撰写本文时,我什至对mysqldump都不了解,但是我可以使用--no-data开关解决问题。然后我还在MySQL Administrator中找到了该表的“ CREATE SCRIPT”,因此我也可以使用此替代方法解决此问题。

3

正如LukeR所说,mysqldump的--no-data选项将完成您想要的。

除此之外,这是我编写的一个备份脚本,该脚本将所有mysql数据库转储为纯文本文件,并为每个数据库的表架构和数据创建单独的转储文件(通常要在没有mysql服务器的情况下还原或创建表)数据,如果只用CREATE TABLE / CREATE INDEX等命令已经有了一个小文件,这将变得容易得多)

#!/ bin / bash

#backup-mysql.sh
#
#克雷格·桑德斯<cas@taz.net.au>
#此脚本在公共领域中。用它做任何你想做的。

MYUSER =“ USERNAME”
MYPWD =“ PASSWD”

ARGS =“-单一交易--flush-logs --complete-insert”

数据库= $(mysql -D mysql --skip-column-names -B -e'显示数据库;'| egrep -v'information_schema');


BACKUPDIR = / var / backups / mysql

YEAR = $(日期+“%Y”)
MONTH = $(日期+“%m”)
DAY = $(日期+“%d”)

DATE =“ $ YEAR- $ MONTH / $ YEAR- $ MONTH- $ DAY”

mkdir -p $ BACKUPDIR / $ DATE
cd $ BACKUPDIR / $ DATE

为我在$ DATABASES; 做
  echo -n“正在备份$ i:模式...”
  mysqldump $ ARGS --no-data -u $ MYUSER -p $ MYPWD $ i> $ i.schema.sql

  echo -n“数据...”
  mysqldump $ ARGS --skip-opt --no-create-db --no-create-info -u $ MYUSER -p $ MYPWD $ i> $ i.data.sql

  echo -n“正在压缩...”
  gzip -9fq $ i.schema.sql $ i.data.sql
  回声“完成”。
完成

#删除30天以上的备份文件
OLD = $(找到$ BACKUPDIR -type d -mtime +30)
如果[-n“ $ OLD”]; 然后
        回声删除旧的备份文件:$ OLD
        echo $ OLD | xargs rm -rfv
科幻

非常感谢Craig的回答!我刚从LukeR那里得到答案。感谢您的脚本,它是一个很好的参考。

我可以建议添加--routines到模式脚本吗?
乔纳森

0

您还可以通过mysql命令行界面手动执行此操作,DESCRIBE <tablename>然后复制并粘贴结果。


DESCRIBE不会为您提供可以复制和粘贴的内容。将显示创建表。
David Pashley 09年

它不是CREATE语句需要的内容的转储,但确实显示了列的类型和关系
warren
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.