【问题标题】:MySQL crash with error 23MySQL 崩溃并出现错误 23
【发布时间】:2015-07-02 03:40:35
【问题描述】:

在将一批数据加载到 MySQL 数据库(所有在本地运行以进行研究项目的数据管理)时,服务器无缘无故地崩溃了。检查日志显示以下错误:

ERROR, InnoDB: Operating system error number 23 in a file operation.
InnoDB: Some operating system error numbers are described at http://dev.mysql.com/doc/refman/5.7/en/operating-system-error-codes.html
ERROR, InnoDB: File .\analysis_lastfm\lastfm_scrobbles.ibd: 'Windows aio' returned 
   OS error 123. Cannot continue operation
InnoDB: Cannot continue operation.

这基本上似乎是说,不知何故,命名的 .ibd 文件已损坏。经过各种不成功的调试尝试,我终于删除了所有数据,重新安装了 MySQL,并尝试从备份中恢复。这个备份是在我遇到问题之前很久的(换句话说,备份中的数据是否有问题似乎值得怀疑)。所有其他表都恢复正常,但在从 lastfm_scrobbles 表导入数据几个小时后,服务器因同样的错误而崩溃。

我意识到这个问题并不像它可能的那样具体,但我主要是想弄清楚我的下一个故障排除步骤应该是什么(请记住,我已经重新安装了 MySQL 并尝试从备份中恢复) .此时我唯一的另一个想法是重新格式化硬盘并重新尝试恢复,但我不知道此时是否真的有必要......

【问题讨论】:

  • 尝试小批量从 lastfm_scrobbles 表导入。听起来那个特定的表或数据可能存在问题。
  • 这似乎是一个合理的想法,但我现在导入的备份是从我遇到任何问题之前开始的,所以备份中存在损坏似乎不太可能(尽管并非不可能).. .

标签: mysql


【解决方案1】:

考虑到问题可能不是损坏,最有可能的错误是系统打开了太多文件。这个问题在 Windows 上的理解/记录不如在 Linux 上。

减少 table_open_cache 和 innodb_open_files 变量可能会有所帮助。如果您可以报告它们当前的大小,我们可能会推荐更好的值,但似乎打开的文件总数可能需要低于 512-2048(不确定到底是哪个)。

显示全局变量,例如 '%open%';

【讨论】:

  • 好吧,由于崩溃服务器无法启动,所以我无法运行您建议的查询,但我的配置告诉我 innodb_open_files = 300。我在配置文件说 table_open_cache,虽然...
  • 嗨,你发现了吗?你能分享你的经验吗?我面临同样的错误,并希望看看其他人做了什么来克服它;似乎表已损坏,有没有办法修复它(它是 innodb 引擎)而不从备份中恢复整个数据库?谢谢;
猜你喜欢
  • 2013-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-24
  • 1970-01-01
  • 1970-01-01
  • 2014-02-22
  • 2018-07-19
相关资源
最近更新 更多