ไม่สามารถเริ่ม mysql - mysql ตอบสนองเร็วเกินไปหยุด


33

วันนี้ฉันติดตั้ง Ubuntu 12.04 ใหม่และไปตั้งค่าสภาพแวดล้อมการพัฒนาท้องถิ่นของฉัน ฉันติดตั้ง mysql และแก้ไข/etc/mysql/my.cnfเพื่อเพิ่มประสิทธิภาพ InnoDB แต่เมื่อฉันพยายามเริ่ม mysql ใหม่มันล้มเหลวด้วยข้อผิดพลาด:

[20:53][tom@Pochama:/var/www/website] (master) $ sudo service mysql restart
start: Job failed to start

syslog พบว่ามีปัญหากับสคริปต์เริ่มต้น:

> tail -f /var/log/syslog

Apr 28 21:17:46 Pochama kernel: [11840.884524] type=1400 audit(1335644266.033:184): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=760 comm="apparmor_parser"
Apr 28 21:17:47 Pochama kernel: [11842.603773] init: mysql main process (764) terminated with status 7
Apr 28 21:17:47 Pochama kernel: [11842.603841] init: mysql main process ended, respawning
Apr 28 21:17:48 Pochama kernel: [11842.932462] init: mysql post-start process (765) terminated with status 1
Apr 28 21:17:48 Pochama kernel: [11842.950393] type=1400 audit(1335644268.101:185): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=811 comm="apparmor_parser"
Apr 28 21:17:49 Pochama kernel: [11844.656598] init: mysql main process (815) terminated with status 7
Apr 28 21:17:49 Pochama kernel: [11844.656665] init: mysql main process ended, respawning
Apr 28 21:17:50 Pochama kernel: [11845.004435] init: mysql post-start process (816) terminated with status 1
Apr 28 21:17:50 Pochama kernel: [11845.021777] type=1400 audit(1335644270.173:186): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=865 comm="apparmor_parser"
Apr 28 21:17:51 Pochama kernel: [11846.721982] init: mysql main process (871) terminated with status 7
Apr 28 21:17:51 Pochama kernel: [11846.722001] init: mysql respawning too fast, stopped

ความคิดใด ๆ


สิ่งที่ฉันได้ลองไปแล้ว:

ฉัน googled และพบข้อบกพร่องของ Ubuntu ที่มี apparmor ( https://bugs.launchpad.net/ubuntu/+source/mysql-5.5/+bug/970366 ) ฉันเปลี่ยน apparmor จากโหมดบังคับเป็นโหมดบ่น:

sudo apt-get install apparmor-utils
sudo aa-complain /usr/sbin/mysqld
sudo /etc/init.d/apparmor reload

แต่มันก็ไม่ได้ช่วยอะไร ฉันยังไม่สามารถเริ่ม mysql ได้

ฉันยังคิดว่าปัญหาอาจเป็นเพราะ InnoDB logfiles มีขนาดแตกต่างจาก mysql ที่คาดไว้ ฉันออกไฟล์บันทึก InnoDB sudo mv /var/lib/mysql/ib_logfile* /tmpก่อนที่จะเริ่มต้นใหม่โดยใช้: ไม่มีโชค แต่

วิธีแก้ปัญหา:ฉันติดตั้ง 12.04 อีกครั้งตรวจสอบให้แน่ใจว่าไม่ได้สัมผัส/etc/mysql/my.cnfแต่อย่างใด Mysql ทำงานเพื่อที่ฉันจะได้รับในสิ่งที่ฉันต้องทำ แต่ฉันจะต้องแก้ไขมันในบางจุด - หวังว่าฉันจะหาวิธีแก้ปัญหาได้มิฉะนั้นคำถามนี้จะได้รับคำตอบจากจุดนั้น ...

คำตอบ:


29

ในที่สุดฉันก็พบปัญหา โดยทั่วไปนิยามของพารามิเตอร์บางตัวถูกลบออกจาก mysql รุ่นก่อนหน้าและถูกแทนที่ด้วยชื่ออื่น ในการแก้ไขใน /etc/mysql/my.cnf ให้แทนที่:

# Tom Added to ensure the server character set is set to utf8
default-character-set = utf8
default-collation     = utf8_general_ci

ด้วย:

# Tom Added to ensure the server character set is set to utf8
character_set_server  = utf8
collation_server      = utf8_general_ci

รายงานนี้เป็นรายงานข้อผิดพลาด Launchpad เกี่ยวข้อง: https://bugs.launchpad.net/ubuntu/+source/mysql-5.5/+bug/958120

หรือเรียกใช้อย่างง่ายดาย:

# Miraz added dpkg-reconfigure
dpkg-reconfigure mysql-server-5.5

แต่ตรวจสอบให้แน่ใจว่าไม่มีการติดตั้งเวอร์ชัน mysql เก่าที่ติดตั้งไว้ถ้ามีโปรดลบ:

# Miraz quick mysql package check
dpkg -l *mysql*

ฉันไม่ได้มีปัญหานี้ แต่dpkg-reconfigure mysql-server-5.5แก้ไขสิ่งที่ผิดพลาดในการกำหนดค่าของฉัน
David Purdue

ในกรณีของฉันปัญหากลายเป็นชื่อคุณสมบัติที่พิมพ์ผิดใน /etc/mysql/my.cnf.... จากบล็อกนี้: dangtrinh.com/2014/05/ … , รัน mysqld -v ฉันลอง googling mysql exit code 7 ไม่สำเร็จ ฉันเดาว่าเป็นรหัสทางออก 7 เกี่ยวข้องกับความล้มเหลวในการแยกไฟล์การกำหนดค่า mysql
MaasSql

ฉันมีปัญหาเดียวกันนี้ แต่พบว่ายากที่จะติดตามเนื่องจากการกำหนดค่าผิดพลาดของฉันอยู่ภายใต้ /etc/mysql/conf.d/* และเนื่องจากมีบันทึกเก่า ๆ ที่เรียกว่า /var/log/mysql.* ซึ่งทำให้ฉันไม่สังเกตเห็น บันทึกการใช้งาน / var / log / mysql / *
เดฟเบิ

1
หมายเหตุด้านข้าง: utf8_unicode_ciดีกว่า ตอนนี้แม้แต่utf8mb4_unicode_ci
Akshay

10

Innodb มีการตั้งค่าเริ่มต้น (innodb_buffer_pool_size) ซึ่งตั้งไว้ที่ 128M - นี่อาจใหญ่เกินไปสำหรับเซิร์ฟเวอร์ของคุณ (โดยเฉพาะถ้าคุณใช้ Amazon EC2 AMI ขนาดเล็ก - ซึ่งฉันแก้ไข) การแก้ไขที่ได้ผลสำหรับฉันคือการเพิ่มสิ่งต่อไปนี้ สายไป /etc/mysql/my.cnf

innodb_buffer_pool_size = 16M

ฉันเขียนเกี่ยวกับการแก้ไขนี้ที่นี่http://www.mlynn.org/2012/07/mysql-5-5-on-ubuntu-12-04-job-failed-to-start


เปลี่ยนจาก VM ของฉันเป็นเพียงหน่วยความจำหมด การตั้งค่าที่innodb_buffer_pool_sizeต่ำกว่าเป็นส่วนหนึ่งของโซลูชัน แต่ระวังว่าคุณอาจมีหน่วยความจำไม่เพียงพอ
thaddeusmt

10

ฉันมีปัญหาที่คล้ายกัน มันน่าหงุดหงิดเพราะฉันไม่เห็นบันทึกข้อผิดพลาดใด ๆ ที่ระบุว่าปัญหาคืออะไร

ในกรณีของฉันค่าที่ฉันตั้งไว้สำหรับ innodb_buffer_pool_size ใหญ่เกินไปสำหรับหน่วยความจำของเซิร์ฟเวอร์

ฉันพบสิ่งนี้โดยใช้ mysqld โดยตรงในฐานะผู้ใช้ mysql

# su mysql
# mysqld

วิธีนี้คุณเห็นผลลัพธ์ข้อผิดพลาดจริง


2
นี่เป็นเคล็ดลับที่ยอดเยี่ยมฉันพยายามดิ้นรนเพื่อให้ได้ข้อมูลการดีบักที่มีความหมายจาก mysql ขอบคุณ!
eageranalyst

3

ฉันยังมีปัญหาที่คล้ายกัน รายการด้านล่างบอกว่าพวกเขาถูกลบออกจากเซิร์ฟเวอร์ mysql 5.5
หากคุณมีพวกเขาในของคุณmy.cnfมันจะไม่เริ่ม #แสดงความคิดเห็นกับพวกเขาออก
(ข้อมูลมาจาก: http://dev.mysql.com/doc/refman/5.5/en/replication-options-slave.html )

ตัวเลือกที่ได้รับผลกระทบจะแสดงในรายการนี้:

 --master-host
 --master-user
 --master-password
 --master-port
 --master-connect-retry
 --master-ssl
 --master-ssl-ca
 --master-ssl-capath
 --master-ssl-cert
 --master-ssl-cipher
 --master-ssl-key

ที่สมบูรณ์แบบ! สิ่งที่กำลังไล่ฉันออกไป ขอบคุณ
Jim W.

3

มันดูเหมือนว่าจะต้มลงไปข้อผิดพลาดในการกำหนดค่า MySQL ที่ตั้งอยู่ในและไฟล์ใน/etc/mysql/my.cnf/etc/mysql/conf.d/

ในกรณีของฉันมันเป็นbind-addressค่าที่ผิดเพราะที่อยู่ IP ของเครื่องของฉันเปลี่ยนไปและ MySQL ก็ไม่สามารถผูกอีกต่อไปได้ รู้สึกอิสระที่จะเรียเพิ่มเติมเกี่ยวกับเรื่องนี้ในบทความบล็อกนี้


2

วิธีที่ดีในการดีบักความล้มเหลวในกระบวนการหลังการเริ่มต้น ( /etc/init/mysql.conf) คือการตรวจสอบบันทึกการพุ่งพรวด:

sudo tail -f /var/log/upstart/mysql.log 

ที่ทำให้ฉันมีข้อผิดพลาดซ็อกเก็ต:

ข้อผิดพลาด: 'ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ MySQL ภายในผ่านซ็อกเก็ต

ในกรณีของฉันมันเกิดจากการuserตั้งค่าที่ขาดหายไปภายใต้[mysqld]กลุ่มในmy.cnf


1

เมื่อฉันมีข้อผิดพลาด MySQL ที่คล้ายกัน ("งานล้มเหลวในการเริ่มต้น") หลังจากอัปเกรดจาก 11.10 เป็น 12.04 แสดงความคิดเห็น # 27 บนhttps://bugs.launchpad.net/ubuntu/+source/mysql-dfsg-5.1/+bug/ 573318? comments = ทั้งหมดทำงานได้อย่างสมบูรณ์แบบสำหรับฉัน อ้างถึง:

ปัญหาสำหรับฉันคือไฟล์ /etc/apparmor.d/local/usr.sbin.mysqld ไม่มีอยู่หลังจากการอัพเกรด ฉันคัดลอกหนึ่งจากหนึ่งในว่างเปล่าด้วยตนเอง (เช่นมีเพียงความคิดเห็นส่วนหัว) แล้วทุกอย่างก็ดีไป


1

สำหรับฉันทางออกคือการลบบรรทัด ...

set-variable = max_connections=200

... ซึ่งเป็น MySQL 3.x syntax และจำเป็นต้องเปลี่ยนเป็น

max_connections=200

1

ฉันมีปัญหาเดียวกัน มันกลายเป็น mysql my.cnf master slave replications /var/log/mysql/error.logตรวจสอบของคุณ

ฉันหวังว่านั่นจะช่วยได้เล็กน้อย ตรวจสอบการตั้งค่า mysql ก่อนที่คุณจะเสียเวลาสองชั่วโมงด้วย apparmor ซึ่งใช้งานได้ดี


1

ฉันมีปัญหาเดียวกันสำหรับฉันแล้วการbind-addressตั้งค่าไม่ถูกต้องใน/etc/mysql/my.cnfไฟล์ของฉัน ดังนั้นดูเหมือนว่าอะไรที่ไม่ถูกต้องใน my.cnf อาจทำให้เกิดปัญหานี้ ฉันไม่พบสิ่งใดในบันทึกที่ระบุว่านี่เป็นปัญหา



1

ตรวจสอบการ/tmpอนุญาต ฉันมีปัญหานี้หลังจาก googleing และเริ่มใหม่หลายครั้งฉันพบว่าการ/tmpอนุญาตคือ 755

ฉันเปลี่ยนเป็น 777 และmysqlเริ่มต้นได้ดี


สิ่งนี้เป็นของโบราณ แต่นี่เป็นปัญหาของฉัน .... ไม่ได้เปลี่ยนว่า ...
TheHidden

ในบางกรณีโดยการเปลี่ยนระบบไฟล์หรือติดตั้ง/tmpบนพาร์ติชันใหม่
shgnInc

1

หลังจากอัปเดตอัตโนมัติเป็น mysqld-5.5.53 Ubuntu 14.04.1 แล้ว mysql จะไม่เริ่มทำงาน บรรทัดเหล่านี้ปรากฏใน syslog ของฉัน:

Oct 27 06:05:51 hostname kernel: [  593.168925] init: mysql post-start process (4997) terminated with status 1
Oct 27 06:05:51 hostname kernel: [  593.178241] type=1400 audit(1477562751.231:31): apparmor="STATUS" operation="profile_replace" profile="unconfined" name
Oct 27 06:05:51 hostname kernel: [  593.204392] init: mysql main process (5032) terminated with status 1
Oct 27 06:05:51 hostname kernel: [  593.204404] init: mysql respawning too fast, stopped

ปัญหาได้รับการแก้ไขโดยการสร้างไดเรกทอรีนี้:

sudo mkdir /var/lib/mysql-files
sudo chmod 700 /var/lib/mysql-files
sudo chown mysql:mysql /var/lib/mysql-files
sudo /etc/init.d/mysql start

0

เพิ่งอัพเดต MySQL และเวอร์ชั่น AppArmor ตามที่แนะนำไว้ที่นี่เพื่อแก้ไขปัญหานี้บน Ubuntu 12.04 ที่ทำงานบนอินสแตนซ์ Amazon ec2 ฉันยังคงได้รับข้อผิดพลาดสองสามครั้ง แต่ MySQL รีสตาร์ทตัวเองโดยอัตโนมัติ


1
ยินดีต้อนรับสู่ถาม Ubuntu! ในขณะที่สิ่งนี้อาจตอบคำถามในทางทฤษฎีมันก็ควรที่จะรวมส่วนที่สำคัญของคำตอบที่นี่และให้ลิงค์สำหรับการอ้างอิง
Ringtail

0

ฉันมีข้อความแสดงข้อผิดพลาดเหมือนกัน แต่สาเหตุนั้นแตกต่างกัน ตาราง InnoDB ของฉันเสียหายเนื่องจากระบบไฟล์ทั้งหมดเข้าสู่โหมดอ่านอย่างเดียว ฉันแก้ไขความเสียหายด้วยการเพิ่มบรรทัดต่อไปนี้ใน /etc/mysql/my.cf

innodb_force_recovery = 1

ฉันเริ่ม MySQL:

sudo service mysql start

MySQL เริ่มต้นแล้วและฉันก็ทิ้ง / ส่งออกตารางทั้งหมด ฉันเปลี่ยน innodb_force_recovery เป็น 0 (= ค่าเริ่มต้น) และเริ่ม MySQL ใหม่:

sudo service mysql restart

ฉันใช้ Ubuntu 12.04 กับ MySQL 5.5 ใช้เวลานานก่อนที่ฉันจะพบปัญหาและฉันหวังว่าฉันสามารถช่วยคนที่มีคำตอบนี้ ดูเพิ่มเติมที่http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html


0

ในกรณีของฉันปัญหาคือการ/etc/mysql/my.cnfอนุญาตไฟล์

ฉันเปลี่ยนมันเพื่อความสะดวก แต่มันทำให้เกิดความรัก

kernel: [604528.290448] type=1400 audit(1424350956.727:193): apparmor="STATUS" operation="profile_replace" profile="unconfined" name="/usr/sbin/mysqld" pid=15008 comm="apparmor_parser"

การmy.cnfอนุญาตคือ 766 และฉันเปลี่ยนเป็น 744 และข้อผิดพลาดสองสามข้อหายไป ยังคงมีข้อความแสดงข้อผิดพลาดที่คล้ายกันอยู่หนึ่งข้อ แต่ไม่ได้ป้องกันการเริ่ม mysql

หวังว่านี่จะช่วย ...


0

ในกรณีของฉันฉันมีการbind-addressประกาศผิด ฉันวิ่งifconfigไปค้นพบที่อยู่ IP ส่วนตัวของ EC2 และอัปเดตใน/etc/mysql/my.cnfไฟล์


0

ในกรณีของฉันฉันพบปัญหาสิทธิ์ใน / tmp ฉันเพิ่งกำหนดสิทธิ์ไดเรกทอรี tmp เป็น 766 และเริ่มบริการ mysql แก้ไขแล้ว

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