Você tem algumas opções:
1) faça o mysql informar ao Upstart que ele começou emitindo um evento
initctl emit mysql-started
"ou similar.
Isso pode ser feito adicionando a invocação initctl
a /etc/init.d/mysql
.
2) Desative o mysql dos runlevels normais do SysV e crie um job Upstart do wrapper que inicia-se (não isso não funciona para parar - apenas um exemplo):
cat >>/etc/init/mysql-sysv.conf<<EOT
# wait for SysV job to finish
start on stopped rc
exec /etc/init.d/mysql start
EOT
Depois, tenha seu trabalho " start on started mysql-sysv
".
O problema aqui é que você terá problemas se alguém (ou alguma ferramenta do sistema automaticamente) adicionar novamente os links /etc/rc?.d
ao script original /etc/init.d/mysql
service. Além disso, você pode descobrir que o mysql não está realmente pronto até que algum tempo após seu pid principal tenha sido iniciado. Bancos de dados são problemáticos, já que podem levar algum tempo para se tornarem “online” mesmo depois de terem começado (repetição do log de transcrições, etc.).
3) Crie um job upstart ("waiter") que faça "start on stopped rc" (isto é, start quando todas as tarefas SysV tiverem terminado) e então faça polls esperando que o mysql fique pronto e então saia. Faça o seu trabalho "começar com o garçom parado".
4) Converta o mysql para um trabalho do Upstart (a melhor opção). Há um ponto de partida para uma configuração do mysql upstart aqui: link