如何从嵌入式设备上的MySQL数据库损坏中恢复?

时间:2015-12-10 08:19:57

标签: mysql database embedded

设置

  • 运行Linux的嵌入式设备
  • 存储在闪存存储上的MySQL数据库(使用InnoDB存储引擎)
  • 通过PoE或“电网”供电
  • 设备没有开/关开关,例如在断开电源之前,没有人可以或将关闭系统

问题

  • 当电源丢失或在不良时刻断开连接时(即当DB更改处于持续存在状态时),数据库可能已损坏。数据库通常可以恢复 - 有时它不能恢复。
  • 闪存存储量相当小,因此频繁运行完整备份(例如每小时)会使存储过快耗尽。

目标

如果数据库损坏,我希望系统自动恢复。应尽可能避免手动恢复数据库(但可以作为最后的手段,这已经实现)。

研究思路我找不到太多详细信息。大多数情况下,我发现了如何尽可能地防止数据丢失的建议。我还发现了非常一般的建议,如重复数据存储,错误检测和纠正,......

但我的问题是该怎么做 IF 实际发生数据损坏。

  • 将数据库复制到另一个数据库中:如果主数据库损坏,则自动回退(替换为)复制。
  • 当用户下次登录时(管理界面)显示她必须恢复数据库并且可能存在数据丢失(可能是数据丢失的时间范围)。此外,还可以通过状态LED以某种方式发出问题。
  • 缺点:需要两倍以上的存储空间
  • 优势:尽可能少的额外写入。

问题

  • 这是一种有效的方法,还是这个过程存在重大缺陷?
  • 我可以申请“更好的做法”吗?那是什么?

1 个答案:

答案 0 :(得分:0)

不是问题的直接答案,而是解释/消除根本原因的事情:

MySQL 5.1服务器的系统表存储在 - 并且必须与MyISAM一起存储。这使得它们在停电时会很脆弱。

解决方案:迁移到更高的MySQL / MariaDB版本

有关详情,请参阅https://stackoverflow.com/a/34285574/3963625