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คำถามของคุณได้หรือไม่?
LD James

@LDJames ผลผลิตทั้งหมดหรือไม่ มันค่อนข้างใหญ่ หรือมันเป็นเพียงไม่กี่บิตสุดท้าย?
Edd

ผลลัพธ์จะเป็น 50 บรรทัด จริง ๆ 15 หรือ 20 บรรทัดควรพอเพียง คุณสามารถเปลี่ยนไป-50 -15ฉันแค่ต้องการให้แน่ใจว่าได้รวมบรรทัดที่มีปัญหาเกิดขึ้นจริง
LD James

@LDJames ฉันเข้าใจแล้วนั่นคือสิ่งที่คำสั่ง tail มีไว้สำหรับ ฉันได้เพิ่มjournalctl -xe | tail -20เอาท์พุท
Edd

2
สิ่งที่เกี่ยวกับข้อความ "ข้อผิดพลาด: คุณได้เปิดใช้งานบันทึกไบนารี ... "? คุณตั้งใจจะทำเช่นนั้น? MySQL คาดว่าจะมี id เซิร์ฟเวอร์ที่ฉันรู้จากการตั้งค่า master-slave เท่านั้น
Jos

คำตอบ:


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' แทน ' ' อย่างชัดเจน

นำมาจาก:
/ubuntu//a/162230/29012


ทำงาน! เป็นเพราะการระบุอย่างชัดเจนว่าเป็นอุปกรณ์หลักหรือไม่ ฉันลองใส่server-id = 1ก่อนหน้านี้ แต่มันไม่ทำงาน
Edd

ไฟล์เหล่านี้ควรเปลี่ยนแปลงสิ่งใด?
Vijay Sharma

สำหรับการแก้ไขการตั้งค่าmysql /etc/mysql/mysql.conf.d/mysqld.cnfสำหรับการopen files limitมองของระบบ: /etc/security/limits.conf . ฉันจะอัปเดตคำตอบด้วยข้อมูลนี้ในภายหลัง คุณช่วยบอกฉันได้ไหมว่าปัญหาของคุณได้รับการแก้ไขแล้วหรือไม่? วิธีนี้ฉันสามารถรวมข้อมูลที่เกี่ยวข้องอื่น ๆ ในคำตอบ
LD James

2

มีข้อผิดพลาดเดียวกัน แต่ในกรณีของฉันเพียงแค่ดิสก์เต็ม ตรวจสอบให้แน่ใจเพื่อตรวจสอบสิ่งนี้

df -h --total

+1 นี่มันสำหรับฉัน เพิ่มพื้นที่ว่างและเริ่มให้บริการ
Saif

0

แก้ไขปัญหาโดย:

  1. เพิ่ม Swapfile
  2. การเพิ่มinnodb_buffer_pool_size = 20Mลงในไฟล์กำหนดค่า/etc/mysql/my.cnfทำให้แน่ใจว่าอยู่ในกลุ่ม

0

ปัญหาของฉันคือ IP ของโฮสต์เปลี่ยนไป

ดังนั้นแก้ไขbind-addressใน/etc/mysql/my.cnfเป็นที่ถูกต้อง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.