MySQL n'a pas réussi à redémarrer sur Ubuntu 16.04

14

J'essaie de redémarrer MySQL après avoir enregistré un script. Les états d'erreur

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

Lors de l'exécution, systemctl status mysql.servicevoici ce que j'obtiens:

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

Je ne sais pas par où commencer à résoudre ce problème.

Voici le script que j'ai enregistré avant de redémarrer mysql:

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

La course journalctl -xe | tail -20me donne ceci:

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)

La course ulimit && ulimit -Same donne:

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
la source
1
Pouvez-vous ajouter la sortie de journalctl -xe | tail -50à votre question?
LD James
@LDJames la sortie entière? C'est assez grand. Ou est-ce juste les derniers bits?
Edd
La sortie sera de 50 lignes. En fait, 15 ou 20 lignes devraient suffire. Vous pouvez changer le -50en -15. Je voulais juste être sûr d'inclure la ligne où le problème se produit réellement.
LD James
@LDJames Je vois, c'est donc à ça que sert la commande tail. J'ai ajouté une journalctl -xe | tail -20sortie.
Edd
2
Qu'en est-il du message "ERREUR: vous avez activé le journal binaire ..."? Aviez-vous l'intention de faire cela? MySQL attend un identifiant de serveur là-bas, que je ne connais que par les configurations maître-esclave.
Jos

Réponses:

8

Erreur fatale:

MYQL ne démarre pas car, comme l'indique la sortie Journalctl, but you haven't provided the mandatory server-id. ajoutez l'ID obligatoire comme indiqué dans le code ci-dessous.

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

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

Changer pour:

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

Cela permettra à votre serveur de fonctionner pendant que vous abordez le formatage approprié de la journalisation souhaitée.

avertissements non mortels:

Pour la limite de fichiers ouverts de votre erreur, vous devrez soit diminuer la demande dans la configuration que vous avez modifiée, soit augmenter les limites du système avec:

/etc/security/limits.conf

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

La première colonne décrit QUI la limite est à demander. ' ' est un caractère générique, c'est-à-dire tous les utilisateurs. Pour augmenter les limites de root, vous devez entrer explicitement 'root' au lieu de ' '.

Tiré de:
/ubuntu//a/162230/29012

LD James
la source
Travaillé! Est-ce parce qu'il déclare explicitement qu'il s'agit du périphérique maître? J'ai essayé de mettre server-id = 1avant, mais cela n'a pas fonctionné.
Edd
dans quel dossier ces choses devraient changer?
Vijay Sharma
Pour la mysqlconfiguration, éditez /etc/mysql/mysql.conf.d/mysqld.cnf. Pour le système open files limitde regard sur: /etc/security/limits.conf . Je mettrai à jour ma réponse avec ces informations un peu plus tard. Pouvez-vous me faire savoir si votre problème est résolu? De cette façon, je peux inclure toute autre information pertinente dans la réponse.
LD James
2

Vous avez la même erreur, mais dans mon cas, le disque était simplement plein. Assurez-vous également de vérifier cela.

df -h --total
xinxin
la source
+1 C'était tout pour moi. Libérez de l'espace et démarrez le service.
Saif
0

Résolvez le problème en:

  1. Ajout d'un fichier d'échange
  2. Ajout innodb_buffer_pool_size = 20Mau fichier de configuration /etc/mysql/my.cnfen s'assurant qu'il est dans un groupe
Emma
la source
0

Mon problème est que l'adresse IP de l'hôte a changé.

Modifiez donc l'entrée bind-addressdans /etc/mysql/my.cnfla bonne.

Yangsibai
la source