减少 MySQL 数据库大小的选项

减少 MySQL 数据库大小的选项

我有一个 88.9 GB 的 MySQL 5.0 数据库,位于一个 90GB 的驱动器上。该数据库包含许多 MyISAM 表,用于我们的(自定义)系统使用情况报告。数据是基于日期的聚合,本质上是 Web 服务器日志。

我考虑将大表转换为 MERGE 存储引擎。这样我就可以把旧数据移到另一个驱动器。但是,我以前从未这样做过,而且对在生产数据库上进行测试有点紧张。

当然,我的时间很紧张。我必须尽快处理上个月的所有报告数据。因此,目前安装更大的驱动器不是一个选择。

有人能分享一些关于减少这个数据库大小的建议或经验吗?

答案1

是否存在一些您实际上并未使用的索引?

答案2

好吧...这篇文章已经很久了...但是...我认为如果它完整的话会更好

当我必须将 mysql 数据库移动到另一个分区时,我会这样做:

/etc/init.d/mysql stop
rsync -avz /var/lib/mysql/ /mnt/anotherdisk/mysql/
mv /var/lib/mysql/ /var/lib/mysql_original/
ln -s /var/lib/mysql/ /mnt/anotherdisk/mysql/
/etc/init.d/mysql start

一天/一周/一个月/WhenIRememberOrCan 之后,我对 /var/lib/mysql_original/ 进行了备份,然后删除了该文件夹。

答案3

如果您已经考虑将数据移至更大的分区,则可以选择性地移动较大的表并将它们符号链接回数据库目录。这样做有一些缺点,但它们已在文档中注明。这样做的好处是可以轻松撤消(假设您的表仍适合旧分区)。

MySQL 中的符号链接

答案4

您准备重写该应用程序吗?

OPTIMIZE TABLE 将重建表以消除“漏洞”。这可能会节省大量空间,也可能根本不节省空间,具体取决于它们已经达到的优化程度。但是,这对于大型表来说非常慢,并且会占用大量临时空间。

删除索引,将 PACK_KEYS 添加到表,这些将减少索引的大小,但同样,这涉及重建并使用临时空间。

您是否查看过索引与数据的大小?

听起来你的服务器已经满了,你实际上无法做任何工作。

解决方案:使用监控来确保您的服务器将来永远不会变得如此满,因为当您到达这个阶段时,它已经无望了。

短期内,将所有东西转移到一个更大的盒子里。

相关内容