故障背景
这样的话虚拟机上跑的一些进程没有手动停止就异常关闭了,可能会出现问题。等物理机开机登陆之后,看环境状态,果然mysql启动失败了,在此记录下此情况的解决方式。
操作过程

上网查看了一下报错,主要有以下几种可能导致报错的情况:
1)可能是/xxx/xxxx/xxxx/mysqld.pid文件没有写的权限。 2)可能进程里已经存在mysql进程。 3)可能是第二次在机器上安装mysql,之前环境的mysql-bin.index没删除影响了服务的启动。 4)my.cnf配置文件下,没有指定datadir。 5)my.cnf配置文件下skip-federated没有被注释。 6)mysql启动目录的所属者和所属组不对。 7)没关闭selinux。
各参数意思如下,能填写小数值库能起来最好,否则有丢失数据的风险。
1)(SRV_FORCE_IGNORE_CORRUPT): 忽略检查到的 corrupt 页。尽管检测到了损坏的 page 仍强制服务运行。一般设置为该值即可,然后 dump 出库表进行重建。 2)(SRV_FORCE_NO_BACKGROUND): 阻止主线程的运行,如主线程需要执行 full purge 操作,会导致 crash。 阻止 master thread 和任何 purge thread 运行。若 crash 发生在 purge 环节则使用该值。 3)(SRV_FORCE_NO_TRX_UNDO): 不执行事务回滚操作。 4)(SRV_FORCE_NO_IBUF_MERGE): 不执行插入缓冲的合并操作。如果可能导致崩溃则不要做这些操作。不要进行统计操作。该值可能永久损坏数据文件。若使用了该值,则将来要删除和重建辅助索引。 5)(SRV_FORCE_NO_UNDO_LOG_SCAN): 不查看重做日志,InnoDB 存储引擎会将未提交的事务视为已提交。此时 InnoDB 甚至把未完成的事务按照提交处理。该值可能永久性的损坏数据文件。 6)(SRV_FORCE_NO_LOG_REDO): 不执行前滚的操作。恢复时不做 redo log roll-forward。使数据库页处于废止状态,继而可能引起 B 树或者其他数据库结构更多的损坏。










本文作者:孙宇航(上海新炬中北团队)
本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




