mysql - 还原前减小数据库大小 (mysqldump)
问题描述
我的数据库有一个 42Gb 的 mysqldump(大约 100gb)。我已经在网上搜索过是否有任何方法可以减少数据库的磁盘大小,我的意思是,一旦转储恢复,我希望磁盘大小从 100GB 减少到 87-90Gb 的空间。我还没有找到任何相关信息。
如果有人可以指导我一点,我会很感激。
谢谢
解决方案
您可以过滤 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),存在不同的解决方案。
推荐阅读
- list - 在 Mathematica 中更改数据格式
- html - 带有图像的透明径向渐变?
- oracle - 维度表、桥表和事实表连接
- swift - 领域更新不保存
- twilio - 发送一条 Whatsapp/SMS 消息,其中包含从使用 Autopilot 的用户处获得的信息
- c# - 如何在“编辑”和“详细信息”页面之间共享“注释”部分?
- java - 如何获取 .jar 资源路径?
- android - 将嵌套数据类插入 Room db
- node.js - Node.js mssql 错误:不推荐使用繁琐 `config.options.enableArithAbort` 的默认值将从 `false` 更改为 `true`
- r - 使用 plm 前需要声明面板数据吗?