场景:
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:我之前搜索过这个问题,但我发现的所有帖子都是关于如何缩小数据库,这不是我当前的问题。
答案 0 :(得分:3)
正如mysqldump上的MySQL文档所述(突出显示是我的):
mysqldump客户端实用程序执行逻辑备份,生成一组SQL语句,可以执行这些语句来重现原始数据库对象定义和表数据。
因此,mysqldump不是简单地导出数据,而是将它们写入sql语句。此外,所有数据都以文本形式导出,因此每个数字数据和空值将比数据库中占用更多空间。