ทำไมมาเรียบถึงตาย? ฉันจะหยุดมันได้อย่างไร


25

ฉันใช้ MariaDB 10.0.23-0 บน Ubuntu 15.10 เป็นเซิร์ฟเวอร์ LAMP แสดงsudo /etc/init.d/mysql startผลลัพธ์ใน:

Job for mariadb.service failed because a timeout was exceeded. See "systemctl status mariadb.service" and "journalctl -xe" for details.

ผลลัพธ์ของsystemctl status mariadb.serviceคือ:

● mariadb.service - เซิร์ฟเวอร์ฐานข้อมูล MariaDB
   โหลดแล้ว: โหลดแล้ว (/lib/systemd/system/mariadb.service; เปิดใช้งาน; ค่าที่ตั้งไว้ล่วงหน้าของผู้ขาย: เปิดใช้งาน)
  ดร็อปอิน: /etc/systemd/system/mariadb.service.d
           └─migratedจากที่ my.cnf-settings.conf
   ใช้งานอยู่: ล้มเหลว (ผลลัพธ์: หมดเวลา) ตั้งแต่วันเสาร์ที่ 2016-03-26 22:52:42 EDT; 26 วินาทีที่แล้ว
  กระบวนการ: 8707 ExecStart = / usr / sbin / mysqld $ MYSQLD_OPTS $ _WSREP_NEW_CLUSTER (รหัส = ออกจากสถานะ = 0 / สำเร็จ)
  กระบวนการ: 8706 ExecStartPre = / usr / bin / ติดตั้ง -m 755 -o mysql -g root -d / var / run / mysqld (รหัส = ออกจากสถานะ = 0 / สำเร็จ)
 PID หลัก: 8707 (รหัส = ออกจากสถานะ = 0 / สำเร็จ)

26 มีนาคม 22:52:39 boggan systemd [1]: mariadb.service: เริ่มการทำงานหมดเวลา ยกเลิก
26 มีนาคม 22:52:39 boggan mysqld [8707]: 2016-03-26 22:52:39 140105856617216 [หมายเหตุ] / usr / sbin / mysqld: ปิดปกติ
26 มีนาคม 22:52:39 boggan mysqld [8707]: 2016-03-26 22:52:39 140105856617216 [หมายเหตุ] ตัวกำหนดเหตุการณ์: ล้างคิว 0 กิจกรรม
26 มีนาคม 22:52:39 boggan mysqld [8707]: 2016-03-26 22:52:39 140104920164096 [หมายเหตุ] InnoDB: FTS เพิ่มประสิทธิภาพการออกจากเธรด
26 มีนาคม 22:52:39 boggan mysqld [8707]: 2016-03-26 22:52:39 140105856617216 [หมายเหตุ] InnoDB: เริ่มปิด ...
26 มีนาคม 22:52:42 boggan mysqld [8707]: 2016-03-26 22:52:42 140105856617216 [หมายเหตุ] InnoDB: เสร็จสิ้นการปิดเครื่อง; หมายเลขลำดับการบันทึก 3336953
26 มีนาคม 22:52:42 boggan mysqld [8707]: 2016-03-26 22:52:42 140105856617216 [หมายเหตุ] / usr / sbin / mysqld: ปิดเครื่องเสร็จสมบูรณ์
26 มีนาคม 22:52:42 boggan systemd [1]: ไม่สามารถเริ่มเซิร์ฟเวอร์ฐานข้อมูล MariaDB
26 มีนาคม 22:52:42 boggan systemd [1]: mariadb.service: หน่วยที่ป้อนล้มเหลว
26 มีนาคม 22:52:42 boggan systemd [1]: mariadb.service: ล้มเหลวด้วยผลลัพธ์ 'หมดเวลา'

systemdบรรทัดแรกมี "well duh" ฉันรู้ว่ามันหมดเวลาแล้ว ที่สองsystemdหลังจากที่mysqldสายเป็นลึกลับนิดเพราะมันไม่ในการเริ่มต้นความเป็นจริง แอปพลิเคชั่น (OwnCloud โดยเฉพาะ) ที่ขึ้นอยู่กับฐานข้อมูลทำงานได้ตามปกติ ... สำหรับนาทีและการเปลี่ยนแปลงที่ MariaDB ขึ้น

อีกคำถามที่แนะนำให้ใช้time /etc/init.d/mysql startเพื่อกำหนดระยะเวลาที่ใช้ ฉันวิ่งไปเรื่อย ๆ เพื่อยืนยันเวลา - สองสามวินาทีที่ด้านข้างของ 90s ในแต่ละครั้ง

การวิจัยอื่นทำให้ฉันตรวจสอบการอนุญาตของไฟล์ซึ่งก็ดี ... นอกจากนี้มันจะเริ่มทำงานชั่วคราว ฉันแหย่และแหย่สิ่งที่ดีที่สุดของความสามารถของฉัน (ยอมรับอย่าง จำกัด เมื่อพูดถึง Linux) และฉันไม่ได้ทำอะไรเลย

ดังนั้นคำถามคือ ... ฉันจะรับบริการ MariaDB ให้อยู่ได้อย่างไร?

ในฐานะที่เป็นริ้วรอยพิเศษหลังจากเขียนคำถามนี้ฉันทิ้งเครื่องไว้และทำงาน ฉันกลับมาที่มันในอีกหนึ่งสัปดาห์ต่อมา (ฉันไม่ได้แตะมันเลย) การใช้คำสั่งเดียวกันแบบเดียวกันsudo /etc/init.d/mysql startสำเร็จแล้ว ภูต mysql เริ่มต้นและวิ่ง; มันกลับมาพร้อมกับ[ ok ]รายงาน ฉันรีบูทเพื่อประโยชน์ของการทดลองและฉันกลับมาที่เดิมแล้ว

ในกรณีที่เป็นเรื่องสำคัญผลลัพธ์ของjournalctl -xeคือ:

02 เม.ย. 23:51:44 บ็อกแกน systemd [1]: หยุดอ่านไฟล์ที่ต้องการล่วงหน้า
- หัวเรื่อง: หน่วย ureadahead.service ปิดตัวลงแล้ว
- กำหนดโดย: systemd
- การสนับสนุน: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
- 
- หน่วย ureadahead.service ปิดการทำงานเรียบร้อยแล้ว
เม.ย. 02 23:51:55 boggan mysqld [2645]: 2016-04-02 23:51:55 140386161068800 [หมายเหตุ] InnoDB: ออนไลน์ DDL: เริ่ม
02 เมษายน 23:51:55 boggan mysqld [2645]: 2016-04-02 23:51:55 140386161068800 [หมายเหตุ] InnoDB: DDL ออนไลน์: เริ่มอ่านดัชนีคลัสเตอร์ของตารางและสร้างไฟล์ชั่วคราว
เม.ย. 02 23:51:55 boggan mysqld [2645]: 2016-04-02 23:51:55 140386161068800 [หมายเหตุ] InnoDB: DDL ออนไลน์: สิ้นสุดการอ่านดัชนีคลัสเตอร์ของตารางและสร้างไฟล์ชั่วคราว
เม.ย. 02 23:51:55 boggan mysqld [2645]: 2016-04-02 23:51:55 140386161068800 [หมายเหตุ] InnoDB: ออนไลน์ DDL: เสร็จสมบูรณ์
เม.ย. 02 23:51:55 boggan mysqld [2645]: 2016-04-02 23:51:55 140386161068800 [หมายเหตุ] InnoDB: ออนไลน์ DDL: เสร็จสมบูรณ์
02 เม.ย. 23:52:06 boggan dbus [713]: [ระบบ] ไม่สามารถเปิดใช้งานบริการ 'org.bluez': หมดเวลา
02 เม.ย. 23:52:37 boggan systemd [1]: mariadb.service: เริ่มการทำงานหมดเวลา ยกเลิก
Apr 02 23:52:37 boggan mysqld [2645]: 2016-04-02 23:52:37 140386097400576 [หมายเหตุ] / usr / sbin / mysqld: ปิดปกติ
เม.ย. 02 23:52:37 เคอร์เนล boggan: การตรวจสอบ: ชนิด = การตรวจสอบ 1400 (1459655557.935: 31): apparmor = "DENIED" การดำเนินการ = "sendmsg" profile = "/ usr / sbin / mysqld" ชื่อ = "/ run / systemd / แจ้งเตือน "pid = 2645 comm =" mysqld "ร้องขอ_mask =" w "ปฏิเสธ _mask =" w "fsuid = 122 ouid = 0
เม.ย. 02 23:52:37 การตรวจสอบ boggan [2645]: AVC apparmor = "DENIED" operation = "sendmsg" profile = "/ usr / sbin / mysqld" name = "/ run / systemd / แจ้ง" pid = 2645 comm = " mysqld "ร้องขอ_mask =" w "ปฏิเสธ _mask =" w "fsuid = 122 ouid = 0
เม.ย. 02 23:52:37 boggan mysqld [2645]: 2016-04-02 23:52:37 140386097400576 [หมายเหตุ] ตัวกำหนดเหตุการณ์: กวาดล้างคิว 0 กิจกรรม
02 เมษายน 23:52:37 boggan mysqld [2645]: 2016-04-02 23:52:37 140385225500416 [หมายเหตุ] InnoDB: FTS เพิ่มประสิทธิภาพการออกจากเธรด
เม.ย. 02 23:52:37 boggan mysqld [2645]: 2016-04-02 23:52:37 140386097400576 [หมายเหตุ] InnoDB: เริ่มปิด ...
เม.ย. 02 23:52:39 boggan mysqld [2645]: 2016-04-02 23:52:39 140386097400576 [หมายเหตุ] InnoDB: เสร็จสิ้นการปิดระบบแล้ว; หมายเลขลำดับการบันทึก 3360838
เม.ย. 02 23:52:39 boggan mysqld [2645]: 2016-04-02 23:52:39 140386097400576 [หมายเหตุ] / usr / sbin / mysqld: การปิดระบบเสร็จสมบูรณ์
เม.ย. 02 23:52:39 เคอร์เนล boggan: การตรวจสอบ: ประเภท = การตรวจสอบ 1400 (1459655559.419: 32): apparmor = "DENIED" การดำเนินการ = "sendmsg" profile = "/ usr / sbin / mysqld" ชื่อ = "/ run / systemd / แจ้งเตือน "pid = 2877 comm =" mysqld "ร้องขอ_mask =" w "ปฏิเสธ _mask =" w "fsuid = 122 ouid = 0
เม.ย. 02 23:52:39 การตรวจสอบ boggan [2877]: AVC apparmor = "DENIED" operation = "sendmsg" profile = "/ usr / sbin / mysqld" name = "/ run / systemd / แจ้งเตือน" pid = 2877 comm = " mysqld "ร้องขอ_mask =" w "ปฏิเสธ _mask =" w "fsuid = 122 ouid = 0
เม.ย. 02 23:52:39 การตรวจสอบ boggan [2645]: AVC apparmor = "DENIED" operation = "sendmsg" profile = "/ usr / sbin / mysqld" name = "/ run / systemd / แจ้ง" pid = 2645 comm = " mysqld "ร้องขอ_mask =" w "ปฏิเสธ _mask =" w "fsuid = 122 ouid = 0
เม.ย. 02 23:52:39 เคอร์เนล boggan: การตรวจสอบ: ประเภท = การตรวจสอบ 1400 (1459655559.419: 33): apparmor = "DENIED" การดำเนินการ = "sendmsg" profile = "/ usr / sbin / mysqld" ชื่อ = "/ run / systemd / แจ้งเตือน "pid = 2645 comm =" mysqld "ร้องขอ_mask =" w "ปฏิเสธ _mask =" w "fsuid = 122 ouid = 0
02 เม.ย. 23:52:39 boggan systemd [1]: ไม่สามารถเริ่มเซิร์ฟเวอร์ฐานข้อมูล MariaDB
- หัวเรื่อง: หน่วย mariadb.service ล้มเหลว
- กำหนดโดย: systemd
- การสนับสนุน: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
- 
- หน่วย mariadb.service ล้มเหลว
- 
- ผลลัพธ์ล้มเหลว
02 เม.ย. 23:52:39 boggan systemd [1]: mariadb.service: หน่วยที่ป้อนล้มเหลว
02 เม.ย. 23:52:39 boggan systemd [1]: mariadb.service: ล้มเหลวด้วยผลลัพธ์ 'หมดเวลา'

2
journalctl -xeเอาท์พุทถูกตัดทอนคุณสามารถอัปเดตนี้หรือไม่? ดูapparmor="DENIED"ข้อความให้ละเอียดยิ่งขึ้น (หากเปิดใช้งาน apparmor บนระบบปฏิบัติการของคุณ) ซึ่งอาจเป็นปัญหาในระหว่างการเริ่มต้น mariadb
tlo

@tlo ฉันจะ ... มันจะต้องรอจนถึงเย็นนี้ ฉันไม่สามารถเข้าถึงเครื่องจากที่ฉันอยู่ ท้ายที่สุดฉันไม่สามารถใช้งานได้เมื่อฉันนั่งอยู่ที่นี่ดังนั้นทำไมต้องตั้งค่าสำหรับการเข้าถึงระยะไกล ฉันจะดูเป็นคนที่ชอบอย่างแน่นอน หากเปิดใช้งานจะเป็นการเปิดใช้งานตามค่าเริ่มต้น ฉันไม่ได้เปลี่ยนแปลงอะไรที่ติดตั้งโดยระบบเพิ่งเพิ่มรายการโคมไฟ
TJL

@tlo อัพเดตเอาท์พุตและเพิ่มรอยย่นเล็กน้อยให้กับคำอธิบาย แทนที่จะต่อสู้กับมันผมจะเดินออกไปสำหรับหนึ่งหรือสองชั่วโมงและดูสิ่งที่เกิดขึ้น ...
TJL

1
@tlo ขอบคุณสำหรับความช่วยเหลือ ผู้กระทำความผิดเป็นผู้กระทำผิด
TJL

คำตอบ:


28

ฉันมีปัญหาเดียวกันหลังจากอัพเกรดจาก mysql เป็น mariadb สิ่งที่แปลกคือบริการ mariadb เริ่มล้มเหลวในการหมดเวลา (ทั้งที่บูทระบบหรือแมนนวล) ในขณะที่บริการ mysql เริ่มทำงานสำเร็จ

คำอธิบายของTJLนั้นถูกต้อง แต่การแก้ไขนั้นไม่ได้ผลสำหรับฉัน

$ sudo aa-complain /usr/sbin/mysqld
Setting /usr/sbin/mysqld to complain mode.

ERROR: /etc/apparmor.d/usr.sbin.mysqld contains no profile

ดังนั้นฉันจึงปิดการใช้งานโปรไฟล์ (ด้วยการปิดการใช้งานซึ่งดูเหมือนว่าจะเทียบเท่ากับวิธีการแก้ปัญหาของพลูตาทัต

$ sudo aa-disable /usr/sbin/mysqld
Disabling /usr/sbin/mysqld.

ฉันปิดการใช้งาน mysqld-akonadi และ mysqld-digikam เช่นกัน

การโหลดแอปพลิเคชันไม่เพียงพอดังนั้นฉันจึงต้องรีบูตและเริ่มต้นมาเรียบได้อย่างสมบูรณ์แบบ


ยืนยันว่าไม่สามารถหาวิธีที่จะทำให้มันทำงานได้โดยไม่ต้องรีบูตเครื่อง
Meetai.com

คำตอบนี้ใช้ได้สำหรับฉันใน Kubuntu 18.04.2 LTS complainและ... apparmor reload( ตอบ TJL ) ยังไม่เพียงพอ
Marten Koetsier

25

ผู้กระทำความผิดเป็นผู้กระทำผิด แม้จะมีเนื้อหาของ/etc/apparmor.d/usr.sbin.mysqldการเป็นอะไร แต่ความคิดเห็นและอ้างว่ามันอยู่ที่นั่นเพื่อที่ผู้อุปถัมภ์จะไม่สำลักกับ MariaDB นั่นคือสิ่งที่เกิดขึ้น

AppArmor และ MySQLบนบล็อกของออราเคิลให้สิ่งที่ฉันต้องการเพื่อพิจารณาว่าเกิดอะไรขึ้น

sudo aa-statusแสดงให้คุณเห็นสิ่งที่ผู้กระทำกำลังทำอยู่ สิ่งที่จริงมีนโยบายบังคับใช้กับสิ่งที่เพิ่งตั้งให้บ่น

sudo apt-get install apparmor-utils เพิ่มคำสั่งเล็กน้อยที่ทำให้โปรไฟล์ apparmor จัดการได้ง่ายขึ้นเช่น ...

sudo aa-complain /usr/sbin/mysqldเปลี่ยนโปรไฟล์จาก "บังคับใช้" เป็นบ่น ( aa-enforceเปลี่ยนกลับ)

เมื่อเสร็จแล้วให้sudo service apparmor reloadรีสตาร์ทเครื่องตรวจจับเสียงและ voila ... ใช้sudo /etc/init.d/mysql startงานได้และเซิร์ฟเวอร์ยังคงทำงานต่อ


1
เพื่อนอึศักดิ์สิทธิ์; ที่ใช้งานได้จริง ฉันมีความตื่นตระหนกเล็กน้อยเนื่องจากสิ่งนี้ส่งผลต่อเซิร์ฟเวอร์ที่ใช้งานจริงของเราทิ้งไว้สองสามชั่วโมง ฉันไม่มีความเชี่ยวชาญเช่นเดียวกับคุณและฉันค้นหาข้อผิดพลาดต่าง ๆ ทั่วทั้งเว็บในไฟล์ /var/log/mysql/error.log ขอบคุณโคลนสำหรับสิ่งนี้!
Muqito

1
เหมือนกับฉัน. ฉันอัพเกรดจาก Ubuntu 14.04 เป็น 16.04 และสูญเสียความสามารถในการเรียกใช้ MySQL ตอนนี้มันใช้งานได้! ขอบคุณมากสำหรับรายละเอียดนี้: D ฉันกำลังมองหาสัปดาห์!
Sawtaytoes

ไม่ค่อยทำเพื่อฉัน apparmor-utilsแต่ต้องขอบคุณสำหรับเคล็ดลับที่มี ERROR: /etc/apparmor.d/usr.sbin.mysqld contains no profileสามปีต่อมาฉันได้รับ
YetiCGN

14

ฉันต้องปิดการใช้งาน mysql อย่างสมบูรณ์ใน apparmor aa-บ่นจะไม่ทำอะไรเพื่อฉัน ดังนั้น ...

ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/

จากนั้นรีบูท


ขอขอบคุณ! นี่เป็นทางออกเดียวสำหรับปัญหาของฉัน! ฉันอัพเกรดจาก mysql เป็น mariadb ด้วย
Thomas Gatt

นี่คือสิ่งที่ใช้งานได้ดีเช่นกันขอบคุณมาก
Eman

3

ทางออกที่ง่ายคือการลบโปรไฟล์ AppArmor ใด ๆ ที่ไม่รู้จัก:

aa-remove-unknown
Removing '/snap/core/6350/usr/lib/snapd/snap-confine'
Removing '/usr/sbin/mysqld'

มันได้ผล!


นี่คือสิ่งที่ฉันต้องทำเพื่อให้ทำงานได้ดีขอบคุณ คำตอบที่ได้รับการยอมรับด้านบนจะให้ฉันERROR: /etc/apparmor.d/usr.sbin.mysqld contains no profileตามที่เป็นจริงเพราะไฟล์ประกอบด้วยความคิดเห็นเท่านั้น อาจเป็น AppArmor เวอร์ชันใหม่ที่พวกเขาตั้งให้มันล้มเหลวกับไฟล์เหล่านั้นในขณะที่มันทำงานในปี 2559
YetiCGN

นี่คือคำตอบที่ถูกต้อง (อย่างน้อยในปี 2019) สิ่งที่เกิดขึ้นคือหลังจากยกเลิกการติดตั้ง MySql โปรไฟล์ AppArmor สำหรับ/usr/sbin/mysqldจะยังคงโหลดอยู่ในเคอร์เนล การเรียกใช้aa-remove-unknown(หรือรีบูต) แก้ปัญหานี้
zwets
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.