Por que a instalação do MySQL 5.6 no Ubuntu 14.04 falhou?

30

Eu queria dar uma olhada no MySQL 5.6 no Ubuntu 14.04 por curiosidade. E com base neste artigo , certamente parecia que a instalação deveria ser simples e direta. Por isso, iniciei um micro servidor AWS EC2 executando o Ubuntu 14.04 (64 bits), efetuei login na minha instância intocada (via PuTTY) e emiti os seguintes comandos:

$ sudo apt-get update
$ sudo apt-get build-dep mysql-server-5.6
$ sudo apt-get install mysql-server-5.6

(Os dois primeiros comandos foram movimentos desesperados, já que simplesmente correr apt-get installsozinho anteriormente não funcionara. Mas, mesmo com os três comandos, a etapa de instalação ainda não funcionava.)

No ponto em que eu esperava, com base no artigo mencionado acima, ver esta saída do comando final:

mysql start/running, process 2355  
Setting up libhtml-template-perl (2.95-1) ...  
Setting up mysql-common-5.6 (5.6.16-1~exp1) ...  
Processing triggers for libc-bin (2.19-0ubuntu6) ...  
Processing triggers for ureadahead (0.100.0-16) ...  

Eu entendi isso:

start: Job failed to start  
invoke-rc.d: initscript mysql, action "start" failed.  
dpkg: error processing package mysql-server-5.6 (--configure):  
 subprocess installed post-installation script returned error exit status 1  
Setting up libhtml-template-perl (2.95-1) ...  
Setting up mysql-common-5.6 (5.6.16-1~exp1) ...  
Processing triggers for libc-bin (2.19-0ubuntu6) ...  
Processing triggers for ureadahead (0.100.0-16) ...  
Errors were encountered while processing:  
 mysql-server-5.6  
E: Sub-process /usr/bin/dpkg returned an error code (1)

Alguém pode ver o que deu errado?

WebLearner
fonte
1
o que o log diz? / var
log

Respostas:

22

O problema que você está tendo é o mesmo deste relatório de erro . A falha ao iniciar parece ser porque a configuração padrão do MySQL 5.6 requer mais memória do que pode obter na sua micro instância.

A solução para o erro parece ser uma das seguintes ações:

  • Aumente a quantidade de memória na sua instância do EC2
  • Defina um valor menor para a max_connectionsvariável do MySQL
Mike Miller
fonte
1
Sim, esse problema é EXATAMENTE o erro mostrado nesse relatório de bug. Obrigado! Até agora, tentei a solução rápida sugerida, que era para garantir que o /etc/apparmor.d/local/usr.sbin.mysqld existisse e, infelizmente, isso não aconteceu. Então agora vou tentar uma instalação com mais memória.
WebLearner 29/04
1
Para a próxima tentativa, em vez de usar uma instância do EC2, criei uma máquina virtual Ubuntu 14.04 com 2 GB de memória usando o Oracle VM Virtualbox e, nesse ambiente, a instalação do MySQL 5.6 navegava sem problemas sudo apt-get install mysql-server-5.6. Portanto, certamente parece que uma micro instância EC2 não possui memória suficiente para instalar o MySQL 5.6 usando o apt-get!
WebLearner 29/04
1
Um comentário adicional foi adicionado ao relatório de bug que sugeria reduzir o max_connections do MySQL antes da instalação do MySQL 5.6. Eu segui esse conselho e adicionei um arquivo .cnf ao /etc/mysql/conf.d que continha duas linhas: "[mysqld]" e "max_connections = 20". Com esse arquivo instalado, minha instalação do MySQL em um micro EC2 fresco passou. (De acordo com a documentação, o valor padrão para max_connections é 151. A configuração para 20 é provavelmente extrema. Mas pelo menos mostra que é possível instalar o MySQL.)
WebLearner
Para obter informações adicionais: verifiquei /var/lib/dpkg/info/mysql-server-5.6.postinst e descobri que você pode executar esse script para reproduzir as etapas exatas que estão falhando
shakaran
Está funcionando no meu vagrant, eu configurei a 1G RAM e a corrigi. obrigado. : D
Chu-Siang Lai
24

Eu encontrei o mesmo problema quando inicio meu pequeno VPS. O problema é causado por pouca memória. Portanto, sem gastar dinheiro extra para aumentar a memória desnecessária, você pode simplesmente criar arquivos de troca para ajudar na instalação. Sim, a troca é lenta, mas tudo o que você precisa é concluir a instalação.

No Ubuntu 14.04, faço o seguinte para resolver o problema:

Crie um arquivo de troca 4G:

sudo fallocate -l 4G /swapfile

Altere sua permissão para que somente o root possa acessar e alterar:

sudo chmod 600 /swapfile

Faça a troca:

sudo mkswap /swapfile

Ativar:

sudo swapon /swapfile

Agora você pode tentar instalar o mysql novamente, desta vez com sucesso. Lembre-se de remover a instalação sem êxito anterior antes de fazer isso.

Arthur Wang
fonte
Sim, resposta perfeita. Absolutamente incrível.
Wren
3

Eu encontrei o mesmo problema. Embora eu tivesse a memória suficiente grande de 12 GB dada à minha VM, mas ainda assim as coisas estavam falhando como em questão. Depois de passar algum tempo, o apt get padrão estava faltando alguns dos pacotes de tradução de configuração e tradução de ferramentas.

O repositório apt do MySQL fornece uma maneira simples e conveniente de instalar e atualizar os produtos MySQL com os mais recentes pacotes de software usando apt-get . Aqui está o que você deve seguir:

  1. Adicionando o repositório MySQL APT Primeiro, adicione o repositório MySQL apt à lista de repositórios de software do seu sistema. Siga esses passos:

    • Vá para a página de download do repositório apt do MySQL em http://dev.mysql.com/downloads/repo/apt/ .

    • Selecione e faça o download do pacote de lançamento.

    • Instale o pacote de liberação baixado com o seguinte comando, substituindo version-specific-package-name pelo nome do pacote baixado (precedido por seu caminho, se você não estiver executando o comando na pasta em que o pacote está):

      sudo dpkg -i /PATH/version-specific-package-name.deb
      

    Observe que o mesmo pacote funciona em todas as plataformas suportadas Debian e Ubuntu.

    • Durante a instalação do pacote, você será solicitado a escolher as versões do servidor MySQL e outros componentes (por exemplo, o MySQL Workbench) que deseja instalar. Se você não tiver certeza de qual versão escolher, não altere as opções padrão selecionadas para você. Você também pode escolher nenhum se não desejar que um componente específico seja instalado. Depois de fazer as escolhas para todos os componentes, escolha OK para concluir a configuração e instalação do pacote de liberação.

    você sempre pode alterar suas opções para as versões posteriores;
    consulte Selecionando uma versão principal para obter instruções.

    • Atualize as informações do pacote do repositório MySQL APT com o seguinte comando (esta etapa é obrigatória):

      sudo apt-get update
      
  2. Instalando o MySQL com APT

    • Instale o MySQL pelo seguinte comando:

      sudo apt-get install mysql-server
      

Isso instala o pacote para o servidor MySQL, bem como os pacotes para o cliente e para os arquivos comuns do banco de dados.

Durante a instalação, há duas solicitações nas caixas de diálogo: Forneça uma senha para o usuário root para sua instalação do MySQL.

  1. Iniciando e parando o servidor MySQL

O servidor MySQL é iniciado automaticamente após a instalação. - Você pode verificar o status do servidor MySQL com o seguinte comando:

sudo service mysql status
  • Pare o servidor MySQL com o seguinte comando:

    sudo service mysql stop
    
  • Para reiniciar o servidor MySQL, use o seguinte comando:

    sudo service mysql start
    

Eu segui este http://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/#apt-repo-fresh-install . Isso funcionou sem problemas e baixou todos os pacotes e foi instalado com sucesso mysql 5.6.

Ritesh
fonte
Obrigado David. Isso faz sentido. Alterei a resposta para etapas mais detalhadas. Obrigado.
Ritesh
+1 para a resposta aprimorada.
David Foerster
último fui eu ... sou realmente eu? :)
swift
2

No meu caso eu adicionei

innodb_buffer_pool_size = 20M

ao /etc/mysql/my.cnf

maxkoryukov
fonte
1
O usuário está tendo problemas para instalar o MySQL, e não usá-lo.
Obrigado, eu li a pergunta) Eu tive o mesmo problema durante a instalação. Na verdade, a instalação terminou e o mysql já está acessível como serviço, e poderíamos executá-lo. Mas na última etapa do processo de instalação (iniciando o mysqld), capturamos esse erro irritante.
Maxkoryukov
1

Encontrei esse problema no Ubuntu 15.10. Para mim, não era um problema de memória (eu tenho 2 GB de RAM e 18 GB de swap, dos quais apenas cerca de 300 MB foram usados ​​no total).

No meu caso, dpkgestava procurando /etc/mysql/conf.d, o que não existia (no entanto existia /etc/mysql/mysql.conf.d!). Reinstalando o mysql e criando manualmente a pasta/etc/mysql/conf.d resolveu meu problema.

Como exatamente isso aconteceu? Eu não faço ideia. Eu quase não queria compartilhar minha resposta, pois aposto que esta solução é específica para o meu computador.

Resolvi esse problema usando o utilitário strace , que é fantástico para esse tipo de coisa, se incrivelmente detalhado.

Eu usei assim:

  • Depois de pressionar no ctrlcmeio apt-get install mysql-server, tive que correr dpkg --configure -apara concluir a instalação.

  • Corri strace 2>/tmp/trace dpkg --configure -a. Isso me fez um bom straceregistro em /tmp/trace.

  • Eu olhei através do log, especialmente no fundo, onde ele falhou.

  • Notei que ele tentou acessar /etc/mysql/conf.de obteve o código de erro ENOENT, sem esse arquivo ou diretório .

Para quem quiser experimentar, faça o strace 2>/tmp/trace (command)e grep ENOENT. Como eu disse, esta solução provavelmente é específica para o meu computador, mas você pode tentar.

menino de damasco
fonte
0

No meu caso, tudo o que eu precisava fazer era fazer algumas alterações my.cnfe excluir apenas 2 arquivos de log com o nome ib_logfile0e ib_logfile1, e iniciar o mysql

service mysql start

Não há necessidade de reinstalar o mysql, apenas exclua esses 2 arquivos de log e reinicie o servidor mysql

Abaixo as alterações que fiz em my.cnf:

max_connections     = 1000     
max_allowed_packet  = 1024M
wait_timeout        = 7200 
Lavina Chitara
fonte
Adicione um pouco mais à sua resposta para que outras pessoas possam seguir.
George Udosen