我是Moodle站点的管理员,该站点的用户表已损坏并且无法使用。
幸运的是,一个简单的方法REPAIR TABLE mdl_user使它再次工作。问题是我不知道为什么它实际上崩溃并使其无法使用,我想确保下次我有更好的准备。
我不是一个经验丰富的 DBA——我只是一个做很多事情的开发人员,所以请耐心等待。
我可以只恢复备份,但我想有办法防止崩溃。
这些表是 utf8_general_ci 并使用 MyISAM。
为什么 MySQL 表会崩溃?我能做些什么来防止这种情况发生?
我们已经让数据库挂了两次并试图找到原因。
show processlist
Waiting for global read lock | INSERT INTO {myisam_table} ...
Run Code Online (Sandbox Code Playgroud)
在这里,磁盘空间已满,所以我们认为问题在给它一些后就解决了,但第二天中午它又挂了:
show processlist
Waiting for table level lock | UPDATE {myisam_table} ...
Run Code Online (Sandbox Code Playgroud)
是什么原因造成的?
Mysql 默认引擎:InnoDB。
数据库混合了带有 MyISAM 和 InnoDB 引擎的表。
日志贴在这里:
http://arturito.net/2013/08/28/mysql-waiting-for-table-level-lock-errors/