Alterando o tempo limite de inicialização do MySQL ([falha] relatada embora o mysql tenha sido iniciado corretamente)

3

Eu criei um script para cleanup InnoDB mecanismo de armazenamento . Tudo funciona bem, exceto que criar os arquivos ib_logfile0 e ib_logfile1 quando innodb_log_file_size está definido como 1GB leva um tempo que causa /etc/init.d/mysql para tempo limite e relata uma falha, embora no plano de fundo MySQL termine a partir normalmente.

Iniciando o mysql

$ /etc/init.d/mysql start
* Starting MariaDB database server mysqld  [fail] 

Enquanto isso, nos registros

$ tail -f /var/log/mysql.err
120426 11:19:55  InnoDB: Log file ./ib_logfile0 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile0 size to 1024 MB
InnoDB: Database physically writes the file full: wait...
InnoDB: Progress in MB: 100 200 300 400 500 600 700 800 900 1000
120426 11:20:07  InnoDB: Log file ./ib_logfile1 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile1 size to 1024 MB
InnoDB: Database physically writes the file full: wait...
InnoDB: Progress in MB: 100 200 300 400 500 600 700 800 900 1000
[...]
120426 11:20:24 [Note] /usr/sbin/mysqld: ready for connections.
# Version: '5.5.23-MariaDB-mariadb1~oneiric-log'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  mariadb.org binary distribution

Estou procurando uma maneira de evitar que o script de inicialização seja atingido. Quando olho para /etc/init.d/mysql , posso ver a variável ${MYSQLD_STARTUP_TIMEOUT} , mas não sei onde ela está definida. Eu também tenho procurado na documentação para tal opção, mas não consegui encontrá-lo.

Q1: Posso especificar um tempo limite de inicialização personalizado como um parâmetro para /etc/init.d/mysql ?
Q2: Qual opção posso modificar para alterar o tempo limite de inicialização do servidor na configuração?

    
por Max 26.04.2012 / 11:58

3 respostas

2

Eu sei que essa é uma pergunta antiga, mas estou postando no caso de alguém mais estar procurando uma resposta melhor / diferente. Eu tenho tido um problema semelhante, mas ao instalar atualizações. O nosso leva muito tempo para começar, pois faz parte de um cluster Galera e precisa copiar o que perdeu enquanto estava inativo.

Para começar a correr:

MYSQLD_STARTUP_TIMEOUT=900 /etc/init.d/mysql start

ou em um sistema com service , como o Ubuntu:

sudo MYSQLD_STARTUP_TIMEOUT=900 service mysql start

E no meu caso, para upgrades, ligue:

sudo MYSQLD_STARTUP_TIMEOUT=900 apt-get dist-upgrade
    
por 16.06.2014 / 11:45
0

Você pode usar a seguinte opção na inicialização:

# 900 is the default, 0 won't wait at all
--service-startup-timeout=900

No seu script de inicialização ou my.cnf, seria semelhante a:

service_startup_timeout=900

Mais documentação está localizada aqui link

Para cronometrar o script de inicialização para ver se ele está recebendo o novo valor de tempo limite, use o comando time do Linux em conjunto

# time /etc/init.d/mysql start

Compare o tempo de execução reportado com o valor do tempo limite, veja se ele muda quando você muda o timeout, se não, então a opção não está funcionando como esperado (talvez o MariaDB não o suporte) ou está declarado incorretamente no timeout. config.

    
por 26.04.2012 / 16:38
0

Em distribuições modernas, o systemd é usado para iniciar o serviço. Se você já tentou MYSQLD_STARTUP_TIMEOUT e ele não funcionou, provavelmente você está usando isso. O script /etc/init.d/mysql não é mais usado, portanto, MYSQLD_STARTUP_TIMEOUT não tem efeito.

Você precisa encontrar o arquivo mariadb.service . No nosso caso, ele não continha um tempo limite, então o padrão do MariaDB estava sendo usado. Apenas adicione:

TimeoutStartSec = 0

Na seção [Service] , e nunca vai expirar.

Seria uma boa ideia criar seu próprio arquivo de configuração contendo isso para que ele não seja substituído por reinstalações posteriores.

No ubuntu 18.04, você encontrará este arquivo em

/lib/systemd/system/mariadb.service

Coloque sua própria gota no arquivo em

/etc/systemd/system/mariadb.service.d

Lembre-se de executar systemctl daemon-reload depois de adicionar o tempo limite em algum lugar (e talvez verifique /var/log/syslog para ver se o recarregamento foi bem sucedido)

    
por 20.07.2018 / 12:11