配置 MySQL 服务器以最小化磁盘使用量

配置 MySQL 服务器以最小化磁盘使用量

我有一台 Raspberry PI 计算机,上面有一些测量设备和一个脚本,该脚本每五分钟进行一次测量并将结果存储在 MySQL 数据库中。我已配置 MySQL 服务器以将数据库保存在外部 USB HDD 上,以最大限度地减少用作 Rpi 中根文件系统的 SD 卡的磨损。

每五分钟保存在我的 HDD 上的全部数据仅包含几个数字 - 结果就是两个数字、时间戳和作为 MySQL 表主键的 id - 但每当有新数据可用时,MySQL 服务器都会将其写入磁盘。这导致磁盘每五分钟旋转一次,从而增加电量使用并磨损 HDD。有没有办法配置 MySQL 以将一些数据缓存在 RAM 中,直到有足够的数据写入 HDD?我假设默认配置针对短时间内大量数据和断电等情况下的可靠性进行了优化,但实际上我并不关心这两者。即使发生断电(不太可能),如果我错过一些不必要的结果也不会成为问题。

我查看了 MySQL 文档并在 Google 上搜索过它,但所有有关 MySQL 和磁盘使用的资源似乎都集中在增加 HDD 吞吐量或对其进行优化以实现快速响应时间。

如果它很重要,mysqld -V则返回:

mysqld  Ver 5.5.46-0+deb7u1 for debian-linux-gnu on armv7l ((Debian))

编辑:

我确实意识到我在这里使用 MySQL 有点像使用金锤一样 - MySQL 从未考虑过我的应用程序。也许有人可以提出一个替代解决方案来解决我的问题,而这个解决方案需要类似的工作量来设置。

答案1

答案2

我找到了一种解决我的问题的方法,它不依赖于服务器的配置,而是依赖于数据库方案。我创建了具有engine=memory存储设置的附加阵列,我的测量过程在其中添加了数据。我还添加了一个 cron 作业,将数据从这个临时表移动到磁盘支持的表中。它每隔几个小时运行一次,并且在系统关闭时运行一次,所以我认为我不太可能丢失太多数据。我还需要通过从两个表中选择并使用“UNION”合并结果集来修改我的 SQL 查询。

对于想要最小化 MySQL 磁盘访问的每个人来说,这种设置可能并不适用,如果我找到另一个解决方案(包括网络透明且允许简单查询的不同数据库服务器),可以配置为尽可能少地使用 HDD,我会在这里发布它。

相关内容