Tienes algunas opciones:
1) hacer que mysql informe a Upstart que ha comenzado emitiendo un evento
initctl emit mysql-started
" o similar.
Esto podría manejarse agregando el initctl
invocación a /etc/init.d/mysql
.
2) Deshabilite mysql de los niveles de ejecución normales de SysV y cree un trabajo Upstart contenedor que lo inicie (no, esto no maneja la detención, solo un ejemplo):
cat >>/etc/init/mysql-sysv.conf<<EOT
# wait for SysV job to finish
start on stopped rc
exec /etc/init.d/mysql start
EOT
Luego, tenga su trabajo "start on started mysql-sysv
".
El problema aquí es que tendrá problemas si alguien (o alguna herramienta del sistema automáticamente) vuelve a agregar el /etc/rc?.d
enlaces al /etc/init.d/mysql
original guión de servicio. Además, es posible que mysql no esté realmente listo hasta algún tiempo después su pid principal ha comenzado. Las bases de datos son problemáticas, ya que pueden tardar un tiempo en estar "en línea", incluso después de haber comenzado (reproducción del registro de transacciones, etc.).
3) Cree un trabajo advenedizo ("camarero") que "comience en rc detenido" (es decir, comience cuando todos los trabajos de SysV hayan afirmado haber terminado) y luego sondee esperando que mysql esté listo, luego salga. Haga que su trabajo "comience con el camarero detenido".
4) Convierta mysql en un trabajo Upstart (la mejor opción). Hay un punto de partida para una configuración mysql advenediza aquí:https://github.com/devo-ps/init-scripts/tree/master/mysql/ubuntu