O MySQL falhou ao reiniciar no Ubuntu 16.04


14

Estou tentando reiniciar o MySQL depois de salvar um script. O erro indica

Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.

Ao executar systemctl status mysql.serviceaqui está o que eu recebo:

Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
   Active: activating (start-post) (Result: exit-code) since Isn 2016-09-26 17:15:28 MYT; 17s ago
  Process: 17478 ExecStart=/usr/sbin/mysqld (code=exited, status=1/FAILURE)
  Process: 17474 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
 Main PID: 17478 (code=exited, status=1/FAILURE);         : 17479 (mysql-systemd-s)
   CGroup: /system.slice/mysql.service
           └─control
             ├─17479 /bin/bash /usr/share/mysql/mysql-systemd-start post
             └─17516 sleep 1

Não sei por onde começar a consertar isso.

Este é o script que eu salvei antes de reiniciar o mysql:

[mysqld]
innodb_rollback_on_timeout=1
innodb_lock_wait_timeout=600
max_connections=350
log-bin=mysql-bin
binlog-format = 'ROW'

Correr journalctl -xe | tail -20me dá o seguinte:

Sep 26 17:46:29 guest mysqld[21937]: 2016-09-26T09:46:29.037709Z 0 [Warning] Changed limits: max_open_files: 1024 (requested 5000)
Sep 26 17:46:29 guest mysqld[21937]: 2016-09-26T09:46:29.037798Z 0 [Warning] Changed limits: max_connections: 214 (requested 350)
Sep 26 17:46:29 guest mysqld[21937]: 2016-09-26T09:46:29.037809Z 0 [Warning] Changed limits: table_open_cache: 400 (requested 2000)
Sep 26 17:46:29 guest mysqld[21937]: 2016-09-26T09:46:29.187886Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
Sep 26 17:46:29 guest mysqld[21937]: 2016-09-26T09:46:29.189296Z 0 [Note] /usr/sbin/mysqld (mysqld 5.7.15-0ubuntu0.16.04.1-log) starting as process 21937 ...
Sep 26 17:46:29 guest mysqld[21937]: 2016-09-26T09:46:29.191216Z 0 [ERROR] You have enabled the binary log, but you haven't provided the mandatory server-id. Please refer to the proper server start-up parameters documentation
Sep 26 17:46:29 guest mysqld[21937]: 2016-09-26T09:46:29.191242Z 0 [ERROR] Aborting
Sep 26 17:46:29 guest mysqld[21937]: 2016-09-26T09:46:29.191255Z 0 [Note] Binlog end
Sep 26 17:46:29 guest mysqld[21937]: 2016-09-26T09:46:29.191300Z 0 [Note] /usr/sbin/mysqld: Shutdown complete
Sep 26 17:46:29 guest systemd[1]: mysql.service: Main process exited, code=exited, status=1/FAILURE
Sep 26 17:46:32 guest NetworkManager[878]: <info>  [1474883192.2910] device (eth0): Lowering IPv6 MTU (9000) to match device MTU (1500)

Correr ulimit && ulimit -Same dá:

unlimited
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 128071
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 128071
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

1
Você pode anexar a saída de journalctl -xe | tail -50sua pergunta?
— LD James

@LDJames toda a saída? É bem grande. Ou são apenas os últimos bits?
— Edd

A saída será de 50 linhas. Na verdade, 15 ou 20 linhas devem ser suficientes. Você pode mudar -50para -15. Eu só queria ter certeza de incluir a linha em que o problema realmente está ocorrendo.
— LD James

@LDJames eu vejo, então é para isso que serve o comando tail. Eu adicionei uma journalctl -xe | tail -20saída.
— Edd

2
E a mensagem "ERRO: Você ativou o log binário ..."? Você pretendia fazer isso? O MySQL espera uma identificação de servidor, que eu só conheço nas configurações mestre-escravo.
— 26416 Jos

Respostas:


8

Erro fatal:

MYQL está falhando ao iniciar porque, como indica a saída do Journalctl, but you haven't provided the mandatory server-id. adicione o ID obrigatório conforme indicado no código abaixo.

/etc/mysql/mysql.conf.d/mysqld.cnf
Alterar de:

log-bin=mysql-bin
binlog-format = 'ROW'

Mudar para:

server-id=master-01
log-bin=mysql-bin
binlog-format = 'ROW'

Isso fará com que o servidor funcione enquanto você endereça a formatação correta do log desejado.

avisos não fatais:

Para o limite de arquivos abertos do seu erro, você deverá diminuir a demanda na configuração editada ou aumentar os limites do sistema com:

/etc/security/limits.conf

* soft nofile [new number]
* hard nofile [new number]

A primeira coluna descreve a OMS que o limite deve ser solicitado. ' ' é um curinga, ou seja, todos os usuários. Para aumentar os limites da raiz, você deve digitar explicitamente 'raiz' em vez de ' '.

Retirado de:
/ubuntu//a/162230/29012


Trabalhou! É por declarar explicitamente que é o dispositivo principal? Eu tentei colocar server-id = 1antes disso, mas não funcionou.
— Edd

em qual arquivo essas coisas devem mudar?
— Vijay Sharma

Para a mysqledição de configuração /etc/mysql/mysql.conf.d/mysqld.cnf. Para o sistema open files limitolhada: /etc/security/limits.conf . Atualizarei minha resposta com essas informações um pouco mais tarde. Você pode me informar se seu problema foi resolvido? Dessa forma, posso incluir qualquer outra informação pertinente na resposta.
— LD James

2

Recebi o mesmo erro, mas no meu caso, simplesmente o disco estava cheio. Certifique-se também de verificar isso.

df -h --total

+1 Foi isso para mim. Libere algum espaço e inicie o serviço.
— Saif

0

Resolva o problema:

  1. Adicionando Swapfile
  2. Adicionando innodb_buffer_pool_size = 20Mao arquivo de configuração, /etc/mysql/my.cnfgarantindo que ele esteja em um grupo

0

Meu problema é que o IP do host foi alterado.

Então edite o bind-addressin /etc/mysql/my.cnfpara o correto.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.