Por que algumas instalações do apt-get reiniciam o mySQL?

3

Eu encontrei uma situação estranha em que instalar um pacote via apt-get fez com que instâncias em execução (produção!) do mysqld fossem reiniciadas em alguns servidores Linux 16.04.

Corremos sudo apt-get install -y iotop em quatro servidores. Em três dos servidores, a instalação falhou informando [ERROR] unknown variable 'rpl_semi_sync_slave_enabled=1' . Essa variável foi definida apenas nesses três servidores. Neste ponto, o serviço mysql que estávamos executando desligou!

O quarto servidor não possui uma configuração idêntica do mysql. Notavelmente, a variável rpl_semi_sync_slave_enabled não estava presente. O Apt conseguiu instalar o iotop , mas curiosamente o nosso serviço mysql não foi reiniciado ou desligado.

Portanto, parece que alguns pacotes, ao falhar na instalação, irão matar processos em execução que parecem tangenciais à instalação! Isso me preocupa muito com a instalação de pacotes adicionais em nossos servidores de produção executando processos que não gostamos de reiniciar sempre. Como posso saber se a instalação de um pacote irá reiniciar esses processos e por que isso está acontecendo em primeiro lugar?

    
por BlackVegetable 22.05.2017 / 19:54

1 resposta

5

É muito improvável que os pacotes não consigam instalar kill s depois ou por causa de falhas relacionadas ou não. Além disso, o [ERROR] unknown variable 'rpl_semi_sync_slave_enabled = 1; não parece ser um erro de apt , mas do MySQL, durante sua inicialização.

É perfeitamente possível que o MySQL foi reiniciado em todos os servidores, mas falhou ao iniciar um, fazendo com que a instalação falhasse - e não vice-versa.

Por que instalar iotop fará com que o MySQL seja reiniciado? Nas distribuições (como o seu Ubuntu) temos essa coisa chamada árvore de dependência : os pacotes podem depender de outros pacotes que dependem de outros pacotes, que podem ser mutuamente necessários por outros pacotes. Às vezes, um pacote depende de uma determinada versão de outro pacote, fazendo com que o pacote já instalado seja atualizado quando instalado.

Nesse caso, iotop depende de python . Então, por exemplo python-mysqldb depende de python e libmysqlclient18 que depende de mysql-common ... você provavelmente entendeu porque o MySQL pode ter sido atualizado junto com iotop aparentemente não relacionado.

Como saber quais pacotes são instalados e atualizados durante apt-get install ?

-y, --yes, --assume-yes

Automatic yes to prompts. Assume yes as answer to all prompts and run non-interactively. If an undesirable situation, such as changing a held package or removing an essential package, occurs then apt-get will abort.

Não use -y se não tiver certeza absoluta do que acontecerá. Por padrão, você obterá uma lista de todos os pacotes instalados, atualizados ou mesmo removidos. Você voluntariamente escolhe ignorar tudo isso.

    
por 22.05.2017 / 21:07

Tags