mariadb-start-failed-error

记录了常见的mariadb启动失败的原因,以及相应的定位方式

定位方式

以centos为例,mariadb.service管理通常由systemctl完成,故常见方式为:

  • systemctl start/restart mariadb.service
  • 如果上面出问题,看
    • journalctl -xe
    • mariadb err log

补充一句:err log默认呢是在/usr/libexec/mariadb-prepare-db-dir中定义了的,
也可以在systemctl status中看到

Jan 09 10:43:53 iCenter202 mysqld_safe[15832]: 170109 10:43:53 mysqld_safe Logging to '/var/log/mariadb/mariadb.log'.

找到log之后,一般启动失败的原因都在log中都有体现。如果目前还定位不出来,可以考虑分析mariadb.service的执行过程。

当然首先就是找到脚本在哪里,可以通过

1
2
[root@localhost ~]# rpm -qal | grep mariadb.service
/usr/lib/systemd/system/mariadb.service

vim看下/usr/lib/systemd/system/mariadb.service,很简单,三个脚本的调用。

正常模式下,脚本执行没有啥log,可以通过在脚本第一行添加#!/bin/sh -x来查看具体的脚本执行过程

  • -x是个debug
  • 如果加了-n,可以模拟测试执行这个脚本

FAQ

无法创建pid file

一般是没权限,比如/var/run/mariadb/这个目录的权限不是mysql:mysql,使用chown mysql:mysql /var/run/mariadb/修改即可。

但是发现一个centos7下面的坑:戳这里

Table ‘./mysql/proc’ is marked as crashed and should be repaired

TODO