首页 > 解决方案 > 还原前减小数据库大小 (mysqldump)

问题描述

我的数据库有一个 42Gb 的 mysqldump(大约 100gb)。我已经在网上搜索过是否有任何方法可以减少数据库的磁盘大小,我的意思是,一旦转储恢复,我希望磁盘大小从 100GB 减少到 87-90Gb 的空间。我还没有找到任何相关信息。

如果有人可以指导我一点,我会很感激。

谢谢

标签: mysqlsql

解决方案


您可以过滤 CREATE TABLE 语句,以便它们在还原时创建压缩表:

sed -e 's/ENGINE=InnoDB/& ROW_FORMAT=COMPRESSED/' dump.sql | mysql ...

另一个想法是在恢复数据之前删除大表中的部分或全部索引。ALTER TABLE <tablename> DROP KEY <indexname>;在 CREATE TABLE 之后和随后的 INSERT 语句之前插入语句。

即使您稍后决定最终需要索引,在加载数据后创建索引通常会导致更紧凑的索引。

删除索引可能会影响一些需要这些索引的查询的性能。但是,如果让数据库更小更重要,那么牺牲多少查询性能取决于您。

我会留给你弄清楚你想如何编辑一个 42GB 的文件。根据您的环境(Mac、Windows、Linux),存在不同的解决方案。


推荐阅读