mysql 吐出大量“表标记为崩溃”错误

mysql 吐出大量“表标记为崩溃”错误

我有一个 mysql 服务器(版本:5.5.3-m3-log 源分发版),它一直显示大量

110214  3:01:48 [ERROR] /usr/local/mysql/libexec/mysqld: Table './mydb/tablename' is marked as crashed and should be repaired
110214  3:01:48 [Warning] Checking table:   './mydb/tablename'

我在想可能的原因是什么以及如何解决。这里是完整的 mysql 配置列表:

connect_errors = 6000
table_cache = 614
external-locking = FALSE
max_allowed_packet = 32M
sort_buffer_size = 2G 
max_length_for_sort_data = 2G
join_buffer_size = 256M
thread_cache_size = 300
#thread_concurrency = 8
query_cache_size = 512M
query_cache_limit = 2M
query_cache_min_res_unit = 2k
default-storage-engine = MyISAM
thread_stack = 192K
transaction_isolation = READ-COMMITTED
tmp_table_size = 246M
max_heap_table_size = 246M
long_query_time = 3
log-slave-updates = 1
log-bin = /data/mysql/3306/binlog/binlog
binlog_cache_size = 4M
binlog_format = MIXED
max_binlog_cache_size = 8M
max_binlog_si    ze = 1G
relay-log-index = /data/mysql/3306/relaylog/relaylog
relay-log-info-file = /data/mysql/3306/relaylog/relaylog
relay-log = /data/mysql/3306/relaylog/relaylog
expire_logs_days = 30
key_buffer_size = 1G 
read_buffer_size = 1M
read_rnd_buffer_size = 16M
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 2G 
myisam_max_sort_file_size = 5G
myisam_repair_threads = 1
max_binlog_size = 1G
interactive_timeout = 64 
wait_timeout = 64
skip-name-resolve
slave-skip-errors = 1032,1062,126,1114,1146,1048,1396

该盒子运行的是 centos-5.5。感谢您的帮助。

答案1

尽管损坏的数据很少见,但这是我们工作的本质。

只需运行 mysqlcheck mydb tablenam -r

那应该有帮助。

你的机器是否进行了硬重启或者其他操作?

答案2

对于“修复”部分,您还可以将“myisam-recover-options”(与 5.5.3 之前的“myisam-recover”相同)放入 my.cnf 中,这样 MySQL 将尝试动态修复 MyISAM 表 - 存在不同的选项,请参阅 MySQL 文档

答案3

如果您遇到的此类错误与您的问题所暗示的一样多,那么您应该查看 MySQL 本身以外的其他内容。如果没有外部帮助,MySQL 不会轻易产生这样的重复多个错误。我建议您在继续操作之前对您的硬盘驱动器和 RAM 进行一些认真的诊断。

相关内容