mysql을 시작할 수 없습니다-mysql respawning too fast, stop


33

오늘 우분투 12.04를 새로 설치하고 로컬 개발 환경을 설정했습니다. mysql을 설치하고 /etc/mysql/my.cnfInnoDB를 최적화하기 위해 편집 했지만 mysql을 다시 시작하려고하면 오류가 발생하여 실패합니다.

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

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

어떤 아이디어?


내가 이미 시도한 것 :

나는 googled하고 apparmor ( https://bugs.launchpad.net/ubuntu/+source/mysql-5.5/+bug/970366 )가 있는 Ubuntu 버그를 발견했습니다 .apparmor를 강제 모드에서 불평 모드로 변경했습니다.

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

그러나 도움이되지 않았습니다. 여전히 mysql을 시작할 수 없습니다.

또한 InnoDB 로그 파일의 크기가 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

관련 런치 패드 버그 보고서는 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를 실행하십시오. 나는 성공하지 않고 mysql exit code 7을 인터넷 검색했다. 내 생각에 종료 코드 7은 mysql 구성 파일을 구문 분석하지 못하는 것과 관련이 있습니다.
MaasSql

이 같은 문제가 있었지만 잘못된 구성이 /etc/mysql/conf.d/* 아래에 있었고 /var/log/mysql.*라는 오래된 로그가 있었기 때문에 추적하기가 어렵다는 것을 알았습니다. 활성 로그 / var / log / mysql / *.
Dave Burt

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

11.10에서 12.04로 업그레이드 한 후 비슷한 MySQL 오류 ( "작업을 시작하지 못했습니다")가 발생하면 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 구문이며 다음으로 변경해야합니다.

max_connections=200

1

나는 같은 문제가 있었다. 그것은 mysql my.cnf 마스터 슬레이브 복제로 판명되었습니다. 확인하십시오 /var/log/mysql/error.log.

나는 그것이 약간의 도움이되기를 바랍니다. 제대로 작동하는 apparmor로 두 시간을 낭비하기 전에 먼저 mysql 설정을 확인하십시오.


1

나는 같은 문제가 있었는데, bind-address/etc/mysql/my.cnf파일에 잘못 설정되었습니다 . 따라서 my.cnf에 옳지 않은 것이이 문제를 일으킬 수있는 것 같습니다. 로그에서 이것을 문제로 나타내는 것을 찾지 못했습니다.



1

/tmp권한을 확인하십시오 . 나는이 문제를 겪었고 많은 시간을 보낸 후에 다시 시작한 후에 /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

Amazon ec2 인스턴스에서 실행되는 Ubuntu 12.04에서이 문제를 해결하기 위해 여기 에 제안 된대로 MySQL 및 AppArmor 버전을 업데이트했습니다 . 여전히 오류가 발생하지만 MySQL이 자동으로 다시 시작됩니다.


1
Ask Ubuntu에 오신 것을 환영합니다! 이 이론적으로 질문에 대답 할 수 있습니다 동안, 바람직 할 것이다 여기에 대한 대답의 본질적인 부분을 포함하고 참조 할 수 있도록 링크를 제공합니다.
Ringtail

0

동일한 오류 메시지가 있었지만 원인이 다릅니다. 전체 파일 시스템이 읽기 전용 모드로 전환 되었기 때문에 InnoDB 테이블이 손상되었습니다. /etc/mysql/my.cf에 다음 줄을 추가하여 손상을 수정했습니다.

innodb_force_recovery = 1

나는 MySQL을 시작했다 :

sudo service mysql start

MySQL이 시작되었고 모든 테이블을 덤프 / 내보냈습니다. innodb_force_recovery를 0 (= default)으로 변경하고 MySQL을 다시 시작했습니다.

sudo service mysql restart

MySQL 5.5에서 Ubuntu 12.04를 사용하고 있습니다. 문제를 발견하기까지 오랜 시간이 걸렸으며이 답변으로 누군가를 도울 수 있기를 바랍니다. 참조 http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html


0

제 경우에는 문제가 /etc/mysql/my.cnf파일 권한이었습니다.

나는 cenvenience를 위해 그것을 바꾸었지만

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선언 이있었습니다 . 나는 도망 ifconfigEC2의 개인 IP 주소를 발견하고 그것을 업데이트 /etc/mysql/my.cnf파일입니다.


0

제 경우에는 / tmp에서 권한 문제를 발견했습니다. 방금 tmp의 디렉토리 권한을 766으로 설정하고 mysql 서비스를 다시 시작했습니다. 해결되었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.