我应该停止 MySQL 修复吗?

4 mysql corruption

MySQL 数据库(20 GB 的表和索引)损坏。我使用 MySQL-admin 图形界面启动了修复选项,现在它已经运行了 24 小时。当我检查 MyISAM 选项(缓冲区、线程等)时,我意识到它们的性能极低:1 个修复线程,8 Mb 的排序缓冲区...

我的问题是什么更好:停止修复过程并以更好的配置再次启动,或者让它继续运行并等待。有什么方法可以知道修复过程正在做什么或需要多少时间?

Mar*_*rkR 6

您可以通过查看数据目录的内容来跟踪修复进度;您将看到名称以 # 开头的表,这些表在修复过程中使用。

您还可以检查 SHOW PROCESSLIST 以确保它没有执行“使用密钥缓存修复”,因为这比“通过排序修复”要糟糕得多

大表的修复速度很慢;你应该避免使用 MyISAM 的非常大的表,尤其是有很多索引的表。最好对它们进行分区以减少修复时间。这可能需要对您的应用程序代码进行重大更改。


小智 5

基本上发生了停电并且数据库损坏了。

我没有停止修复过程,但似乎需要很长时间。我希望它能够正确恢复。无论如何,我已经遵循了一些未来的迹象:

1.- 将以下内容添加到 my.conf 文件中

[mysqld]
myisam-recover=backup,force 
Run Code Online (Sandbox Code Playgroud)

这样,每次 myisam 引擎损坏时,mysql 都会强制恢复。

2.- 增加修复线程数以及排序缓冲区的大小。

3.- 不要使用图形 mysql-admin 界面,使用命令行。基本上是因为命令行 mysqlcheck 有一个详细选项。

当然还有备份:-)