注意:在食用本文章前请务必备份好 mysql 文件夹下的 data 目录!!!
前端时间数据库崩过一次,所以重新安装的数据库并重新发布了文章 重新起航:QGG 2.0 发布 ,昨天访问数据库又崩了。打开宝塔面板发现又是 MySQL 无法启动。尝试在服务器上手动启动服务,弹出如下错误:本地计算机上的 mysql 服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止。

 

网上搜了下教程,发现大部分都是告诉你:

  1. 删除 mysql 下的 data 文件夹;
  2. 在 mysql 下的 bin 文件中启动命令提示符(CMD)工具,输入 mysqld --initialize 命令初始化。
  3. 重新启动 mysql 服务,成功!

这样确实可以了。但问题是 data 文件夹是存储数据的目录,重新初始化后我原来的数据就全部丢失了啊。

下面说下我的问题。
主要原因是。推测是因为服务器磁盘空间有限,备份网站时数据存满了,导致系统宕机,数据文件损坏。查看错误日志,报错如下:

一般到这里,建议找专业的 DBA 人员修复数据吧。

但是我是个人博客,就完全没有必要了。自己想办法解决。因为从上次备份数据到今天这段时间只是更新了前期的文章,所以理论上我只需要回复 wp-posts、wp-postmeta 表即可。data 目录存放的是数据文件,MySQL 启动不了,只能想办法从 data 目录恢复数据了。下面是我的方法,不太专业,但实测有效。

  1. 备份好 mysql 中 data 目录下的所有文件;
  2. 清空 data 目录,卸载 MySQL 并重新安装;
  3. 使用之前的备份文件先回复数据库;
  4. 将备份的 mysql 中的 data 目录中搜索所有 wp_posts 相关数据表,并复制替换到你的 mysql 中的 data 目录中;
  5. 重新启动 MySQL 服务并访问网站,成功!

最后你可以再使用其他工具修复下数据表避免其他错误。比如我使用的 Advanced Database Cleaner 数据库清理优化插件。

测试访问之前修改过的文章,暂未发现问题。

最后,还是要注意定时备份数据库