mysql 突然不工作了

mysql 突然不工作了

当我执行命令时服务 mysql 重启它在终端返回错误:

停止:未知实例:启动:作业启动失败

这是我的 error.log 文件。

200205 18:57:35 [Warning] Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be removed in a future release. Please use the full name instead.
200205 18:57:35 [Note] Plugin 'FEDERATED' is disabled.
200205 18:57:35 InnoDB: The InnoDB memory heap is disabled
200205 18:57:35 InnoDB: Mutexes and rw_locks use GCC atomic builtins
200205 18:57:35 InnoDB: Compressed tables use zlib 1.2.8
200205 18:57:35 InnoDB: Using Linux native AIO
200205 18:57:35 InnoDB: Initializing buffer pool, size = 128.0M
200205 18:57:35 InnoDB: Completed initialization of buffer pool
InnoDB: Database page corruption on disk or a failed
InnoDB: file read of page 5.
InnoDB: You may have to recover from a backup.
200205 18:57:35  InnoDB: Page dump in ascii and hex (16384 bytes):

服务器中,已经有58%的可用空间。

我需要做什么才能使 MySQL 再次正常运行?

请帮帮我。我需要紧急帮助。

谢谢。

答案1

自从这个问题被提出已经过去了将近一年,但是它对于没有准备好的人来说会造成很大的压力。

当您看到类似的消息时InnoDB: Database page corruption on disk or a failed ... file read,说明您正在查看几个问题之一:

  1. 硬盘已经物理损坏
  2. 当机器断电时,系统正处于长时间写入的状态,现在 InnoDB 表处于不完整状态
  3. 硬盘已满
  4. 硬盘的 inode 已用完

要解决这个问题,我发现只有两种方法可以持续工作。第一种方法是切换到热插拔服务器并继续运行,但对于大多数运行 MySQL 的人来说,这并不现实。第二种方法是设置 值,mysql_force_recoverymysqld.cnf希望系统能够重建足够的自身资源以允许mysqldump,然后恢复数据库。

操作方法如下:

  1. 打开终端或通过 SSH 进入服务器

  2. 打开mysqld.cnf文件为root

    sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
    

    笔记:您可以使用任何您喜欢的文本编辑器。 vi 这更多的是关于肌肉记忆,而不是隐含的建议。

  3. 将以下内容添加到文件末尾:

    mysql_force_recovery=4
    
  4. 重新启动 MySQL:

    sudo service mysql start
    

重建过程可能需要很长时间,具体取决于数据库的大小。我见过 5GB 的数据库需要长达 15 分钟才能恢复在线。一旦数据库再次可访问,请尽可能多地导出数据:

mysqldump -h {host} -u {user} -p --events --routines --triggers --all-databases > full-export.sql

将其恢复到测试/开发机器,查看缺少什么或需要修复什么,然后开始构建新的生产服务器。无论出于何种原因,在旧的服务器出现故障后,不要再信任它。

相关内容