2011-04-14 81 views
1

我有一个大小约6GB的数据库,它有一个1260万行的表。我试图通过对数据库中导出到一个SQL转储:mysqldump做部分备份 - 不完整的表转储

的mysqldump -u根-p DB_NAME> db_name.sql

当命令完成后,导出的SQL转储文件只是2GB和主表了仅输出约100万行。

什么可能是错的?

回答

7

还有就是由于某种原因,来解决这个问题最简单的方法了2GB大小限制使用split

mysqldump ... | split -b 250m - filename.sql- 

您也可以压缩文件是这样的:

mysqldump ... | gzip -9c | split -b 250m - filename.sql.gz- 

恢复从非压缩文件中执行此操作:

cat filename.sql-* | mysql ... 

对于压缩d文件:

cat filename.sql-* | zcat | mysql ... 

当然,如果你想有一个单一的文件,然后,可以tar结果。

显然,如果您愿意,您可以用不同的尺寸替换250m

+0

这是一个很好的解决方法,但我强烈建议您将数据转储到可处理任意大小文件的位置。否则,你正在寻找头痛。它应该像处理较大文件的文件系统重新格式化一样简单。 – Mikecito 2011-04-14 03:32:15

+0

命令中的'...'连接到数据库并选择表格,就像您在原始文章中所用的那样。 – 2011-04-14 03:32:34

+0

我不知道重新格式化文件系统总是一个非常简单的选择。 – 2011-04-14 03:33:16

0

您的文件系统可能仅限于2GB文件。

+0

可能不足以压缩它 – 2011-04-14 03:31:11

0

发生这种情况是因为某些SQL转储的转储数据大小有限。 如果超出限制,则无法转储数据库。

如果你真的想这样做,你必须压缩数据库。通过使用ZIP,GZIP等。在倾销数据之前。