Por que o mariadb continua morrendo? Como eu paro isso?

25

Estou executando o MariaDB 10.0.23-0 no Ubuntu 15.10 como um servidor LAMP. sudo /etc/init.d/mysql startResultados em execução :

Job for mariadb.service failed because a timeout was exceeded. See "systemctl status mariadb.service" and "journalctl -xe" for details.

A saída de systemctl status mariadb.serviceé:

● mariadb.service - servidor de banco de dados MariaDB
   Carregado: carregado (/lib/systemd/system/mariadb.service; ativado; predefinição de fornecedor: ativado)
  Drop-In: /etc/systemd/system/mariadb.service.d
           M─migrated-from-my.cnf-settings.conf
   Ativo: falhou (resultado: tempo limite) desde sábado, 26-03-2016 22:52:42 EDT; 26s atrás
  Processo: 8707 ExecStart = / usr / sbin / mysqld $ MYSQLD_OPTS $ _WSREP_NEW_CLUSTER (código = encerrado, status = 0 / SUCESSO)
  Processo: 8706 ExecStartPre = / usr / bin / install -m 755 -o mysql -g raiz -d / var / run / mysqld (código = encerrado, status = 0 / SUCESSO)
 PID principal: 8707 (código = encerrado, status = 0 / SUCESSO)

26 de março 22:52:39 boggan systemd [1]: mariadb.service: O tempo de operação da inicialização expirou. Terminando.
26 de março 22:52:39 boggan mysqld [8707]: 2016-03-26 22:52:39 140105856617216 [Note] / usr / sbin / mysqld: Desligamento normal
26 de março 22:52:39 boggan mysqld [8707]: 2016-03-26 22:52:39 140105856617216 [Nota] Agendador de Eventos: Limpando a fila. 0 eventos
26 de março 22:52:39 boggan mysqld [8707]: 2016-03-26 22:52:39 140104920164096 [Nota] InnoDB: FTS otimiza a saída de threads.
26 de março 22:52:39 boggan mysqld [8707]: 2016-03-26 22:52:39 140105856617216 [Nota] InnoDB: Iniciando o desligamento ...
26 de março 22:52:42 boggan mysqld [8707]: 2016-03-26 22:52:42 140105856617216 [Nota] InnoDB: Encerramento concluído; número de sequência do log 3336953
26 de março 22:52:42 boggan mysqld [8707]: 2016-03-26 22:52:42 140105856617216 [Nota] / usr / sbin / mysqld: Encerramento completo
26 de março 22:52:42 boggan systemd [1]: falha ao iniciar o servidor de banco de dados MariaDB.
26 de março 22:52:42 boggan systemd [1]: mariadb.service: A unidade entrou no estado de falha.
26 de março 22:52:42 boggan systemd [1]: mariadb.service: falha com resultado 'timeout'

A primeira systemdlinha existe uma espécie de "bem duh". Eu sei que o tempo esgotou. O segundo systemd, após as mysqldlinhas é um pouco incompreensível, porque ele faz na verdade início. Um aplicativo (OwnCloud, especificamente) que depende do banco de dados funciona normalmente ... para os minutos e alterações em que o MariaDB está ativo.

Outra pergunta sugeriu o uso time /etc/init.d/mysql startpara determinar quanto tempo estava demorando. Eu o executei repetidamente para confirmar a hora - são alguns segundos em cada lado dos anos 90 a cada vez.

Outra pesquisa me levar para verificar as permissões de arquivo, que são bem ... além disso, não arranque, temporariamente. Eu cutuquei e instalei o melhor da minha capacidade (reconhecidamente limitada no que diz respeito ao Linux) e não fiz nenhum progresso.

Então, a pergunta é ... Como faço para que o serviço MariaDB permaneça ativo?

Como uma ruga extra, depois de escrever esta pergunta, deixei a máquina em funcionamento. Voltei uma semana depois (não toquei no meio). Usando exatamente o mesmo comando,, sudo /etc/init.d/mysql startfoi bem-sucedido. O daemon mysql foi iniciado e executado; voltou com um [ ok ]relatório. Reiniciei por motivo de experimentação e estou de volta aonde comecei.

Caso isso importe, a saída de journalctl -xeé:

Apr 02 23:51:44 boggan systemd [1]: Parado Leia os arquivos necessários com antecedência.
- Assunto: A unidade ureadahead.service terminou de desligar
- Definido por: systemd
- Suporte: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
- 
- A unidade ureadahead.service terminou de desligar.
02 de abril 23:51:55 boggan mysqld [2645]: 2016-04-02 23:51:55 140386161068800 [Nota] InnoDB: DDL on-line: Iniciar
02 de abril 23:51:55 boggan mysqld [2645]: 2016-04-02 23:51:55 140386161068800 [Nota] InnoDB: DDL on-line: Comece a ler o índice clusterizado da tabela e crie arquivos temporários
02 de abril 23:51:55 boggan mysqld [2645]: 2016-04-02 23:51:55 140386161068800 [Nota] InnoDB: DDL on-line: DDL on-line: final da leitura do índice clusterizado da tabela e criar arquivos temporários
02 de abril 23:51:55 boggan mysqld [2645]: 2016-04-02 23:51:55 140386161068800 [Nota] InnoDB: DDL on-line: Concluído
02 de abril 23:51:55 boggan mysqld [2645]: 2016-04-02 23:51:55 140386161068800 [Nota] InnoDB: DDL on-line: Concluído
Apr 02 23:52:06 boggan dbus [713]: [system] Falha ao ativar o serviço 'org.bluez': tempo limite excedido
Apr 02 23:52:37 boggan systemd [1]: mariadb.service: O tempo de operação da inicialização expirou. Terminando.
02 de abril 23:52:37 boggan mysqld [2645]: 2016-04-02 23:52:37 140386097400576 [Note] / usr / sbin / mysqld: Desligamento normal
Apr 02 23:52:37 kernel do boggan: audit: type = 1400 audit (1459655557.935: 31): apparmor = "DENIED" operation = "sendmsg" profile = "/ usr / sbin / mysqld" name = "/ run / systemd / notificar "pid = 2645 comm =" mysqld "máscara_ solicitada =" w "denied_mask =" w "fsuid = 122 ouid = 0
02 de abril às 23:52:37 boggan audit [2645]: AVC apparmor = "DENIED" operation = "sendmsg" profile = "/ usr / sbin / mysqld" name = "/ execute / systemd / notify" pid = 2645 comm = " mysqld "máscara_ solicitada =" w "máscara_enviada =" w "fsuid = 122 ouid = 0
02 de abril 23:52:37 boggan mysqld [2645]: 2016-04-02 23:52:37 140386097400576 [Nota] Agendador de Eventos: Limpando a fila. 0 eventos
02 de abril 23:52:37 boggan mysqld [2645]: 2016-04-02 23:52:37 140385225500416 [Nota] InnoDB: FTS otimiza a saída de threads.
02 de abril 23:52:37 boggan mysqld [2645]: 2016-04-02 23:52:37 140386097400576 [Nota] InnoDB: Iniciando o desligamento ...
02 de abril 23:52:39 boggan mysqld [2645]: 2016-04-02 23:52:39 140386097400576 [Nota] InnoDB: Encerramento concluído; número de sequência do log 3360838
02 de abril 23:52:39 boggan mysqld [2645]: 2016-04-02 23:52:39 140386097400576 [Nota] / usr / sbin / mysqld: Encerramento completo
Apr 02 23:52:39 kernel do boggan: audit: type = 1400 audit (1459655559.419: 32): apparmor = "DENIED" operation = "sendmsg" profile = "/ usr / sbin / mysqld" name = "/ run / systemd / notificar "pid = 2877 comm =" mysqld "máscara_ solicitada =" w "denied_mask =" w "fsuid = 122 ouid = 0
02 de abril às 23:52:39 boggan audit [2877]: AVC apparmor = "DENIED" operation = "sendmsg" profile = "/ usr / sbin / mysqld" name = "/ execute / systemd / notify" pid = 2877 comm = " mysqld "máscara_ solicitada =" w "máscara_enviada =" w "fsuid = 122 ouid = 0
02 de abril 23:52:39 boggan audit [2645]: AVC apparmor = "DENIED" operation = "sendmsg" profile = "/ usr / sbin / mysqld" name = "/ execute / systemd / notify" pid = 2645 comm = " mysqld "máscara_ solicitada =" w "máscara_enviada =" w "fsuid = 122 ouid = 0
Apr 02 23:52:39 kernel do boggan: audit: type = 1400 audit (1459655559.419: 33): apparmor = "DENIED" operation = "sendmsg" profile = "/ usr / sbin / mysqld" name = "/ run / systemd / notificar "pid = 2645 comm =" mysqld "máscara_ solicitada =" w "denied_mask =" w "fsuid = 122 ouid = 0
Apr 02 23:52:39 boggan systemd [1]: falha ao iniciar o servidor de banco de dados MariaDB.
- Assunto: A unidade mariadb.service falhou
- Definido por: systemd
- Suporte: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
- 
- A unidade mariadb.service falhou.
- 
- O resultado falhou.
02 de abril 23:52:39 boggan systemd [1]: mariadb.service: A unidade entrou no estado de falha.
02 de abril 23:52:39 boggan systemd [1]: mariadb.service: falha com resultado 'timeout'.
TJL
fonte
2
A journalctl -xesaída está truncada, você pode atualizar isso? Dê uma olhada nas apparmor="DENIED"mensagens (se o apparmor estiver ativado no seu sistema operacional), pois isso pode ser um problema durante o início do mariadb.
tlo
@tlo eu vou ... só terá que esperar até esta noite. Não tenho acesso à máquina de onde estou. Afinal, eu não conseguia fazê-lo funcionar quando estava sentado, então por que me preocupar em configurá-lo para acesso remoto. Definitivamente vou também olhar para o apparmor. Se foi ativado, foi ativado por padrão. Não mudei nada instalado pelo sistema, apenas adicionei o material LAMP.
TJL
@tlo Atualizou a saída e adicionou um pouco de rugas à descrição. Em vez de bater nele, eu vou a pé por uma hora ou duas, e ver o que acontece ...
TJL
1
Obrigado pela ajuda. apparmor era o culpado.
TJL

Respostas:

28

Eu tive o mesmo problema depois de atualizar do mysql para o mariadb. O estranho é que o serviço mariadb start falhou no tempo limite (na inicialização do sistema ou manualmente), enquanto o serviço mysql start foi bem-sucedido.

A explicação dada por TJL está certa, mas a correção não funcionou para mim.

$ sudo aa-complain /usr/sbin/mysqld
Setting /usr/sbin/mysqld to complain mode.

ERROR: /etc/apparmor.d/usr.sbin.mysqld contains no profile

Desabilitei o perfil (com aa-disable, que parece ser equivalente à solução do plutocrat )

$ sudo aa-disable /usr/sbin/mysqld
Disabling /usr/sbin/mysqld.

Desativei o mysqld-akonadi e o mysqld-digikam também.

Uma recarga de aparato não era suficiente, então tive que reiniciar e o mariadb começou perfeitamente.

ChrisAga
fonte
Confirmando que não foi possível encontrar uma maneira de fazê-lo funcionar sem reiniciar.
Meetai.com
Esta resposta funcionou para mim no Kubuntu 18.04.2 LTS. complaine ... apparmor reload( resposta TJL ) não foi realmente suficiente.
Marten Koetsier 17/03
25

apparmor era o culpado. Apesar do conteúdo de /etc/apparmor.d/usr.sbin.mysqldnão ser nada além de comentários e alegar que estava lá para que o aparmor não se engasgasse com o MariaDB, era exatamente o que estava acontecendo.

O AppArmor e o MySQL em um blog da Oracle forneceram o que eu precisava para descobrir o que estava acontecendo.

sudo aa-statusmostra o que o apparmor está fazendo; o que realmente tem uma política imposta, versus o que está pronto para reclamar.

sudo apt-get install apparmor-utils adiciona alguns comandos que facilitam o manuseio dos perfis do apparmor, como ...

sudo aa-complain /usr/sbin/mysqldtransforma o perfil de "aplicar" para reclamar. ( aa-enforcevira de volta.)

Feito isso, sudo service apparmor reloadreinicia o apparmor, e voila ... sudo /etc/init.d/mysql startfunciona, e o servidor permanece ativo.

TJL
fonte
1
Puta merda cara; isso realmente funcionou. Tive um leve pânico, pois isso afetou nosso servidor de produção, deixando-o por algumas horas. Não sou especialista como você e procurei em toda a web vários erros no arquivo /var/log/mysql/error.log. Muito obrigado, por isso!
Muqito 21/06
1
O mesmo para mim. Atualizei do Ubuntu 14.04 para 16.04 e perdi a capacidade de executar o MySQL. Agora funciona! Muito obrigado por detalhar isso: D. Estou procurando há semanas!
Sawtaytoes
Não faz isso por mim, mas obrigado pela dica apparmor-utils. Três anos depois eu estou recebendo ERROR: /etc/apparmor.d/usr.sbin.mysqld contains no profile.
YetiCGN 27/06
14

Eu tive que desativar completamente o mysql no apparmor. Uma reclamação não faria nada por mim. Tão ...

ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/

Então reinicie

plutocrata
fonte
Obrigado! Esta foi a única solução para o meu problema! Eu também atualizou a partir do MySQL para MariaDB
Thomas Gatt
isso foi o que funcionou para mim também, muito obrigado
Eman 24/07
3

Uma solução simples é remover qualquer perfil desconhecido do AppArmor:

aa-remove-unknown
Removing '/snap/core/6350/usr/lib/snapd/snap-confine'
Removing '/usr/sbin/mysqld'

Funciona!

Loc Luong
fonte
Na verdade, era o que eu precisava fazer para que as coisas funcionassem, então obrigado. A resposta aceita acima me daria ERROR: /etc/apparmor.d/usr.sbin.mysqld contains no profileexatamente como é verdade, dado que o arquivo consiste apenas de comentários. Talvez em uma versão mais recente do AppArmor, eles tenham definido que falhariam com esses arquivos, enquanto funcionava em 2016.
YetiCGN
Esta é a resposta correta (pelo menos em 2019). O que acontece é que, após a desinstalação do MySql, o perfil do AppArmor para /usr/sbin/mysqldainda é carregado no kernel. A execução aa-remove-unknown(ou reinicialização) resolve isso.
zwets