大家好!我试图避免在phpbb3.1论坛中破坏我的数据库。它本月被粉碎了两次。
所以我有两个问题:
1)将MyISAM转换为InnoDB是否安全?我的意思是扩展工作正常吗?更新到下一版本后,论坛是否可行?
2)我可以通过哪种方式避免基础腐败?
P.S。 我也在这里发布了这个问题: https://www.phpbb.com/community/viewtopic.php?f=466&t=2436326
答案 0 :(得分:1)
我冒昧地猜测。你有一个电源故障,当它恢复时,MySQL抱怨某些表上的某些索引已损坏?那张桌子是MyISAM?
myisamchk
修复表格。PRIMARY KEY
是InnoDB中唯一没有实现的部分。此外,如果您的MySQL版本太旧,InnoDB可能还没有FULLTEXT
索引(如果您需要)。key_buffer_size = 20M
和innodb_buffer_pool_size
等于可用内存的一半左右。ALTER TABLE xx ENGINE=InnoDB;
xx
。我认为(但不确定)每次更新/删除/插入都会将表标记为可能已损坏。它会写入更改,但不会清除标记。当mysqld干净地关闭时,所有内容都被刷新到磁盘并清除这些标志。当mysqld重新启动时,它会抱怨没有被清除的标志。所以......
索引是否标记为损坏仅取决于您是否修改了该索引并崩溃。 (每个表都有一些索引,是吗?)
通常,MySQL会在崩溃前设法将更改刷新到磁盘。只有偶尔崩溃发生在索引真的会被破坏的时候。有一个"快速"简单地清除标志的修复模式 - 你可以试试。但如果你得到一个神秘的"无法找到记录"当您知道记录存在时,您最好REPAIR
。