因磁盘满了Mysql数据库宕机的解决办法

原创 2018-05-07 10:59 阅读(2119)次

今天发现数据库宕机了,周五的时候看到磁盘快满了,于是叫同事清理一下数据,没想到他删除的数据量有点大,delete语句执行了一天没删除完,而数据库在周六正好硬盘满了,于是数据库就在执行大事务的同时因为硬盘满了而宕机了。

于是本人要恢复数据库,直接启动是启动不了,没空间了,只能把其中一个数据库搬到另一个盘中,释放空间了。我这个数据库实例中有两个数据库,一个叫bdad,一个叫weibo,如下图所示:


如上图所示:/data/mysql-data/mysql是我的数据库目录,里有两个数据库bdad,weibo

我把weibo这个库搬到了/home目录下,并给这个库创建了软链,相当于两个库使用不同的硬盘工作。这样就再也不用担心磁盘满了的问题了。

创建完软链接,记得软链和/home下的weibo真实路径都要给mysql权限

重启花了点时间,因为有删除大事务在宕机时没有执行完,当重启时会回滚数据。。。

如果遇到重启不了,可能需要修改my.cnf:

[mysqld]
innodb_force_recovery=3#表示不执行回滚
innodb_purge_thread=0

修改后再启动然后导出出问题的表,然后再以正常的方式启动数据库(就是上面修改的两个参数注释掉),再导回数据,这种恢复方法适合表不能用了,或者有损坏的问题