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.