为什么mysqldump会变得如此之大?

时间:2016-11-11 10:00:02

标签: mysql

场景:

MySQL数据库,主要是MyISAM表。 MySQL文件系统的当前权重:

80K ./casin_emails
212K    ./performance_schema
371M    ./casin_info
32K ./percona
572K    ./casin
1.1M    ./mysql
67G .

正如您所注意到的,大部分空间来自ibdata文件

17956960  67G -rw-rw---- 1 mysql mysql  67G Nov 11 11:45 ibdata1
17956940 5.0M -rw-rw---- 1 mysql mysql 5.0M Nov 11 11:45 ib_logfile0
17956939 5.0M -rw-rw---- 1 mysql mysql 5.0M Nov 11 10:44 ib_logfile1

在写这个问题时,mysqldump仍在运行的进程正在写一个14 GB的文件。

所以我的问题可能很明显。如果数据库的当前空间如此之小,为什么mysqldump会创建如此大的文件呢?是ibdata有罪吗?

我想我无法避免mysqldump需要在ibadata上生成某种数据备份的事实,但我只是想确定并知道为什么会发生这种情况。

谢谢!

PS:我之前搜索过这个问题,但我发现的所有帖子都是关于如何缩小数据库,这不是我当前的问题。

1 个答案:

答案 0 :(得分:3)

正如mysqldump上的MySQL文档所述(突出显示是我的):

  

mysqldump客户端实用程序执行逻辑备份,生成一组SQL语句,可以执行这些语句来重现原始数据库对象定义和表数据。

因此,mysqldump不是简单地导出数据,而是将它们写入sql语句。此外,所有数据都以文本形式导出,因此每个数字数据和空值将比数据库中占用更多空间。