Không thể khởi động mysql - mysql hồi sinh quá nhanh, đã dừng


33

Hôm nay tôi đã cài đặt bản Ubuntu 12.04 mới và bắt đầu thiết lập môi trường phát triển cục bộ của mình. Tôi đã cài đặt mysql và chỉnh sửa /etc/mysql/my.cnfđể tối ưu hóa InnoDB nhưng khi tôi cố gắng khởi động lại mysql, nó đã bị lỗi:

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

Syslog cho thấy có vấn đề với tập lệnh init:

> 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

Có ý kiến ​​gì không?


Những điều tôi đã thử:

Tôi đã googled và tìm thấy một lỗi Ubuntu với apparmor ( https://bugs.launchpad.net/ubfox/+source/mysql-5.5/+orms/970366 ), tôi đã thay đổi apparmor từ chế độ thực thi sang chế độ khiếu nại:

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

nhưng nó không giúp được gì. Tôi vẫn không thể bắt đầu mysql.

Tôi cũng nghĩ rằng vấn đề có thể là do các logfile InnoDB có kích thước khác với mong đợi của mysql. Tôi đã xóa các tệp nhật ký innodb trước khi khởi động lại bằng : sudo mv /var/lib/mysql/ib_logfile* /tmp. Không có may mắn mặc dù.

Giải pháp thay thế: Tôi đã cài đặt lại 12.04, đảm bảo không chạm /etc/mysql/my.cnfvào bất kỳ cách nào. Mysql đang làm việc để tôi có thể tiếp tục với những gì tôi cần làm. Nhưng tôi sẽ cần phải chỉnh sửa nó vào một lúc nào đó - Hy vọng rằng tôi sẽ tìm ra một giải pháp, hoặc câu hỏi này sẽ được trả lời vào thời điểm đó ...

Câu trả lời:


29

Cuối cùng tôi đã tìm ra vấn đề. Về cơ bản, định nghĩa của một số tham số đã bị xóa khỏi phiên bản trước của mysql và đã được thay thế bằng các tên khác nhau. Để khắc phục, trong /etc/mysql/my.cnf, thay thế:

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

với:

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

Đây là báo cáo lỗi launchpad liên quan: https://bugs.launchpad.net/ubfox/+source/mysql-5.5/+bug/958120 .

Hoặc dễ dàng chạy:

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

Nhưng hãy chắc chắn rằng không có cài đặt phiên bản mysql cũ nào được cài đặt, nếu có, vui lòng xóa:

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

Tôi không có vấn đề này, nhưng đã dpkg-reconfigure mysql-server-5.5sửa bất cứ điều gì sai trong cấu hình của tôi.
David Purdue

trong trường hợp của tôi, vấn đề hóa ra là một tên thuộc tính bị nhầm lẫn trong /etc/mysql/my.cnf....Từ blog này: dangtrinh.com/2014/05/ Lỗi , chạy mysqld -v. Tôi đã thử googling thoát mã 7, nhưng không thành công. Tôi đoán là mã thoát 7 phải làm với các lỗi để phân tích tệp cấu hình mysql.
MaasSql

Tôi gặp vấn đề tương tự nhưng gặp khó khăn trong việc theo dõi vì cấu hình bị lỗi của tôi nằm dưới /etc/mysql/conf.d/* và cũng vì có các nhật ký cũ được gọi là /var/log/mysql.* khiến tôi không nhận thấy nhật ký hoạt động / var / log / mysql / *.
Dave Burt

1
lưu ý phụ: utf8_unicode_cilà tốt hơn. Bây giờ thậm chíutf8mb4_unicode_ci
Akshay

10

Innodb có cài đặt mặc định (innodb_buffer_pool_size) được đặt thành 128M - điều này có thể quá lớn đối với máy chủ của bạn (đặc biệt là nếu bạn đang sử dụng Amazon EC2 AMI nhỏ - mà tôi là) Cách khắc phục hiệu quả với tôi là thêm vào dòng đến /etc/mysql/my.cnf

innodb_buffer_pool_size = 16M

Tôi đã viết về bản sửa lỗi này tại đây http://www.mlynn.org/2012/07/mysql-5-5-on-ubfox-12-04-job-fails-to-start


Hóa ra VM của tôi chỉ đơn giản là hết bộ nhớ. Đặt innodb_buffer_pool_sizethấp hơn là một phần của giải pháp, nhưng hãy cẩn thận, bạn có thể hết bộ nhớ.
thaddeusmt

10

Tôi đã có một vấn đề tương tự. Thật là bực bội vì tôi không thể thấy bất kỳ nhật ký lỗi nào cho biết vấn đề là gì.

Trong trường hợp của tôi, giá trị tôi đã đặt cho innodb_buffer_pool_size quá lớn so với bộ nhớ của máy chủ.

Tôi đã tìm thấy điều này bằng cách chạy mysqld trực tiếp với tư cách là người dùng mysql.

# su mysql
# mysqld

Bằng cách này bạn thực sự thấy đầu ra lỗi.


2
Đây là một mẹo hay, tôi đã đấu tranh để có được một số thông tin gỡ lỗi có ý nghĩa từ mysql. Cảm ơn!
háo hức

3

Tôi cũng có một vấn đề tương tự. Các mục bên dưới cho biết chúng đã bị xóa khỏi máy chủ mysql 5.5.
Nếu bạn có chúng trong của bạn my.cnf, nó sẽ không bắt đầu. Nhận xét chúng ra với #.
(Thông tin có nguồn gốc từ: http://dev.mysql.com/doc/refman/5.5/en/replication-options-slave.html )

Các tùy chọn bị ảnh hưởng được hiển thị trong danh sách này:

 --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

Hoàn hảo! Chính xác những gì đã ném tôi đi. Cảm ơn.
Jim W.

3

Nó dường như làm hỏng các lỗi trong cấu hình MySQL, nằm trong /etc/mysql/my.cnfvà các tệp trong /etc/mysql/conf.d/.

Trong trường hợp của tôi, đó là một bind-addressgiá trị sai , vì địa chỉ IP của máy tôi đã thay đổi và MySQL không thể liên kết được nữa. Hãy thoải mái hơn nữa về điều này trong bài viết blog này .


2

Một cách tốt để gỡ lỗi các lỗi trong quá trình hậu khởi động ( /etc/init/mysql.conf) là kiểm tra nhật ký khởi động:

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

Điều đó đã cho tôi một lỗi ổ cắm:

lỗi: 'Không thể kết nối với máy chủ MySQL cục bộ thông qua ổ cắm

Trong trường hợp của tôi, đó là do một usercài đặt bị thiếu trong [mysqld]nhómmy.cnf


1

Khi tôi gặp lỗi MySQL tương tự ("Công việc không bắt đầu") sau khi nâng cấp từ 11.10 lên 12.04, hãy nhận xét # 27 trên https://bugs.launchpad.net/ubfox/+source/mysql-dfsg-5.1/+orms/ 573318? Bình luận = tất cả đều làm việc hoàn hảo cho tôi. Trích dẫn:

Vấn đề đối với tôi là tập tin /etc/apparmor.d/local/usr.sbin.mysqld không tồn tại sau khi nâng cấp. Tôi đã sao chép thủ công từ một trong những cái trống (tức là chỉ có nhận xét tiêu đề) và sau đó mọi thứ đều tốt.


1

Đối với tôi, giải pháp là xóa dòng ...

set-variable = max_connections=200

... đó là cú pháp MySQL 3.x và cần được thay đổi thành

max_connections=200

1

Tôi gặp vấn đề tương tự. Nó hóa ra là bản sao nô lệ chủ mys mys my.cnf. Kiểm tra của bạn /var/log/mysql/error.log.

Tôi hy vọng đó là một chút giúp đỡ. Trước tiên hãy kiểm tra cài đặt mysql trước khi bạn lãng phí hai giờ với apparmor để hoạt động tốt.


1

Tôi đã có những vấn đề tương tự, đối với tôi bind-addressđã được đặt không đúng trong /etc/mysql/my.cnftập tin của tôi . Vì vậy, có vẻ như bất cứ điều gì không đúng trong my.cnf đều có thể gây ra vấn đề này. Tôi đã không tìm thấy bất cứ điều gì trong các bản ghi chỉ ra đây là vấn đề.


1

Vấn đề của tôi là 0% dung lượng trống! Kiểm tra hai lần :-)


1

Kiểm tra các /tmpquyền. Tôi gặp vấn đề này, sau nhiều lần google và khởi động lại, tôi phát hiện ra rằng /tmpquyền là 755.

Tôi thay đổi nó thành 777 và mysqlbắt đầu tốt.


điều này trong cổ đại nhưng đây là vấn đề của tôi .... dunno nó đã thay đổi như thế nào ...
TheHidden

trong một số trường hợp, bằng cách thay đổi hệ thống tệp hoặc gắn /tmptrên phân vùng mới.
shgnInc

1

Sau khi cập nhật tự động lên mysqld-5.5.53 trên Ubuntu 14.04.1, mysql sẽ không khởi động. Những dòng này xuất hiện trong syslog của tôi:

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

Vấn đề đã được giải quyết bằng cách tạo thư mục này:

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

Chỉ cần cập nhật phiên bản MySQL và AppArmor như được đề xuất ở đây để khắc phục sự cố này trên Ubuntu 12.04 chạy trên phiên bản Amazon ec2. Tôi vẫn gặp lỗi một vài lần nhưng MySQL tự động khởi động lại.


1
Chào mừng bạn đến hỏi Ubuntu! Trong khi về mặt lý thuyết có thể trả lời câu hỏi, tốt hơn là nên bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo.
Đuôi chuông

0

Tôi đã có cùng một thông báo lỗi, nhưng nguyên nhân là khác nhau. Các bảng InnoDB của tôi bị hỏng, vì toàn bộ hệ thống tệp chuyển sang chế độ chỉ đọc. Tôi đã sửa lỗi tham nhũng bằng cách thêm dòng sau vào /etc/mysql/my.cf

innodb_force_recovery = 1

Tôi đã bắt đầu MySQL:

sudo service mysql start

MySQL đã bắt đầu và tôi kết xuất / xuất tất cả các bảng. Tôi đã thay đổi innodb_force_recovery thành 0 (= mặc định) và khởi động lại MySQL:

sudo service mysql restart

Tôi đang sử dụng Ubuntu 12.04 với MySQL 5.5. Phải mất một thời gian dài trước khi tôi tìm thấy vấn đề và tôi hy vọng tôi có thể giúp ai đó với câu trả lời này. Xem thêm http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html


0

Trong trường hợp của tôi, vấn đề là /etc/mysql/my.cnf cho phép tập tin.

Tôi đã thay đổi nó vì sự khôn ngoan nhưng nó đã gây ra sự xói mòn như

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"

Các my.cnf cho phép là 766 và tôi đã đổi nó thành 744 và hai trong số ba lỗi đã biến mất. Vẫn còn một thông báo lỗi tương tự nhưng nó không ngăn mysql bắt đầu.

Hi vọng điêu nay co ich...


0

Trong trường hợp của tôi, tôi đã bind-addresskhai báo sai . Tôi đã chạy ifconfigđể khám phá địa chỉ IP riêng của EC2 và cập nhật nó trong /etc/mysql/my.cnftệp.


0

Trong trường hợp của tôi, tôi đã tìm thấy một vấn đề cấp phép trên / tmp. Tôi vừa giải quyết quyền cho thư mục của tmp đến 766 và khởi động lại dịch vụ mysql. Đã sửa.

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.