Para responder minha própria pergunta:
Aqui está uma maneira rápida e suja de bloquear o script do apache até que o mysqld seja iniciado:
Substitua as duas linhas em /etc/init.d/apache2
log_daemon_msg "Starting web server" "apache2"
if $APACHE2CTL start; then
com
log_daemon_msg "Starting web server" "apache2"
# wait until mysql started
MYSQL_OK=0
WHILE_CNT=0
while [ "$WHILE_CNT" -le 60 ] ; do
if [[ 'service mysql status' == *running* ]]; then
MYSQL_OK=1;
break;
fi
WHILE_CNT='expr $WHILE_CNT + 1';
sleep 1
done
if $APACHE2CTL start; then
Isto verifica a cada segundo se o mysql está em execução (o tempo máximo de verificação é de 60 segundos).
Mas deve haver uma maneira melhor de definir dependências entre os serviços sysvinit e upstart?!