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

13

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

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 - MariaDB database server
   Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
  Drop-In: /etc/systemd/system/mariadb.service.d
           └─migrated-from-my.cnf-settings.conf
   Active: failed (Result: timeout) since Sat 2016-03-26 22:52:42 EDT; 26s ago
  Process: 8707 ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS $_WSREP_NEW_CLUSTER (code=exited, status=0/SUCCESS)
  Process: 8706 ExecStartPre=/usr/bin/install -m 755 -o mysql -g root -d /var/run/mysqld (code=exited, status=0/SUCCESS)
 Main PID: 8707 (code=exited, status=0/SUCCESS)

Mar 26 22:52:39 boggan systemd[1]: mariadb.service: Start operation timed out. Terminating.
Mar 26 22:52:39 boggan mysqld[8707]: 2016-03-26 22:52:39 140105856617216 [Note] /usr/sbin/mysqld: Normal shutdown
Mar 26 22:52:39 boggan mysqld[8707]: 2016-03-26 22:52:39 140105856617216 [Note] Event Scheduler: Purging the queue. 0 events
Mar 26 22:52:39 boggan mysqld[8707]: 2016-03-26 22:52:39 140104920164096 [Note] InnoDB: FTS optimize thread exiting.
Mar 26 22:52:39 boggan mysqld[8707]: 2016-03-26 22:52:39 140105856617216 [Note] InnoDB: Starting shutdown...
Mar 26 22:52:42 boggan mysqld[8707]: 2016-03-26 22:52:42 140105856617216 [Note] InnoDB: Shutdown completed; log sequence number 3336953
Mar 26 22:52:42 boggan mysqld[8707]: 2016-03-26 22:52:42 140105856617216 [Note] /usr/sbin/mysqld: Shutdown complete
Mar 26 22:52:42 boggan systemd[1]: Failed to start MariaDB database server.
Mar 26 22:52:42 boggan systemd[1]: mariadb.service: Unit entered failed state.
Mar 26 22:52:42 boggan systemd[1]: mariadb.service: Failed with result 'timeout''

A primeira linha systemd é uma espécie de "bem duh". Eu sei que acabou. O segundo systemd , após as linhas mysqld é um pouco confuso, porque ele faz de fato começar. Um aplicativo (OwnCloud, especificamente) que depende do banco de dados funciona normalmente ... para o minuto e a mudança que o MariaDB está fazendo.

Outra pergunta sugerida usando time /etc/init.d/mysql start para determinar quanto tempo demorava. Eu corri repetidamente para confirmar o tempo - são alguns segundos em cada lado dos anos 90 de cada vez.

Outra pesquisa me levou a checar as permissões dos arquivos, que estão bem ... além disso, ele faz iniciar, temporariamente. Eu cutuquei e cutuquei com o melhor da minha capacidade (reconhecidamente limitada quando se trata de Linux), e eu não fiz nenhum progresso.

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

Como uma ruga extra, depois de escrever esta pergunta, deixei a máquina em funcionamento. Voltei a isso uma semana depois (não toquei entre eles). Usando exatamente o mesmo comando, sudo /etc/init.d/mysql start foi bem-sucedido. O daemon mysql começou e correu; ele voltou com um relatório [ ok ] . Eu reiniciei por causa da experimentação e voltei para onde comecei.

Caso seja importante, a saída de journalctl -xe é:

Apr 02 23:51:44 boggan systemd[1]: Stopped Read required files in advance.
-- Subject: Unit ureadahead.service has finished shutting down
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit ureadahead.service has finished shutting down.
Apr 02 23:51:55 boggan mysqld[2645]: 2016-04-02 23:51:55 140386161068800 [Note] InnoDB: Online DDL : Start
Apr 02 23:51:55 boggan mysqld[2645]: 2016-04-02 23:51:55 140386161068800 [Note] InnoDB: Online DDL : Start reading clustered index of the table and create temporary files
Apr 02 23:51:55 boggan mysqld[2645]: 2016-04-02 23:51:55 140386161068800 [Note] InnoDB: Online DDL : End of reading clustered index of the table and create temporary files
Apr 02 23:51:55 boggan mysqld[2645]: 2016-04-02 23:51:55 140386161068800 [Note] InnoDB: Online DDL : Completed
Apr 02 23:51:55 boggan mysqld[2645]: 2016-04-02 23:51:55 140386161068800 [Note] InnoDB: Online DDL : Completed
Apr 02 23:52:06 boggan dbus[713]: [system] Failed to activate service 'org.bluez': timed out
Apr 02 23:52:37 boggan systemd[1]: mariadb.service: Start operation timed out. Terminating.
Apr 02 23:52:37 boggan mysqld[2645]: 2016-04-02 23:52:37 140386097400576 [Note] /usr/sbin/mysqld: Normal shutdown
Apr 02 23:52:37 boggan kernel: audit: type=1400 audit(1459655557.935:31): apparmor="DENIED" operation="sendmsg" profile="/usr/sbin/mysqld" name="/run/systemd/notify" pid=2645 comm="mysqld" requested_mask="w" denied_mask="w" fsuid=122 ouid=0
Apr 02 23:52:37 boggan audit[2645]: AVC apparmor="DENIED" operation="sendmsg" profile="/usr/sbin/mysqld" name="/run/systemd/notify" pid=2645 comm="mysqld" requested_mask="w" denied_mask="w" fsuid=122 ouid=0
Apr 02 23:52:37 boggan mysqld[2645]: 2016-04-02 23:52:37 140386097400576 [Note] Event Scheduler: Purging the queue. 0 events
Apr 02 23:52:37 boggan mysqld[2645]: 2016-04-02 23:52:37 140385225500416 [Note] InnoDB: FTS optimize thread exiting.
Apr 02 23:52:37 boggan mysqld[2645]: 2016-04-02 23:52:37 140386097400576 [Note] InnoDB: Starting shutdown...
Apr 02 23:52:39 boggan mysqld[2645]: 2016-04-02 23:52:39 140386097400576 [Note] InnoDB: Shutdown completed; log sequence number 3360838
Apr 02 23:52:39 boggan mysqld[2645]: 2016-04-02 23:52:39 140386097400576 [Note] /usr/sbin/mysqld: Shutdown complete
Apr 02 23:52:39 boggan kernel: audit: type=1400 audit(1459655559.419:32): apparmor="DENIED" operation="sendmsg" profile="/usr/sbin/mysqld" name="/run/systemd/notify" pid=2877 comm="mysqld" requested_mask="w" denied_mask="w" fsuid=122 ouid=0
Apr 02 23:52:39 boggan audit[2877]: AVC apparmor="DENIED" operation="sendmsg" profile="/usr/sbin/mysqld" name="/run/systemd/notify" pid=2877 comm="mysqld" requested_mask="w" denied_mask="w" fsuid=122 ouid=0
Apr 02 23:52:39 boggan audit[2645]: AVC apparmor="DENIED" operation="sendmsg" profile="/usr/sbin/mysqld" name="/run/systemd/notify" pid=2645 comm="mysqld" requested_mask="w" denied_mask="w" fsuid=122 ouid=0
Apr 02 23:52:39 boggan kernel: audit: type=1400 audit(1459655559.419:33): apparmor="DENIED" operation="sendmsg" profile="/usr/sbin/mysqld" name="/run/systemd/notify" pid=2645 comm="mysqld" requested_mask="w" denied_mask="w" fsuid=122 ouid=0
Apr 02 23:52:39 boggan systemd[1]: Failed to start MariaDB database server.
-- Subject: Unit mariadb.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit mariadb.service has failed.
-- 
-- The result is failed.
Apr 02 23:52:39 boggan systemd[1]: mariadb.service: Unit entered failed state.
Apr 02 23:52:39 boggan systemd[1]: mariadb.service: Failed with result 'timeout'.
    
por T.J.L. 27.03.2016 / 05:14

3 respostas

11

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

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

sudo aa-status mostra o que o apparmor está fazendo; o que realmente tem uma política reforçada, contra o que está definido apenas para reclamar.

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

sudo aa-complain /usr/sbin/mysqld transforma o perfil de "obrigar" a reclamar. ( aa-enforce vira de volta.)

Uma vez feito isso, sudo service apparmor reload reinicia o apparmor e voila ... sudo /etc/init.d/mysql start funciona, e o servidor permanece ativo.

    
por T.J.L. 03.04.2016 / 09:06
9

Eu tive o mesmo problema depois de atualizar do mysql para o mariadb. O mais estranho é que o serviço mariadb start falhou no timeout (no boot do sistema ou manualmente) enquanto o mysql service começou a ser bem sucedido.

A explicação dada por T.J.L. 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

Então eu desabilitei o perfil (com aa-disable que parece ser equivalente à solução plutocrat )

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

Eu desativei o mysqld-akonadi e o mysqld-digikam também.

Um reload de apparmor não foi suficiente, então eu tive que reboot e o mariadb começou perfeitamente bem.

    
por ChrisAga 14.10.2017 / 20:10
5

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

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

Em seguida, reinicie

    
por plutocrat 02.03.2017 / 06:23