我在使用写入 SD 卡或 Compact Flash 的 MySQL 应用程序时遇到了问题。数据丢失(例如电源故障)后,如果我尝试检索数据库的数据,则会失败,错误代码为incorrect format table
。如果我尝试在文件系统中查看数据库的文件,则会得到can't stat file or directory (I/O error)
。
我该如何克服这个问题:防止它发生或恢复数据库的内容?
设置:
- 采用 ext2 文件系统(防止 SD 卡多次写入)
- SD 卡、DOM 或 Compact Flash 作为物理支持
- 操作系统:TinyCore Linux Embedded - 加载于 RAM 中
答案1
这些错误意味着您的文件系统正在损坏(因为在写入过程中断电了)。
ext2 不是日志文件系统。日志文件系统具有更多的写入操作,因为它们会跟踪即将执行的操作,然后才真正开始执行。如果在写入过程中电源出现故障,操作系统可以查看日志并说“哦,我正要将这些数据写入那里”,然后重复被中断的步骤。
切换到使用具有日志记录的文件系统。ext3 可以工作,但实际上并不是为闪存介质设计的。JFFS2 可能是一个选项。有几十种其他文件系统正是为这种用例设计的,所以尝试一下,看看哪种效果好。