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

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

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

答案1

使用--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

答案2

正如 LukeR 所说,mysqldump 的 --no-data 选项将执行您想要的操作。

除此之外,这里是我编写的一个备份脚本,它将所有 mysql 数据库转储到纯文本文件中,并为每个数据库的表模式和数据创建单独的转储文件(在没有数据的情况下在另一个 mysql 服务器上恢复或创建表是很常见的,当你已经有一个只使用 CREATE TABLE/CREATE INDEX 等命令的小文件时,这会容易得多)

/bin/bash #!/bin/bash

#备份mysql.sh
#
# 克雷格·桑德斯 <[电子邮件保护]>
# 此脚本属于公共领域。你可以用它做任何你想做的事情。

MYUSER="用户名"
MYPWD="密码"

ARGS="--单一事务--刷新日志--完成插入"

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


BACKUPDIR=/var/备份/mysql

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

DATE="$YEAR-$MONTH/$YEAR-$MONTH-$DAY"

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

对于 $DATABASES 中的 i ;执行
  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" ] ; 那么
        echo 删除旧备份文件:$OLD
        回显 $OLD | xargs rm -rfv

答案3

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

相关内容