MySQL не удалось перезапустить на Ubuntu 16.04

14

Я пытаюсь перезапустить MySQL после сохранения скрипта. Состояние ошибки

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

При запуске systemctl status mysql.serviceвот что я получаю:

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

Я не уверен, с чего начать это исправить.

Это скрипт, который я сохранил до перезапуска MySQL:

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

Бег journalctl -xe | tail -20дает мне это:

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)

Бег ulimit && ulimit -Saдает мне:

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
Можете ли вы добавить вывод journalctl -xe | tail -50к вашему вопросу?
Л.Д. Джеймс
@LDJames весь вывод? Это довольно большой. Или это только последние несколько бит?
Эдд
На выходе будет 50 строк. На самом деле должно хватить 15 или 20 строк. Вы можете изменить -50To -15. Я просто хотел быть уверен, чтобы включить строку, где на самом деле происходит проблема.
Л.Д. Джеймс
@LDJames Я вижу, вот для чего предназначена команда tail. Я добавил journalctl -xe | tail -20вывод.
Эдд
2
А как насчет сообщения «ОШИБКА: вы включили двоичный журнал ...»? Ты намеревался это сделать? MySQL ожидает там идентификатор сервера, который я знаю только из установок master-slave.
Джос

Ответы:

8

Фатальная ошибка:

MYQL не запускается, потому что, как показывает вывод Journalctl, but you haven't provided the mandatory server-id. добавьте обязательный идентификатор, как указано в коде ниже.

/etc/mysql/mysql.conf.d/mysqld.cnf
Меняться от:

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

Изменить на:

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

Это заставит ваш сервер работать, пока вы решите правильное форматирование желаемой регистрации.

Не смертельные предупреждения:

Чтобы ограничить количество открытых ошибок в вашей ошибке, вам придется либо уменьшить потребность в редактируемой вами конфигурации, либо увеличить пределы системы с помощью:

/etc/security/limits.conf

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

В первом столбце описывается ВОЗ, на которую должен претендовать предел. ' ' - это подстановочный знак, означающий всех пользователей. Чтобы повысить ограничения для root, вы должны явно ввести «root» вместо « ».

Взято из:
/ubuntu//a/162230/29012

Л.Д. Джеймс
источник
Работал! Это из-за явного указания, что это главное устройство? Я пытался вставить server-id = 1до этого, но это не сработало.
Эд
в каком файле эти вещи должны измениться?
Виджай Шарма
Для mysqlредактирования конфигурации /etc/mysql/mysql.conf.d/mysqld.cnf. Для системы open files limitсмотрят на: /etc/security/limits.conf . Я обновлю свой ответ этой информацией чуть позже. Можете ли вы сообщить мне, если ваша проблема будет решена? Таким образом, я могу включить любую другую подходящую информацию в ответ.
Л.Д. Джеймс
2

Получил ту же ошибку, но в моем случае просто диск был заполнен. Не забудьте также проверить это.

df -h --total
Синьсинь
источник
+1 Это было для меня. Освободите место и запустите сервис.
Саиф
0

Решить проблему путем:

  1. Добавление файла подкачки
  2. Добавление innodb_buffer_pool_size = 20Mв файл конфигурации, /etc/mysql/my.cnfчтобы убедиться, что он в группе
Эмма
источник
0

Моя проблема в том, что IP-адрес хоста изменился.

Так что отредактируйте bind-addressв /etc/mysql/my.cnfправильном.

yangsibai
источник