Editando o /etc/init.d/mysql para remover o mysql.sock automaticamente

0

Estou executando o MySQL em uma máquina virtual do CentOS versão 6.5 (Final). É usado para testar o Joomla.

O host phyiscal é reiniciado com freqüência, o que é bom. A VM, no entanto, não executa um desligamento limpo. Quando ele é reinicializado, há um arquivo de bloqueio aqui: /var/lib/mysql/mysql.sock

Eu construí um script de shell que irá removê-lo para mim que eu atualmente execute manualmente. Isso funciona perfeitamente, mas requer que eu o execute.

#!/bin/bash
sudo mv /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock.bak
sudo service mysqld restart

Sugeriu-se que eu editasse o /etc/init.d/mysql para remover automaticamente o arquivo de bloqueio para mim. Embora isso pareça ser uma boa idéia, o arquivo de bloqueio tem um propósito valioso e adulterar o fato de que o meu mysqld pode ser mais prejudicial que bom.

O que posso fazer para remover o arquivo de bloqueio automaticamente após a reinicialização?

    
por Matt 16.08.2014 / 04:14

2 respostas

1

O arquivo de soquete é uma maneira de os processos se comunicarem com o servidor em execução. Quando o servidor está morto, não há necessidade do soquete. Como você disse, ele teria sido removido se o servidor tivesse a chance de ser encerrado normalmente. O MySQL falha ao iniciar se o socket já estiver lá; daí a mensagem de erro. Removendo-o, quando um servidor não está funcionando, está bem.

Edite /etc/init.d/mysql e encontre a linha:

start(){

Insira o seguinte abaixo:

if [ -S /var/lib/mysql/mysql.sock ] ; then
    rm /var/lib/mysql/mysql.sock
fi

Para que pareça o seguinte:

start(){
        if [ -S /var/lib/mysql/mysql.sock ] ; then
            rm /var/lib/mysql/mysql.sock
        fi
    
por 16.08.2014 / 09:20
0

Eu adicionaria essas linhas ao / etc / inittab

Esse arquivo é executado a cada inicialização.

você pode deixar o sudo e o reinício.

Certifique-se de que / etc / inittab retorne 0

    
por 16.08.2014 / 08:49