Tại sao mariadb cứ chết? Làm thế nào để tôi dừng nó?


25

Tôi đang chạy MariaDB 10.0.23-0 trên Ubuntu 15.10 với tư cách là máy chủ LAMP. Chạy sudo /etc/init.d/mysql startkết quả trong:

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

Đầu ra của systemctl status mariadb.servicelà:

● mariadb.service - Máy chủ cơ sở dữ liệu MariaDB
   Đã tải: đã tải (/lib/systemd/system/mariadb.service; enable; nhà cung cấp cài sẵn: đã bật)
  Thả vào: /etc/systemd/system/mariadb.service.d
           └─migrated-from-my.cnf-settings.conf
   Hoạt động: không thành công (Kết quả: hết thời gian) kể từ Thứ bảy 2016-03-26 22:52:42 EDT; 26s trước
  Quá trình: 8707 ExecStart = / usr / sbin / mysqld $ MYSQLD_OPTS $ _WSREP_NEW_CLUSTER (code = exited, status = 0 / SUCCESS)
  Quá trình: 8706 ExecStartPre = / usr / bin / install -m 755 -o mysql -g root -d / var / run / mysqld (code = exited, status = 0 / SUCCESS)
 PID chính: 8707 (mã = thoát, trạng thái = 0 / THÀNH CÔNG)

Mar 26 22:52:39 boggan systemd [1]: mariadb.service: Bắt đầu hoạt động đã hết thời gian. Chấm dứt.
26 tháng 3 22:52:39 boggan mysqld [8707]: 2016-03-26 22:52:39 140105856617216 [Lưu ý] / usr / sbin / mysqld: Tắt máy bình thường
Ngày 26 tháng 3 22:52:39 boggan mysqld [8707]: 2016-03-26 22:52:39 140105856617216 [Lưu ý] Trình lập lịch sự kiện: Thanh lọc hàng đợi. 0 sự kiện
Mar 26 22:52:39 boggan mysqld [8707]: 2016-03-26 22:52:39 140104920164096 [Lưu ý] InnoDB: FTS tối ưu hóa thoát khỏi luồng.
26 tháng 3 22:52:39 boggan mysqld [8707]: 2016-03-26 22:52:39 140105856617216 [Lưu ý] InnoDB: Bắt đầu tắt máy ...
26 tháng 3 22:52:42 boggan mysqld [8707]: 2016-03-26 22:52:42 140105856617216 [Lưu ý] InnoDB: Tắt máy hoàn tất; số thứ tự đăng nhập 3336953
26 tháng 3 22:52:42 boggan mysqld [8707]: 2016-03-26 22:52:42 140105856617216 [Lưu ý] / usr / sbin / mysqld: Tắt máy hoàn tất
26 tháng 3 22:52:42 boggan systemd [1]: Không thể khởi động máy chủ cơ sở dữ liệu MariaDB.
Mar 26 22:52:42 boggan systemd [1]: mariadb.service: Đơn vị nhập trạng thái không thành công.
26 tháng 3 22:52:42 boggan systemd [1]: mariadb.service: Thất bại với kết quả 'hết thời gian'

Dòng đầu tiên systemdcó một loại "duh well". Tôi biết nó đã hết thời gian. Thứ hai systemd, sau khi mysqlddòng là một chút bí ẩn, bởi vì nó không thực sự bắt đầu. Một ứng dụng (ownCloud, cụ thể) phụ thuộc vào cơ sở dữ liệu hoạt động bình thường ... cho phút thay đổi mà MariaDB đang hoạt động.

Một câu hỏi khác được đề xuất sử dụng time /etc/init.d/mysql startđể xác định thời gian sử dụng. Tôi đã chạy nó liên tục để xác nhận thời gian - đó là vài giây ở hai bên của 90s mỗi lần.

Nghiên cứu khác đưa tôi đến kiểm tra quyền tập tin, mà cũng tốt ... bên cạnh đó, nó không khởi động, tạm thời. Tôi đã chọc và phát huy hết khả năng của mình (phải thừa nhận hạn chế khi nói đến Linux) và tôi đã không thực hiện được bất kỳ bước tiến nào.

Vì vậy, câu hỏi là ... Làm cách nào để dịch vụ MariaDB ở lại?

Như một nếp nhăn thêm, sau khi viết câu hỏi này, tôi rời khỏi máy và chạy. Tôi trở lại với nó một tuần sau đó (tôi đã không chạm vào nó giữa). Sử dụng cùng một lệnh sudo /etc/init.d/mysql start, đã thành công. Trình nền mysql bắt đầu và chạy; nó đã trở lại với một [ ok ]báo cáo. Tôi đã khởi động lại để thử nghiệm và tôi trở lại nơi tôi đã bắt đầu.

Trong trường hợp có vấn đề, đầu ra của journalctl -xelà:

Ngày 02 tháng Tư 23:51:44 boggan systemd [1]: Đã dừng đọc các tệp yêu cầu trước.
- Chủ đề: Đơn vị ureadahead.service đã tắt
- Xác định bởi: systemd
- Hỗ trợ: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
- 
- Đơn vị ureadahead.service đã đóng cửa xong.
02 tháng 4 23:51:55 boggan mysqld [2645]: 2016-04 / 02 23:51:55 140386161068800 [Lưu ý] InnoDB: DDL trực tuyến: Bắt đầu
02 tháng 4 23:51:55 boggan mysqld [2645]: 2016-04 / 02 23:51:55 140386161068800 [Lưu ý] InnoDB: DDL trực tuyến: Bắt đầu đọc chỉ mục cụm của bảng và tạo các tệp tạm thời
02 tháng 4 23:51:55 boggan mysqld [2645]: 2016-04 / 02 23:51:55 140386161068800 [Lưu ý] InnoDB: DDL trực tuyến: Kết thúc việc đọc chỉ mục của cụm và tạo các tệp tạm thời
02 tháng 4 23:51:55 boggan mysqld [2645]: 2016-04 / 02 23:51:55 140386161068800 [Lưu ý] InnoDB: DDL trực tuyến: Đã hoàn thành
02 tháng 4 23:51:55 boggan mysqld [2645]: 2016-04 / 02 23:51:55 140386161068800 [Lưu ý] InnoDB: DDL trực tuyến: Đã hoàn thành
Ngày 02 tháng 4 23:51:06 boggan dbus [713]: [system] Không thể kích hoạt dịch vụ 'org.bluez': hết thời gian
Ngày 02 tháng 4 23:52:37 boggan systemd [1]: mariadb.service: Bắt đầu hoạt động đã hết thời gian. Chấm dứt.
Ngày 02 tháng 4 23:52:37 boggan mysqld [2645]: 2016-04 / 02 23:52:37 140386097400576 [Lưu ý] / usr / sbin / mysqld: Tắt máy bình thường
Ngày 02 tháng 4 23:51:37 kernel boggan: aud: type = 1400 aud (1459655557.935: 31): apparmor = "DENIED" oper = "sendmsg" profile = "/ usr / sbin / mysqld" name = "/ run / systemd / thông báo "pid = 2645 comm =" mysqld "Request_mask =" w "den_mask =" w "fsuid = 122 ouid = 0
Ngày 02 tháng 4 23:51:37 kiểm toán boggan [2645]: AVC apparmor = "DENIED" oper = "sendmsg" profile = "/ usr / sbin / mysqld" name = "/ run / systemd / thông báo" pid = 2645 comm = " mysqld "Request_mask =" w "den_mask =" w "fsuid = 122 ouid = 0
Ngày 02 tháng 4 23:52:37 boggan mysqld [2645]: 2016-04 / 02 23:52:37 140386097400576 [Lưu ý] Trình lập lịch sự kiện: Thanh lọc hàng đợi. 0 sự kiện
Ngày 02 tháng 4 23:52:37 boggan mysqld [2645]: 2016-04 / 02 23:52:37 140385225500416 [Lưu ý] InnoDB: FTS tối ưu hóa thoát khỏi luồng.
Ngày 02 tháng 4 23:52:37 boggan mysqld [2645]: 2016-04-02 23:52:37 140386097400576 [Lưu ý] InnoDB: Bắt đầu tắt máy ...
Ngày 02 tháng 4 23:52:39 boggan mysqld [2645]: 2016-04-02 23:52:39 140386097400576 [Lưu ý] InnoDB: Tắt máy hoàn tất; số thứ tự đăng nhập 3360838
Ngày 02 tháng 4 23:52:39 boggan mysqld [2645]: 2016-04-02 23:52:39 140386097400576 [Lưu ý] / usr / sbin / mysqld: Tắt máy hoàn tất
Ngày 02 tháng 4 23:51:39 kernel boggan: auditor thông báo "pid = 2877 comm =" mysqld "Request_mask =" w "den_mask =" w "fsuid = 122 ouid = 0
Ngày 02 tháng 4 23:51:39 kiểm toán boggan [2877]: AVC apparmor = "DENIED" oper = "sendmsg" profile = "/ usr / sbin / mysqld" name = "/ run / systemd / thông báo" pid = 2877 comm = " mysqld "Request_mask =" w "den_mask =" w "fsuid = 122 ouid = 0
Ngày 02 tháng 4 23:51:39 kiểm toán boggan [2645]: AVC apparmor = "DENIED" oper = "sendmsg" profile = "/ usr / sbin / mysqld" name = "/ run / systemd / thông báo" pid = 2645 comm = " mysqld "Request_mask =" w "den_mask =" w "fsuid = 122 ouid = 0
Ngày 02 tháng 4 23:51:39 kernel boggan: aud: type = 1400 aud (1459655559.419: 33): apparmor = "DENIED" oper = "sendmsg" profile = "/ usr / sbin / mysqld" name = "/ run / systemd / thông báo "pid = 2645 comm =" mysqld "Request_mask =" w "den_mask =" w "fsuid = 122 ouid = 0
Ngày 02 tháng 4 23:51:39 boggan systemd [1]: Không thể khởi động máy chủ cơ sở dữ liệu MariaDB.
- Chủ đề: Đơn vị mariadb.service không thành công
- Xác định bởi: systemd
- Hỗ trợ: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
- 
- Đơn vị mariadb.service đã thất bại.
- 
- Kết quả thất bại.
Ngày 02 tháng 4 23:52:39 boggan systemd [1]: mariadb.service: Đơn vị nhập trạng thái không thành công.
Ngày 02 tháng 4 23:51:39 boggan systemd [1]: mariadb.service: Thất bại với kết quả 'hết thời gian'.

2
Đầu journalctl -xera bị cắt ngắn, bạn có thể cập nhật điều này? Xem xét kỹ hơn các apparmor="DENIED"thông báo (nếu apparmor được kích hoạt trên HĐH của bạn) vì đây có thể là một vấn đề trong khi bắt đầu mariadb.
tlo

@tlo Tôi sẽ ... nó sẽ phải đợi đến tối nay. Tôi không có quyền truy cập vào máy từ nơi tôi đang ở. Rốt cuộc, tôi không thể làm cho nó hoạt động khi tôi đang ngồi ở đó, vậy tại sao phải cài đặt nó để truy cập từ xa. Tôi chắc chắn cũng sẽ nhìn vào apparmor. Nếu nó được kích hoạt, nó được kích hoạt theo mặc định. Tôi chưa thay đổi bất cứ thứ gì được cài đặt bởi hệ thống, chỉ cần thêm công cụ LAMP.
TJL

@tlo Cập nhật đầu ra, và thêm một chút nếp nhăn vào mô tả. Thay vì đập vào nó, tôi sẽ đi trong một hoặc hai giờ, và xem điều gì sẽ xảy ra ...
TJL

1
@tlo Cảm ơn bạn đã giúp đỡ. apparmor là thủ phạm.
TJL

Câu trả lời:


28

Tôi đã có vấn đề tương tự sau khi nâng cấp từ mysql lên mariadb. Điều kỳ lạ là dịch vụ mariadb bắt đầu không thành công khi hết thời gian chờ (khi khởi động hệ thống hoặc thủ công) trong khi dịch vụ mysql bắt đầu bị hủy bỏ.

Lời giải thích được đưa ra bởi TJL là đúng nhưng sự điều chỉnh không hiệu quả với tôi.

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

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

Vì vậy, tôi đã vô hiệu hóa hồ sơ (với aa-vô hiệu hóa có vẻ tương đương với giải pháp của Plutocrat )

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

Tôi cũng vô hiệu hóa mysqld-akonadi và mysqld-digikam.

Một tải lại apparmor là không đủ, vì vậy tôi phải khởi động lại và mariadb bắt đầu hoàn toàn tốt.


Xác nhận rằng không thể tìm ra cách để nó hoạt động mà không cần khởi động lại.
Meetai.com

Câu trả lời này đã làm việc cho tôi trên Kubfox 18.04.2 LTS. complain... apparmor reload( trả lời TJL ) thực sự là không đủ.
Marten Koetsier

25

apparmor là thủ phạm. Mặc dù nội dung /etc/apparmor.d/usr.sbin.mysqldkhông là gì ngoài những bình luận và tuyên bố rằng nó ở đó để người kháng cáo sẽ không bóp cổ MariaDB, đó chính xác là những gì đang xảy ra.

AppArmor và MySQL trên blog của Oracle đã cung cấp những gì tôi cần để tìm hiểu chuyện gì đang xảy ra.

sudo aa-statuscho bạn thấy những gì apparmor đang làm; những gì thực sự có một chính sách được thi hành, so với những gì được thiết lập để khiếu nại.

sudo apt-get install apparmor-utils thêm một vài lệnh giúp cấu hình apparmor dễ xử lý hơn, chẳng hạn như ...

sudo aa-complain /usr/sbin/mysqldbiến hồ sơ từ "thi hành" thành khiếu nại. ( aa-enforcequay lại.)

Khi đã xong, sudo service apparmor reloadkhởi động lại apparmor và voila ... sudo /etc/init.d/mysql starthoạt động và máy chủ vẫn hoạt động.


1
Thánh shit anh chàng; Điều đó thực sự có hiệu quả. Tôi đã có một chút hoảng loạn vì điều này ảnh hưởng đến máy chủ sản xuất của chúng tôi khiến nó ngừng hoạt động trong vài giờ. Tôi không phải là chuyên gia giống như bạn và tôi đã tìm kiếm trên tất cả các trang web về các lỗi khác nhau trong tệp /var/log/mysql/error.log. Cảm ơn bạn rất nhiều cho điều này!
Muqito

1
Tương tự cho tôi. Tôi đã nâng cấp từ Ubuntu 14.04 lên 16.04 và mất khả năng chạy MySQL. Bây giờ nó hoạt động! Cảm ơn rất nhiều vì đã nêu chi tiết này: D. Tôi đã tìm kiếm trong nhiều tuần!
Sawtaytoes

Không hoàn toàn làm điều đó cho tôi, nhưng cảm ơn vì tiền boa với apparmor-utils. Ba năm sau tôi nhận được ERROR: /etc/apparmor.d/usr.sbin.mysqld contains no profile.
YetiCGN

14

Tôi đã phải vô hiệu hóa hoàn toàn mysql trong apparmor. Một lời phàn nàn sẽ không làm gì cho tôi. Vì thế ...

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

Sau đó khởi động lại


Cảm ơn bạn! Đây là giải pháp duy nhất cho vấn đề của tôi! Tôi cũng đã nâng cấp từ mysql lên mariadb
Thomas Gatt

đây cũng là điều làm việc cho tôi, cảm ơn bạn rất nhiều
Eman

3

Một giải pháp đơn giản là xóa mọi cấu hình AppArmor không xác định:

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

Nó hoạt động!


Đây thực sự là những gì tôi cần làm để vận hành mọi thứ, cảm ơn. Câu trả lời được chấp nhận ở trên sẽ cho tôi ERROR: /etc/apparmor.d/usr.sbin.mysqld contains no profileđiều đó hoàn toàn chính xác, do tập tin chỉ bao gồm các bình luận. Có thể trong phiên bản mới hơn của AppArmor, họ đã đặt nó không thành công với các tệp đó, trong khi nó hoạt động vào năm 2016.
YetiCGN

Đây là câu trả lời đúng (ít nhất là vào năm 2019). Điều gì xảy ra là sau khi hủy cài đặt MySql, hồ sơ AppArmor cho /usr/sbin/mysqldvẫn được tải trong kernel. Chạy aa-remove-unknown(hoặc khởi động lại) giải quyết điều này.
zwets
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.