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

分析:导致这类错误cocntrol process exited的原因有多种,我们需要通过分析详细的报错信息,来分析到底是哪里的原因。一般情况可能是配置文件的原因,也可能是其它如socket文件占用等原因,如提示所示,我们用 "systemctl status mariadb.service" and "journalctl -xe" 来查看详细信息,下面是案例分析。

 
[root@localhost ~]#  systemctl start  mariadb.service #启动服务失败
Job for mariadb.service failed because the control process exited with error code. See "systemctl status mariadb.service" and "journalctl -xe" for details.

[root@localhost ~]# systemctl status mariadb.service  #查看报错详细信息
● mariadb.service - MariaDB database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Sat 2020-02-29 03:01:39 CST; 44s ago
  Process: 33557 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n (code=exited, status=1/FAILURE)

Feb 29 03:01:39 localhost.localdomain systemd[1]: Starting MariaDB database server...
Feb 29 03:01:39 localhost.localdomain systemd[1]: mariadb.service: control process exited, code=exited status=1
Feb 29 03:01:39 localhost.localdomain systemd[1]: Failed to start MariaDB database server.
Feb 29 03:01:39 localhost.localdomain systemd[1]: Unit mariadb.service entered failed state.
Feb 29 03:01:39 localhost.localdomain systemd[1]: mariadb.service failed.
[root@localhost ~]# journalctl -xe #看系统日志,看下面的红色字体,知道服务启动使用的socket文件被占用
Feb 29 03:01:01 localhost.localdomain CROND[33310]: (root) CMD (run-parts /etc/cron.hourly)
Feb 29 03:01:01 localhost.localdomain run-parts(/etc/cron.hourly)[33313]: starting 0anacron
Feb 29 03:01:01 localhost.localdomain anacron[33319]: Anacron started on 2020-02-29
Feb 29 03:01:01 localhost.localdomain anacron[33319]: Job `cron.weekly' locked by another anacron - skipping
Feb 29 03:01:01 localhost.localdomain anacron[33319]: Will run job `cron.daily' in 6 min.
Feb 29 03:01:01 localhost.localdomain anacron[33319]: Jobs will be executed sequentially
Feb 29 03:01:01 localhost.localdomain run-parts(/etc/cron.hourly)[33321]: finished 0anacron
Feb 29 03:01:33 localhost.localdomain polkitd[3312]: Registered Authentication Agent for unix-process:33509:3299662 (system bus name :1.108 [/u
Feb 29 03:01:33 localhost.localdomain polkitd[3312]: Unregistered Authentication Agent for unix-process:33509:3299662 (system bus name :1.108,
Feb 29 03:01:39 localhost.localdomain polkitd[3312]: Registered Authentication Agent for unix-process:33551:3300276 (system bus name :1.109 [/u
Feb 29 03:01:39 localhost.localdomain systemd[1]: Starting MariaDB database server...
-- Subject: Unit mariadb.service has begun start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit mariadb.service has begun starting up.
Feb 29 03:01:39 localhost.localdomain mariadb-prepare-db-dir[33557]: Socket file /var/lib/mysql/mysql.sock exists.
Feb 29 03:01:39 localhost.localdomain mariadb-prepare-db-dir[33557]: Is another MySQL daemon already running with the same unix socket?

Feb 29 03:01:39 localhost.localdomain systemd[1]: mariadb.service: control process exited, code=exited status=1
Feb 29 03:01:39 localhost.localdomain systemd[1]: Failed to start MariaDB database server.
-- Subject: Unit mariadb.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit mariadb.service has failed.
--
-- The result is failed.
Feb 29 03:01:39 localhost.localdomain systemd[1]: Unit mariadb.service entered failed state.
Feb 29 03:01:39 localhost.localdomain systemd[1]: mariadb.service failed.
Feb 29 03:01:39 localhost.localdomain polkitd[3312]: Unregistered Authentication Agent for unix-process:33551:3300276 (system bus name :1.109,
Feb 29 03:07:01 localhost.localdomain anacron[33319]: Job `cron.daily' started
Feb 29 03:07:01 localhost.localdomain run-parts(/etc/cron.daily)[35486]: starting logrotate
Feb 29 03:07:01 localhost.localdomain run-parts(/etc/cron.daily)[35491]: finished logrotate
Feb 29 03:07:01 localhost.localdomain run-parts(/etc/cron.daily)[35493]: starting man-db.cron
Feb 29 03:07:01 localhost.localdomain run-parts(/etc/cron.daily)[35502]: finished man-db.cron
Feb 29 03:07:01 localhost.localdomain anacron[33319]: Job `cron.daily' terminated
Feb 29 03:07:01 localhost.localdomain anacron[33319]: Normal exit (1 job run)
Feb 29 03:08:02 localhost.localdomain anacron[17450]: Job `cron.weekly' started
Feb 29 03:08:02 localhost.localdomain anacron[17450]: Job `cron.weekly' terminated
Feb 29 03:08:02 localhost.localdomain anacron[17450]: Normal exit (1 job run)
[root@localhost ~]# netstat -a |grep mysql.sock #可见确实有在用该socket文件的程序
unix  2      [ ACC ]     STREAM     LISTENING     180396   /var/lib/mysql/mysql.sock
[root@localhost ~]#

[root@localhost ~]# netstat -ap |grep mysql.sock #找到该进程对应的进程名及进程id
unix  2      [ ACC ]     STREAM     LISTENING     224124   12520 /mysqld         /var/lib/mysql/mysql.sock
[root@localhost ~]#

[root@localhost ~]# ps axu|grep mysql #也可以通过下面的方式来找到对应的进程名及进程id
root      12344  0.0  0.1 113316  1608 ?        S    01:39   0:00 /bin/sh /usr/bin/mysqld_safe
mysql     12520  0.0  8.7 970932 87444 ?        Sl   01:39   0:05 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/log/mariadb/mariadbmysqld23.log --pid-file=/var/run/mariadb/mariadb.pid --socket=/var/lib/mysql/mysql.sock --port=3306
root      49564  0.0  0.0 112712   964 pts/1    R+   03:47   0:00 grep --color=auto mysql


 

[root@localhost ~]# kill 12520  #看情况杀死相关进程,杀死该进程前需要仔细确认该进程的作用是否可以删除或有替代方案
[root@localhost ~]# ps axu|grep mysql
root      50536  0.0  0.0 112712   964 pts/1    R+   03:49   0:00 grep --color=auto mysql
[root@localhost ~]#  systemctl start  mariadb #启动成功
[root@localhost ~]#  systemctl status  mariadb
● mariadb.service - MariaDB database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor preset: disabled)
   Active: active (running) since Sat 2020-02-29 03:50:08 CST; 7s ago
  Process: 50704 ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID (code=exited, status=0/SUCCESS)
  Process: 50663 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n (code=exited, status=0/SUCCESS)
 Main PID: 50703 (mysqld_safe)
   CGroup: /system.slice/mariadb.service
           ├─50703 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
           └─50905 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mar...

Feb 29 03:50:05 localhost.localdomain systemd[1]: Starting MariaDB database server...
Feb 29 03:50:05 localhost.localdomain mariadb-prepare-db-dir[50663]: Database MariaDB is probably initialized in /var/lib/mysql already...done.
Feb 29 03:50:06 localhost.localdomain mysqld_safe[50703]: 200229 03:50:06 mysqld_safe Logging to '/var/log/mariadb/mariadbmysqld23.log'.
Feb 29 03:50:06 localhost.localdomain mysqld_safe[50703]: 200229 03:50:06 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
Feb 29 03:50:08 localhost.localdomain systemd[1]: Started MariaDB database server.
Hint: Some lines were ellipsized, use -l to show in full.
[root@localhost ~]#
 

 

注意:我们用systemctl stop mariadb.service 是不能关闭,直接通过命令行启动的mysqld_safe和mysqld进程的,可以用kill关闭进程。

#手动启动mysqld_safe

[root@localhost ~]# mysqld_safe #我们手动模
200229 01:39:45 mysqld_safe Logging to '/var/log/mariadb/mariadbmysqld23.log'.
200229 01:39:45 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql

下面给出用kill关闭的方法:

[root@localhost ~]# ps axu|grep mysql #找到该进程
root      12344  0.0  0.1 113316  1608 ?        S    01:39   0:00 /bin/sh /usr/bin/mysqld_safe
mysql     12520  0.0  8.7 970932 87444 ?        Sl   01:39   0:05 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/log/mariadb/mariadbmysqld23.log --pid-file=/var/run/mariadb/mariadb.pid --socket=/var/lib/mysql/mysql.sock --port=3306
root      49564  0.0  0.0 112712   964 pts/1    R+   03:47   0:00 grep --color=auto mysql

[root@localhost ~]# kill 12520  #看情况杀死相关进程,杀死该进程前需要仔细确认该进程的作用是否可以删除或有替代方案
[root@localhost ~]# ps axu|grep mysql
root      50536  0.0  0.0 112712   964 pts/1    R+   03:49   0:00 grep --color=auto mysql


 

 欢迎加我们微信wang1415035017进入微信高级技术群共同进步,或者扫码加入我们。

Logo

更多推荐