我有一个大的MyISAM表,它已经崩溃了。修理这张桌子要花些时间。只从INSERTed到SELECTed的表,从未更新过。为了允许应用程序继续工作,尽管能力降低,我想
由于应用程序的性质,此过程中的其他步骤不构成任何风险。重命名崩溃的MyISAM表安全吗?多么?
我相信我不能简单地改变TABLE...RENAME..。因为这总是将逐行复制放入一个新表中。
显然,Peter使用了一个"将所有MyISAM表移出MySQL数据库目录的微型脚本“,但似乎没有给出这个脚本的详细功能(大概是先停止数据库吗?)。
发布于 2016-09-09 23:01:57
这样做可能有效,但要谨慎行事:
CREATE TABLE new LIKE real; -- copy schema
RENAME TABLE real TO bad, new TO real; -- replace broken table with empty
REPAIR TABLE bad; -- slowly repair
RENAME TABLE real TO old, bad TO real; -- replace empty table with fixed table
DROP TABLE old; -- clean up我不知道CREATE是否能处理坏了的real。
RENAMEs是“瞬时”的。
然后计划转移到InnoDB。
https://dba.stackexchange.com/questions/149092
复制相似问题