Ponowne uruchomienie MySQL na Ubuntu 16.04

14

Próbuję zrestartować MySQL po zapisaniu skryptu. Stan błędu

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

Podczas biegania systemctl status mysql.serviceotrzymuję:

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

Nie jestem pewien, od czego zacząć to naprawiać.

Oto skrypt, który zapisałem przed ponownym uruchomieniem mysql:

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

Bieganie journalctl -xe | tail -20daje mi to:

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)

Bieganie ulimit && ulimit -Sadaje mi:

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
źródło
1
Czy możesz dołączyć wynik journalctl -xe | tail -50swojego pytania?
LD James
@LDJames całe wyjście? Jest dość duży. A może to tylko kilka ostatnich bitów?
Edd
Wyjście wyniesie 50 linii. Właściwie powinno wystarczyć 15 lub 20 linii. Można zmienić -50TO -15. Chciałem tylko upewnić się, że dołączę wiersz, w którym rzeczywiście występuje problem.
LD James
@LDJames Widzę, więc po to jest komenda tail. Dodałem journalctl -xe | tail -20wyjście.
Edd
2
Co z komunikatem „BŁĄD: Włączyłeś dziennik binarny ...”? Czy miałeś zamiar to zrobić? MySQL oczekuje tam identyfikatora serwera, który znam tylko z konfiguracji master-slave.
Jos

Odpowiedzi:

8

Błąd krytyczny:

Uruchomienie MYQL nie powiodło się, ponieważ jak wskazuje wynik Journalctl, but you haven't provided the mandatory server-id. dodaj obowiązkowy identyfikator, jak wskazano w poniższym kodzie.

/etc/mysql/mysql.conf.d/mysqld.cnf
Zmień z:

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

Zmień na:

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

Spowoduje to uruchomienie serwera podczas poprawiania formatowania żądanego logowania.

ostrzeżenia inne niż śmiertelne:

W przypadku limitu otwartych plików dla błędu musisz zmniejszyć zapotrzebowanie w edytowanej konfiguracji lub zwiększyć limity systemowe za pomocą:

/etc/security/limits.conf

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

Pierwsza kolumna opisuje, kogo dotyczy limit. „ ” to symbol wieloznaczny, co oznacza wszystkich użytkowników. Aby podnieść limity rootowania, musisz jawnie wpisać „root” zamiast „ ”.

Pobrano z:
/ubuntu//a/162230/29012

LD James
źródło
Pracował! Czy wynika to z jednoznacznego stwierdzenia, że ​​jest to urządzenie główne? Próbowałem server-id = 1to zrobić wcześniej, ale to nie działało.
Edd
w jakim pliku te rzeczy powinny się zmienić?
Vijay Sharma
Do mysqledycji konfiguracji /etc/mysql/mysql.conf.d/mysqld.cnf. Dla systemu open files limitspojrzenie na: /etc/security/limits.conf . Nieco później zaktualizuję swoją odpowiedź tymi informacjami. Czy możesz dać mi znać, jeśli Twój problem zostanie rozwiązany? W ten sposób mogę dołączyć do odpowiedzi wszelkie inne istotne informacje.
LD James,
2

Wystąpił ten sam błąd, ale w moim przypadku po prostu dysk był pełny. Upewnij się również, aby to sprawdzić.

df -h --total
xinxin
źródło
+1 To było dla mnie. Zwolnij trochę miejsca i uruchom usługę.
Saif
0

Rozwiąż problem przez:

  1. Dodawanie pliku wymiany
  2. Dodanie innodb_buffer_pool_size = 20Mdo pliku konfiguracyjnego /etc/mysql/my.cnfupewniając się, że jest w grupie
Emma
źródło
0

Mój problem polega na tym, że adres IP hosta został zmieniony.

Więc edytuj bind-addressw /etc/mysql/my.cnfodpowiednim.

yangsibai
źródło