Phpbb3.1 MyIsam数据库损坏

时间:2017-08-29 05:57:24

标签: mysql innodb myisam phpbb3

大家好!我试图避免在phpbb3.1论坛中破坏我的数据库。它本月被粉碎了两次。 所以我有两个问题:
1)将MyISAM转换为InnoDB是否安全?我的意思是扩展工作正常吗?更新到下一版本后,论坛是否可行? 2)我可以通过哪种方式避免基础腐败?

P.S。 我也在这里发布了这个问题: https://www.phpbb.com/community/viewtopic.php?f=466&t=2436326

1 个答案:

答案 0 :(得分:1)

我冒昧地猜测。你有一个电源故障,当它恢复时,MySQL抱怨某些表上的某些索引已损坏?那张桌子是MyISAM?

  1. 使用myisamchk修复表格。
  2. 查看http://mysql.rjweb.org/doc.php/myisam2innodb中的陷阱,了解转换为InnoDB是否会增加新的问题。可能不会有任何改变。两部分PRIMARY KEY是InnoDB中唯一没有实现的部分。此外,如果您的MySQL版本太旧,InnoDB可能还没有FULLTEXT索引(如果您需要)。
  3. 更改my.cnf:key_buffer_size = 20Minnodb_buffer_pool_size等于可用内存的一半左右。
  4. 每个表ALTER TABLE xx ENGINE=InnoDB;
  5. xx
  6. 我认为(但不确定)每次更新/删除/插入都会将表标记为可能已损坏。它会写入更改,但不会清除标记。当mysqld干净地关闭时,所有内容都被刷新到磁盘并清除这些标志。当mysqld重新启动时,它会抱怨没有被清除的标志。所以......

    索引是否标记为损坏仅取决于您是否修改了该索引并崩溃。 (每个表都有一些索引,是吗?)

    通常,MySQL会在崩溃前设法将更改刷新到磁盘。只有偶尔崩溃发生在索引真的会被破坏的时候。有一个"快速"简单地清除标志的修复模式 - 你可以试试。但如果你得到一个神秘的"无法找到记录"当您知道记录存在时,您最好REPAIR