No uso Drupal pero con un wordpress tuve el mismo problema.
Básicamente lo solvente con:
1.- mejorar mi servidor aun plan bastante decente o grande.
2.- optimizar el servidor.
3.- crear un cronjob que verifique cada cierto tiempo que mysql este activo o en su defecto lo levante.
4.- instalar un buen sistema de cacheo para las paginas y contenido estático.
5.- optimizar los procesos PHP y eliminar los innecesarios.
Este ultimo punto fue algo bastante critico, ya que puede que estés realizando mas procesos de los necesarios, que sumados con el trafico de tu web o ataques al servidor, terminan llenando la memoria y revientan los servicios.
puedes agregar un 6to punto, que es instalarte algún firewall y estar monitoreando que no estes bajo ataque.
Si no puedes crear un cronjob para que verifique el mysql, puedes hacer uso de este servicio
http://uptimerobot.com/
Te mandara un correo electrónico avisándote que tu sitio web esta caído, así te darás cuenta y entraras oportunamente a levantarlo manualmente.