MySQL non è stato riavviato su Ubuntu 16.04


14

Sto cercando di riavviare MySQL dopo aver salvato uno script. L'errore indica

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

Quando corro systemctl status mysql.serviceecco cosa ottengo:

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

Non sono sicuro da dove iniziare a risolvere questo problema.

Questo è lo script che ho salvato prima di riavviare mysql:

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

Correre journalctl -xe | tail -20mi dà questo:

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)

Correre ulimit && ulimit -Sami 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
Puoi aggiungere l'output journalctl -xe | tail -50alla tua domanda?
LD James,

@LDJames l'intero output? È abbastanza grande. O sono solo gli ultimi bit?
Edd,

L'output sarà di 50 righe. In realtà dovrebbero bastare 15 o 20 righe. È possibile modificare l' -50a -15. Volevo solo essere sicuro di includere la riga in cui si sta verificando il problema.
LD James,

@LDJames, vedo, quindi è per questo che serve il comando tail. Ho aggiunto un journalctl -xe | tail -20output.
Edd,

2
Che dire del messaggio "ERRORE: hai abilitato il registro binario ..."? Hai intenzione di farlo? MySQL si aspetta un ID server lì, che conosco solo dalle configurazioni master-slave.
Jos,

Risposte:


8

Errore fatale:

MYQL non si avvia perché, come indicato dall'output Journalctl, but you haven't provided the mandatory server-id. aggiungere l'id obbligatorio come indicato nel codice seguente.

/etc/mysql/mysql.conf.d/mysqld.cnf
Cambio da:

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

Passare a:

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

Questo farà funzionare il tuo server mentre ti occupi della corretta formattazione della registrazione desiderata.

avvertenze non fatali:

Per il limite di file aperti del tuo errore dovrai ridurre la richiesta nella configurazione modificata o aumentare i limiti del sistema con:

/etc/security/limits.conf

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

La prima colonna descrive l'OMS a cui applicare il limite. ' ' è un carattere jolly, ovvero tutti gli utenti. Per aumentare i limiti di root, devi inserire esplicitamente 'root' invece di ' '.

Tratto da:
/ubuntu//a/162230/29012


Lavorato! È a causa del dichiarare esplicitamente che è il dispositivo principale? Ho provato a server-id = 1inserirlo prima, ma non ha funzionato.
Edd,

in quale file dovrebbero cambiare queste cose?
Vijay Sharma,

Per la mysqlmodifica della configurazione /etc/mysql/mysql.conf.d/mysqld.cnf. Per il sistema open files limitun'occhiata a: /etc/security/limits.conf . Aggiornerò la mia risposta con queste informazioni un po 'più tardi. Potete farmi sapere se il vostro problema viene risolto? In questo modo posso includere qualsiasi altra informazione pertinente nella risposta.
LD James,

2

Ho avuto lo stesso errore, ma nel mio caso il disco era pieno. Assicurati anche di controllare questo.

df -h --total

+1 Questo è stato per me. Liberare spazio e avviare il servizio.
Saif,

0

Risolvi il problema:

  1. Aggiunta di Swapfile
  2. Aggiunta innodb_buffer_pool_size = 20Mal file di configurazione /etc/mysql/my.cnfassicurandosi che sia in un gruppo

0

Il mio problema è che l'IP dell'host è cambiato.

Quindi modifica bind-addressin /etc/mysql/my.cnfin quello corretto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.