我是这么配的:
[program:mysqld]
command=/usr/bin/pidproxy /var/run/mysqld/mysqld.pid /usr/bin/mysqld_safe
(注意pidproxy和mysqld_safe的路径要根据实际情况写;可以用which命令来寻找它们的绝对路径)
用 init.d 启动 mysqld 服务,在 mysqld ( mysqld_safe )跑起来之后, init.d mysqld start 会立刻返回。
我不知道像问题中的配置这样启动 mysqld 会有什么效果,有机会试试。
像上边这样配置,进程长这样:
$ ps -ef | grep mysql
root 24 1 0 05:05 ? 00:00:00 /usr/bin/python /usr/bin/pidproxy /run/mysqld/mysqld.pid /usr/bin/mysqld_safe
root 31 24 0 05:05 ? 00:00:00 /bin/sh /usr/bin/mysqld_safe
mysql 440 31 1 05:05 ? 00:00:00 /usr/sbin/mysqld --basedir=......
我再写点别的。
如果配置成直接运行“ mysqld_safe ”而不是" pidproxy pidfile mysqld_safe ", mysqld 是能够启起来的,但是当 docker stop 时, mysqld 会无法接收 supervisord 发的 SIGTERM ,只能等待 10 秒( stop 的默认延时)被 SIGKILL 干掉。如下:
2019-06-15 13:04:49,586 WARN received SIGTERM indicating exit request
2019-06-15 13:04:49,615 INFO waiting for mysqld, apache2 to die
2019-06-15 13:04:49,689 INFO stopped: apache2 (exit status 0)
2019-06-15 13:04:52,694 INFO waiting for mysqld to die
2019-06-15 13:04:55,697 INFO waiting for mysqld to die
2019-06-15 13:04:58,701 INFO waiting for mysqld to die
2019-06-15 13:04:59,703 WARN killing 'mysqld' (499) with SIGKILL
2019-06-15 13:04:59,703 INFO stopped: mysqld (terminated by SIGKILL)
正确配置后:
2019-06-17 05:24:05,461 WARN received SIGTERM indicating exit request
2019-06-17 05:24:05,463 INFO waiting for mysqld, apache2 to die
2019-06-17 05:24:05,840 INFO stopped: apache2 (exit status 0)
2019-06-17 05:24:05,867 INFO stopped: mysqld (exit status 0)
。
有错请指出。