mysql进程没有进程ID

时间:2014-07-10 04:11:43

标签: mysql linux ubuntu process digital-ocean

我有一个在digitalocean云上运行的mysql实例。 有时候mysql实例在工作了几天之后就崩溃了,所以我监视一下它会崩溃后使用monit重新启动。

enter image description here

今天我遇到了这种情况,它表明mysql仍然在运行,但它没有进程ID(我想因为我无法访问mysql数据库并在重新设置之后)工作正常)。可以告诉为什么会出现这种情况......?

5 个答案:

答案 0 :(得分:2)

Monit将始终检查pid文件中的pid号是否属于正在运行的进程。如果程序以“正常”方式崩溃并死亡,则进程ID(pid)将不存在,并且monit将知道程序未运行并且即使存在pid文件也将重新启动它。有些服务器会崩溃并留下一个僵尸进程,并且似乎正在运行。 Monit还测试僵尸进程,如果一个进程变成了僵尸,它将发出警报。

这可能是由于monit中的错误导致其无法删除监控 zombie 进程。因此,请尝试修改您的配置

  

使用pidfile检查进程mysql /opt/mysql/data/myserver.mydomain.pid      组数据库      start program =“/ etc / init.d / mysql start”      stop program =“/ etc / init.d / mysql stop”      如果主机192.168.1.1端口3306协议mysql失败则重启      如果5在5个周期内重启,则超时      取决于mysql_bin      取决于mysql_rc    使用path / opt / mysql / bin / mysqld检查文件mysql_bin      组数据库

更多详情here

答案 1 :(得分:1)

有几个选项可以检查你的mysql process_id

 1st. $ ps aux | grep mysql

这将显示如下Reference

mysql    28290  1.1  2.7 340496 56812 ?        Sl   Jul31 348:27 /usr/libexec/mysqld --defaults-file=/etc/my.cnf --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-locking --socket=/var/lib/mysql/mysql.sock

         ^^^^
      process_id

检查mysql Reference的进程ID的第二个选项。

2nd. mysql> SHOW FULL PROCESSLIST\G

*************************** 1. row ***************************
     Id: 534
   User: root
   Host: localhost
     db: NULL
Command: Query
   Time: 0
  State: NULL
   Info: SHOW FULL PROCESSLIST
1 row in set (0.00 sec)

在上面的示例中,它显示正在运行的线程的ID。上面的例子是534

检查mysql Reference的进程ID的第三个选项。

3rd. $ pidof mysqld

第四个检查mysql Reference

的进程ID的选项
4th. mysql> SELECT CONNECTION_ID();
        -> 23786

答案 2 :(得分:0)

每个进程都必须有进程ID。为了找出你的mysql实例有什么pid,你可以在终端中使用以下命令:

ps aux | grep mysql

这应该显示如下:

_mysql           3034   0,0  0,3  2664388  58460   ??  S    Mer01pm   4:00.97 /usr/local/mysql/bin/mysqld ....

列表中的第二个元素(在我的情况下为3034)是进程ID。

答案 3 :(得分:0)

可能有各种原因。要确定您需要查看日志的问题。然而,这对我来说似乎是个错误。您使用的是什么版本的mysql,可以更新吗?

由于

答案 4 :(得分:0)

您可以访问以下流程ID:
以admin身份登录Mysql:

 mysql -uroot -ppassword;

而不是运行命令:

mysql> show processlist;

您将获得以下内容:

+----+-------------+--------------------+----------+---------+------+-------+------------------+
| Id | User        | Host               | db       | Command | Time | State | Info             |
+----+-------------+--------------------+----------+---------+------+-------+------------------+
| 49 | application | 192.168.44.1:51718 | XXXXXXXX | Sleep   |  183 |       | NULL             ||
| 55 | application | 192.168.44.1:51769 | XXXXXXXX | Sleep   |  148 |       | NULL             |
| 56 | application | 192.168.44.1:51770 | XXXXXXXX | Sleep   |  148 |       | NULL             |
| 57 | application | 192.168.44.1:51771 | XXXXXXXX | Sleep   |  148 |       | NULL             |
| 58 | application | 192.168.44.1:51968 | XXXXXXXX | Sleep   |   11 |       | NULL             |
| 59 | root        | localhost          | NULL     | Query   |    0 | NULL  | show processlist |
+----+-------------+--------------------+----------+---------+------+-------+------------------+

您将看到不同连接的完整详细信息。现在你可以杀死睡眠连接,如下所示: