MySQL出错:MySQL作业mysqld.service失败,查看“systemctl status mysqld.service”
最近,在使用MySQL的过程中,发现MySQL的服务出现了异常情况,公司内部的同事向我报告了这个问题。当我登陆到服务器上,尝试启动MySQL服务的时候,出现了以下的提示信息:
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”命令,以查看服务状态和任何有关问题的详细描述。以下是系统返回的内容:
mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Wed 2021-11-17 14:05:27 CST; 2s ago
Process: 14593 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=1/FAILURE)
Main PID: 14625 (code=exited, status=0/SUCCESS)
Status: "Server startup in progress"
Nov 17 14:05:27 localhost.localdomain mysqld_pre_systemd[14593]: [2021-11-17 14:05:26 +0800] [14593] [ERROR] Can't init tc log
Nov 17 14:05:27 localhost.localdomain systemd[1]: mysqld.service: control process exited, code=exited status=1
Nov 17 14:05:27 localhost.localdomain systemd[1]: Failed to start MySQL Server.
Nov 17 14:05:27 localhost.localdomain systemd[1]: Unit mysqld.service entered failed state.
Nov 17 14:05:27 localhost.localdomain systemd[1]: mysqld.service failed.
Nov 17 14:05:27 localhost.localdomain mysqld_pre_systemd[14624]: [2021-11-17 14:05:27 +0800] [14624] [ERROR] MySQL server PID file could not be found!
Nov 17 14:05:27 localhost.localdomain mysqld_pre_systemd[14624]: [2021-11-17 14:05:27 +0800] [14624] [ERROR] Do you already have another mysqld server running on port: XXXX?
Nov 17 14:05:27 localhost.localdomain mysqld_pre_systemd[14624]: [2021-11-17 14:05:27 +0800] [14624] [ERROR] Aborting
为了分析这个问题,我们需要查看上述输出中给出的任何有关问题的信息。在这种情况下,错误日志表明在初始化tc日志时出现了问题,因此我们需要查看MySQL的日志文件,以进一步了解问题。以下是命令:
$ tail /var/log/mysqld.log
当我执行上面的命令时,发现MySQL的日志文件中有以下关键信息:
[ERROR] Could not open log file
[ERROR] Aborting
这表明MySQL无法打开其错误日志文件,该错误日志文件已被配置为为其配置文件中定义的位置。因此,要解决此问题,我需要检查配置文件中定义的所有位置并确保它们是正确配置的。
在我的服务器上, MySQL的配置文件是/etc/my.cnf
,由于在我之前对文件做了一些不必要的更改,因此相关信息被更改了,导致日志文件的目录路径无法解析。因此,我需要将该路径更改为正确的位置,并重新启动MySQL服务,以使更改生效。以下是我所做的更改和MySQL恢复正常的输出:
# 在/etc/my.cnf中更改错误日志路径
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log <--- 将文件路径更改为正确的路径
# 重新启动MySQL服务
systemctl restart mysqld
# 检查MySQL服务状态 systemctl status mysqld
mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2021-11-17 15:00:52 CST; 6s ago
总结
当MySQL服务出现异常情况时,我们可以使用系统返回的信息来查找问题所在。在本例中,使用“systemctl status mysqld.service”命令和MySQL的日志文件可以找到问题所在,并编辑MySQL的配置文件以解决问题。在更改配置文件后,记得重新启动MySQL服务并检查其状态以确保MySQL恢复正常。
阅读更多:MySQL 教程