o trabalho de inicialização do mysql trava se o diretório do banco de dados não estiver montado

1

Atualização: Arquivado como bug # 812423 no Launchpad.

Eu tenho o mysqld apontado para um volume externo:

$ cat /etc/mysql/conf.d/data_joliss.cnf 
[mysqld]
datadir=/mnt/data_joliss/mysql

Isso está funcionando bem em geral. Mas às vezes o volume não é montado, por qualquer motivo. Nesses casos, o mysqld falha como deveria:

# mysqld
110716 14:17:42 [Warning] Can't create test file /mnt/data_joliss/mysql/opinionated-programmer.lower-test
110716 14:17:42 [Warning] Can't create test file /mnt/data_joliss/mysql/opinionated-programmer.lower-test
mysqld: Can't change dir to '/mnt/data_joliss/mysql/' (Errcode: 2)
110716 14:17:42 [ERROR] Aborting

110716 14:17:42 [Note] mysqld: Shutdown complete

No entanto, o trabalho inicial no Ubuntu 11.04 ( start mysql ou service start mysql ) simplesmente aguarda (trava) indefinidamente sem produzir nada. O strace não está me dizendo nada, mas se alguém quiser dar uma olhada: strace -fv start mysql

Gostaria que o trabalho de mysql upstart apenas informasse um erro e terminasse em vez de interrompê-lo. Como faço isso?

(Background: Eu tenho uma instância do EC2 com um volume EBS extra para armazenar dados permanentes. Se o volume do EBS não estiver disponível no momento da inicialização, o sistema trava esperando pelo mysql, e eu não consigo nem SSH nele para consertar o problema - então agora minha instância ficou completamente inutilizável. Eu gostaria que continuasse a inicialização, mesmo sem um servidor MySQL.)

    
por Jo Liss 16.07.2011 / 16:39

1 resposta

1

Como um trabalho ao redor, você provavelmente poderia alterar o /etc/init/mysql.conf e adicionar 'e iniciado ssh' na seção 'start on ()'. Isso deve impedir que o mysql tente iniciar até que o ssh já esteja em execução, para que pelo menos você possa consertar a máquina.

    
por 16.08.2011 / 06:04