mysql启动失败排查

修改mysql配置文件之后,使用service mysqld restart 重启,发现停止成功但是启动失败了。

Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.

系统提示通过 systemctl status mysqld.service  或者 journalctl -xe 命令来查看详情。我们一个一个来分析。

 

1、执行 systemctl status mysqld.service

[root@lee ~]# systemctl status mysqld.service
● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: deactivating (final-sigterm) (Result: exit-code) since Wed 2019-05-15 08:54:07 CST; 50s ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  Process: 32685 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=1/FAILURE)
  Process: 32668 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
 Main PID: 30830 (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/mysqld.service
           └─32689 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid

May 15 08:54:57 lee systemd[1]: mysqld.service holdoff time over, scheduling restart.
May 15 08:54:57 lee systemd[1]: Starting MySQL Server...
May 15 08:54:57 lee systemd[1]: mysqld.service: control process exited, code=exited status=1

通过上面标红的错误信息我们可以看到,mysqld主进程没有启动起来,其他就没有什么详细信息了。我们接着往下看。

 

2、执行 journalctl -xe 

May 15 09:03:17 lee systemd[1]: Unit mysqld.service entered failed state.
May 15 09:03:17 lee systemd[1]: mysqld.service failed.
May 15 09:03:17 lee systemd[1]: mysqld.service holdoff time over, scheduling restart.
May 15 09:03:17 lee systemd[1]: Starting MySQL Server...
-- Subject: Unit mysqld.service has begun start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit mysqld.service has begun starting up.
May 15 09:03:17 lee mysqld[10921]: Initialization of mysqld failed: 0
May 15 09:03:17 lee systemd[1]: mysqld.service: control process exited, code=exited status=1
May 15 09:03:19 lee systemd[1]: Failed to start MySQL Server.

-- Subject: Unit mysqld.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit mysqld.service has failed.
-- 
-- The result is failed.

没啥有用的信息,就告诉我们启动失败了。

 

3、现在我们就只知道主进程执行不成功,其他信息一无所知,这可咋整。

作为一个程序员出了问题自然是想到看日志来查找原因,我们来看看mysql的启动日志。首先看下my.cnf中日志的位置,log-error=/var/log/mysqld.log,我的日志是存在这了,打开日志看个究竟。

最后面能看到这么一大坨的东西,看下日志时间相差了8小时,这是因为我没有去配置时区,当然这个不是重点。

2019-05-15T01:08:24.682793Z 0 [Note] Shutting down plugin 'INNODB_CMP_PER_INDEX'
2019-05-15T01:08:24.682795Z 0 [Note] Shutting down plugin 'INNODB_CMPMEM_RESET'
2019-05-15T01:08:24.682797Z 0 [Note] Shutting down plugin 'INNODB_CMPMEM'
2019-05-15T01:08:24.682799Z 0 [Note] Shutting down plugin 'INNODB_CMP_RESET'
2019-05-15T01:08:24.682800Z 0 [Note] Shutting down plugin 'INNODB_CMP'
2019-05-15T01:08:24.682802Z 0 [Note] Shutting down plugin 'INNODB_LOCK_WAITS'
2019-05-15T01:08:24.682804Z 0 [Note] Shutting down plugin 'INNODB_LOCKS'
2019-05-15T01:08:24.682806Z 0 [Note] Shutting down plugin 'INNODB_TRX'
2019-05-15T01:08:24.682807Z 0 [Note] Shutting down plugin 'InnoDB'
2019-05-15T01:08:24.684767Z 0 [Note] InnoDB: FTS optimize thread exiting.
2019-05-15T01:08:24.684867Z 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
2019-05-15T01:08:24.684972Z 0 [Note] InnoDB: Buffer pool(s) load completed at 190515  9:08:24
2019-05-15T01:08:24.685009Z 0 [Note] InnoDB: Starting shutdown...
2019-05-15T01:08:24.785342Z 0 [Note] InnoDB: Dumping buffer pool(s) to /var/lib/mysql/ib_buffer_pool
2019-05-15T01:08:24.785563Z 0 [Note] InnoDB: Buffer pool(s) dump completed at 190515  9:08:24
里面也没啥关键信息,这么多看起来贼烦,我们来过滤下。

执行   tail -n500 /var/log/mysqld.log|grep -E 'Warning|ERROR'

2019-05-15T01:12:38.934502Z 0 [ERROR] unknown variable 'binlog_fromat=mixed'
2019-05-15T01:12:38.934522Z 0 [ERROR] Aborting
2019-05-15T01:12:40.984590Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2019-05-15T01:12:41.188849Z 0 [ERROR] unknown variable 'binlog_fromat=mixed'
2019-05-15T01:12:41.188873Z 0 [ERROR] Aborting
2019-05-15T01:12:43.228937Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2019-05-15T01:12:43.431933Z 0 [ERROR] unknown variable 'binlog_fromat=mixed'
2019-05-15T01:12:43.431951Z 0 [ERROR] Aborting
到这里就很明显能看出问题了,提示未知参数,我们的英文单词拼错了。你问我怎么会敲错的,因为是信了网上亲测可用的这些帖子的邪了。这要是可用我把小牛子都给你揪下来。

4、总结

对于mysql启动报错我们可以通过如下的步骤来排查。

①:systemctl status mysqld.service 命令,通过这个我们能很快定位到出错的进程。

②:journalctl -xe 命令,作为上一步的补充能够进一步佐证我们的判断。

③:查看mysql的日志,这个是最重要的。因为绝大部分成熟的产品一定会考虑用户的使用,mysql从载入内存开始,后续的操作都会记录到日志当中。所以我们在使用mysql时出现类似问题,大概率都能从日志文件中找到问题,加以分析就能解决了。

 

 

  • 22
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
### 回答1: 这个问题可能出现在MySQL启动命令(execstart)上,可能您在执行时遇到了异常或错误,导致MySQL服务无法启动并返回了1/failure的错误状态。建议您检查MySQL的配置文件和日志,确认命令是否正确,并查找相关错误信息以查明原因。 ### 回答2: 该代码的含义是启动MySQL数据库服务时执行一条名为"execstart"的指令。该指令的作用是将MySQL数据库服务作为守护进程运行,并将进程ID保存在"/var/run/mysqld/mysqld.pid"文件中。同时,该指令可以在执行时根据环境变量"mysqld_opts"的设置对MySQL进行配置。 然而,该代码还输出了一个错误信息,指出服务的运行状态是"1/failure"。这意味着MySQL数据库服务的启动失败了。 在解决该问题之前,我们需要先考虑可能导致MySQL启动失败的原因。以下是一些可能的原因: 1. MySQL配置文件的错误设置,例如错误的数据库路径、权限不足等; 2. MySQL数据库服务已经在运行中; 3. 系统资源不足或超过限制; 4. MySQL软件安装不完整或版本不兼容等。 为了解决该问题,可以尝试以下步骤: 1. 检查MySQL配置文件的设置是否正确,特别是数据库路径、权限等设置; 2. 检查当前系统是否已经存在MySQL服务,如果存在则需要关闭该服务; 3. 检查当前系统资源使用情况,特别是内存和磁盘空间,是否充足; 4. 如果MySQL软件版本不兼容,可以考虑卸载并重新安装兼容版本的MySQL软件。 总之,"execstart"指令是启动MySQL数据库服务的一个关键指令,一旦出现启动失败的情况,需要通过检查配置、关闭服务、检查系统资源、重新安装等步骤来解决问题。 ### 回答3: 这个错误的出现是因为MySQL服务无法正常启动。execstart是指定执行命令的单元,在这个命令中,/usr/sbin/mysqld指的是启动MySQL服务的命令,--daemonize是指MySQL服务以后台进程的形式运行,--pid-file=/var/run/mysqld/mysqld.pid是定义MySQL服务进程的PID文件的路径,$mysqld_opts则是其他运行MySQL服务的选项。 出现代码exited, status=1/failure的错误通常是由于配置文件出现问题。因此,首先需要检查MySQL服务的配置文件是否正确,如果配置文件存在错误,就需要对其进行修正以确保MySQL服务的正常启动。 其次,MySQL服务依赖于许多系统库文件和其他服务,如果这些文件或服务存在问题,也会导致MySQL服务无法正常启动。这时需要检查是否有其他服务存在异常或者是Linux系统存在其他问题。 最后,如果以上两个方法还是无法解决问题,那么就需要查看MySQL服务的错误日志,从日志中寻找原因,进一步进行排查。 综上所述,出现execstart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $mysqld_opts (code=exited, status=1/failure)的错误需要进行全面的排查,并且需要使用多种方法来解决问题。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值