MySQL konnte unter Ubuntu 16.04 nicht neu gestartet werden

14

Ich versuche, MySQL nach dem Speichern eines Skripts neu zu starten. Der Fehler besagt

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

Beim Laufen systemctl status mysql.servicebekomme ich folgendes:

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

Ich bin mir nicht sicher, wo ich anfangen soll, das zu beheben.

Dies ist das Skript, das ich vor dem Neustart von mysql gespeichert habe:

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

Laufen journalctl -xe | tail -20gibt mir das:

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)

Laufen ulimit && ulimit -Sagibt mir:

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
Edd
quelle
1
Können Sie die Ausgabe von journalctl -xe | tail -50an Ihre Frage anhängen ?
LD James
@LDJames die ganze Ausgabe? Es ist ziemlich groß. Oder sind es nur die letzten paar Bits?
Edd
Die Ausgabe wird 50 Zeilen sein. Eigentlich sollten 15 oder 20 Zeilen ausreichen. Sie können das -50zu ändern -15. Ich wollte nur sichergehen, dass die Zeile angegeben wird, in der das eigentliche Problem auftritt.
LD James
@LDJames Ich verstehe, das ist also, wofür der Befehl tail ist. Ich habe eine journalctl -xe | tail -20Ausgabe hinzugefügt .
Edd
2
Was ist mit der Meldung "FEHLER: Sie haben das binäre Protokoll aktiviert ..."? Wolltest du das machen? MySQL erwartet dort eine Server-ID, die ich nur von Master-Slave-Setups kenne.
Jos

Antworten:

8

Fataler Fehler:

MYQL kann nicht gestartet werden, da, wie in der Journalctl-Ausgabe angegeben, but you haven't provided the mandatory server-id. die obligatorische ID wie im folgenden Code angegeben hinzugefügt wird .

/etc/mysql/mysql.conf.d/mysqld.cnf
Wechsel von:

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

Ändern:

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

Dadurch wird Ihr Server in Betrieb genommen, während Sie die richtige Formatierung der gewünschten Protokollierung vornehmen.

Nicht tödliche Warnungen:

Für das Limit für offene Dateien Ihres Fehlers müssen Sie entweder die Anforderung in der von Ihnen bearbeiteten Konfiguration verringern oder die Systemlimits erhöhen mit:

/etc/security/limits.conf

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

In der ersten Spalte wird beschrieben, für wen das Limit gelten soll. ' ' ist ein Platzhalter für alle Benutzer. Um die Grenzen für root zu erhöhen, müssen Sie explizit 'root' anstelle von ' ' eingeben .

Entnommen aus:
/ubuntu//a/162230/29012

LD James
quelle
Hat funktioniert! Liegt es daran, explizit anzugeben, dass es sich um das Master-Gerät handelt? Ich habe versucht, es server-id = 1vorher einzubauen, aber es hat nicht funktioniert.
Edd
in welcher datei sollen sich diese dinge ändern?
Vijay Sharma
Für die mysqlKonfiguration bearbeiten /etc/mysql/mysql.conf.d/mysqld.cnf. Für das System open files limitsehen: /etc/security/limits.conf . Ich werde meine Antwort etwas später mit diesen Informationen aktualisieren. Können Sie mir mitteilen, ob Ihr Problem behoben ist? Auf diese Weise kann ich andere relevante Informationen in die Antwort aufnehmen.
LD James
2

Habe den gleichen Fehler bekommen, aber in meinem Fall war einfach die Festplatte voll. Stellen Sie auch sicher, dass Sie dies überprüfen.

df -h --total
Xinxin
quelle
+1 Das war es für mich. Geben Sie Speicherplatz frei und starten Sie den Dienst.
Saif
0

Beheben Sie das Problem durch:

  1. Swapfile hinzufügen
  2. Hinzufügen innodb_buffer_pool_size = 20Mzur Konfigurationsdatei, /etc/mysql/my.cnfum sicherzustellen, dass sie sich in einer Gruppe befindet
Emma
quelle
0

Mein Problem ist, dass die IP des Hosts geändert wird.

So bearbeiten Sie die bind-addressin /etc/mysql/my.cnfder richtigen.

yangsibai
quelle