MySQL 数据库(20 GB 的表和索引)损坏。我使用 MySQL-admin 图形界面启动了修复选项,现在它已经运行了 24 小时。当我检查 MyISAM 选项(缓冲区、线程等)时,我意识到它们的性能极低:1 个修复线程,8 Mb 的排序缓冲区...
我的问题是什么更好:停止修复过程并以更好的配置再次启动,或者让它继续运行并等待。有什么方法可以知道修复过程正在做什么或需要多少时间?
您可以通过查看数据目录的内容来跟踪修复进度;您将看到名称以 # 开头的表,这些表在修复过程中使用。
您还可以检查 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 有一个详细选项。
当然还有备份:-)
| 归档时间: |
|
| 查看次数: |
31826 次 |
| 最近记录: |