mariadb가 계속 죽어가는 이유는 무엇입니까? 어떻게 중지합니까?


25

Ubuntu 15.10에서 MariaDB 10.0.23-0을 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
           └─migration-from-my.cnf-settings.conf
   활성 : 실패 (결과 : 시간 초과) Sat 2016-03-26 22:52:42 EDT 이후; 26 초 전
  프로세스 : 8707 ExecStart = / usr / sbin / mysqld $ MYSQLD_OPTS $ _WSREP_NEW_CLUSTER (코드 = 종료, 상태 = 0 / SUCCESS)
  프로세스 : 8706 ExecStartPre = / usr / bin / install -m 755 -o mysql -g root -d / var / run / mysqld (code = exited, status = 0 / SUCCESS)
 메인 PID : 8707 (코드 = 종료, 상태 = 0 / 성공)

3 월 26 일 22:52:39 boggan systemd [1] : mariadb.service : 시작 작업 시간이 초과되었습니다. 종료.
3 월 26 일 22:52:39 boggan mysqld [8707] : 2016-03-26 22:52:39 140105856617216 [참고] / usr / sbin / mysqld : 정상 종료
3 월 26 일 22:52:39 boggan mysqld [8707] : 2016-03-26 22:52:39 140105856617216 [참고] 이벤트 스케줄러 : 대기열을 제거합니다. 이벤트 0 개
3 월 26 일 22:52:39 boggan mysqld [8707] : 2016-03-26 22:52:39 140104920164096 [참고] InnoDB : FTS는 스레드 종료를 최적화합니다.
3 월 26 일 22:52:39 boggan mysqld [8707] : 2016-03-26 22:52:39 140105856617216 [참고] InnoDB : 종료 시작 중 ...
3 월 26 일 22:52:42 boggan mysqld [8707] : 2016-03-26 22:52:42 140105856617216 [참고] InnoDB : 종료 완료; 로그 시퀀스 번호 3336953
3 월 26 일 22:52:42 boggan mysqld [8707] : 2016-03-26 22:52:42 140105856617216 [참고] / usr / sbin / mysqld : 종료 완료
3 월 26 일 22:52:42 boggan systemd [1] : MariaDB 데이터베이스 서버를 시작하지 못했습니다.
3 월 26 일 22:52:42 boggan systemd [1] : mariadb.service : 장치가 실패 상태에 들어갔습니다.
3 월 26 일 22:52:42 boggan systemd [1] : mariadb.service : 'timeout'결과로 실패했습니다`

첫 번째 systemd줄에는 일종의 "웰 듀"가 있습니다. 시간이 초과 된 것을 알고 있습니다. 두 번째 systemd는 이후 mysqld이 있기 때문에 선, 비트 신비화입니다 않는 사실 시작에. 데이터베이스에 의존하는 응용 프로그램 (특히 CloudCloud)은 정상적으로 작동합니다. MariaDB가 작동하는 순간에 변경됩니다.

또 다른 질문time /etc/init.d/mysql start시간이 얼마나 걸리는지를 결정하기 위해 사용 하는 것이 좋습니다 . 시간을 확인하기 위해 반복적으로 실행했습니다. 매번 90 초 양쪽에 몇 초입니다.

다른 연구는 ... 게다가, 그것은 좋은입니다 파일 권한을 확인하기 위해 저를 이끌어 않는 일시적으로 시작합니다. 나는 (리눅스에 관해서는 제한되어 있음) 최선의 능력을 찌르고 자극했으며, 아무런 진전도 없었습니다.

질문은 ... MariaDB 서비스를 어떻게 유지합니까?

여분의 주름으로,이 질문을 쓴 후에, 나는 기계를 가동시켜 두었습니다. 나는 일주일 후에 다시 돌아 왔습니다 (나는 그것을 만지지 않았습니다). 똑같은 명령을 사용하여 sudo /etc/init.d/mysql start성공했습니다. mysql 데몬이 시작되어 실행되었습니다. [ ok ]보고서 와 함께 돌아 왔습니다 . 실험을 위해 다시 부팅 한 후 다시 시작했습니다.

중요한 경우 출력 journalctl -xe은 다음과 같습니다.

4 월 02 일 23:51:44 boggan systemd [1] : 중지됨 필요한 파일을 미리 읽습니다.
-주제 : 유닛 우레아 헤드 서비스 종료
-정의 기준 : systemd
-지원 : http://lists.freedesktop.org/mailman/listinfo/systemd-devel
- 
-장치 ureadahead.service의 종료가 완료되었습니다.
4 월 02 일 23:51:55 boggan mysqld [2645] : 2016-04-02 23:51:55 140386161068800 [참고] InnoDB : 온라인 DDL : 시작
4 월 02 일 23:51:55 boggan mysqld [2645] : 2016-04-02 23:51:55 140386161068800 [참고] InnoDB : 온라인 DDL : 테이블의 클러스터 된 인덱스 읽기 시작 및 임시 파일 만들기
4 월 02 일 23:51:55 boggan mysqld [2645] : 2016-04-02 23:51:55 140386161068800 [참고] InnoDB : 온라인 DDL : 테이블의 클러스터 된 인덱스 읽기 종료 및 임시 파일 생성
4 월 02 일 23:51:55 boggan mysqld [2645] : 2016-04-02 23:51:55 140386161068800 [참고] InnoDB : 온라인 DDL : 완료
4 월 02 일 23:51:55 boggan mysqld [2645] : 2016-04-02 23:51:55 140386161068800 [참고] InnoDB : 온라인 DDL : 완료
4 월 02 일 23:52:06 boggan dbus [713] : [system] 'org.bluez'서비스 활성화 실패 : 시간 초과
4 월 02 일 23:52:37 boggan systemd [1] : mariadb.service : 시작 작업 시간이 초과되었습니다. 종료.
4 월 02 일 23:52:37 boggan mysqld [2645] : 2016-04-02 23:52:37 140386097400576 [참고] / usr / sbin / mysqld : 정상 종료
4 월 02 일 23:52:37 boggan 커널 : 감사 : type = 1400 audit (1459655557.935 : 31) : apparmor = "DENIED"operation = "sendmsg"profile = "/ usr / sbin / mysqld"name = "/ run / systemd / notify "pid = 2645 comm ="mysqld "requested_mask ="w "denied_mask ="w "fsuid = 122 ouid = 0
4 월 02 일 23:52:37 boggan audit [2645] : AVC apparmor = "DENIED"operation = "sendmsg"profile = "/ usr / sbin / mysqld"name = "/ run / systemd / notify"pid = 2645 comm = " mysqld "requested_mask ="w "denied_mask ="w "fsuid = 122 ouid = 0
4 월 02 일 23:52:37 boggan mysqld [2645] : 2016-04-02 23:52:37 140386097400576 [참고] 이벤트 스케줄러 : 대기열을 제거합니다. 이벤트 0 개
4 월 02 일 23:52:37 boggan mysqld [2645] : 2016-04-02 23:52:37 140385225500416 [참고] InnoDB : FTS는 스레드 종료를 최적화합니다.
4 월 02 일 23:52:37 boggan mysqld [2645] : 2016-04-02 23:52:37 140386097400576 [참고] InnoDB : 시스템 종료 중 ...
4 월 02 일 23:52:39 boggan mysqld [2645] : 2016-04-02 23:52:39 140386097400576 [참고] InnoDB : 종료 완료; 로그 시퀀스 번호 3360838
4 월 02 일 23:52:39 boggan mysqld [2645] : 2016-04-02 23:52:39 140386097400576 [참고] / usr / sbin / mysqld : 종료 완료
4 월 02 일 23:52:39 boggan 커널 : 감사 : type = 1400 audit (1459655559.419 : 32) : apparmor = "DENIED"operation = "sendmsg"profile = "/ usr / sbin / mysqld"name = "/ run / systemd / notify "pid = 2877 comm ="mysqld "requested_mask ="w "denied_mask ="w "fsuid = 122 ouid = 0
4 월 02 일 23:52:39 boggan audit [2877] : AVC apparmor = "DENIED"operation = "sendmsg"profile = "/ usr / sbin / mysqld"name = "/ run / systemd / notify"pid = 2877 comm = " mysqld "requested_mask ="w "denied_mask ="w "fsuid = 122 ouid = 0
4 월 02 일 23:52:39 boggan audit [2645] : AVC apparmor = "DENIED"operation = "sendmsg"profile = "/ usr / sbin / mysqld"name = "/ run / systemd / notify"pid = 2645 comm = " mysqld "requested_mask ="w "denied_mask ="w "fsuid = 122 ouid = 0
4 월 02 일 23:52:39 boggan 커널 : 감사 : type = 1400 audit (1459655559.419 : 33) : apparmor = "DENIED"operation = "sendmsg"profile = "/ usr / sbin / mysqld"name = "/ run / systemd / notify "pid = 2645 comm ="mysqld "requested_mask ="w "denied_mask ="w "fsuid = 122 ouid = 0
4 월 02 일 23:52:39 boggan systemd [1] : MariaDB 데이터베이스 서버를 시작하지 못했습니다.
-주제 : unit mariadb.service failed
-정의 기준 : systemd
-지원 : http://lists.freedesktop.org/mailman/listinfo/systemd-devel
- 
-유닛 mariadb.service가 실패했습니다.
- 
-결과가 실패합니다.
4 월 02 일 23:52:39 boggan systemd [1] : mariadb.service : 장치가 실패 상태가되었습니다.
4 월 02 일 23:52:39 boggan systemd [1] : mariadb.service : 'timeout'결과로 실패했습니다.

2
journalctl -xe출력이 잘립니다, 당신은이를 업데이트 할 수 있습니다? apparmor="DENIED"mariadb 시작 중에 문제가 될 수 있으므로 메시지를 자세히 살펴보십시오 (OS에서 의류가 활성화 된 경우).
tlo

@tlo 나는 ... 오늘 저녁까지 기다려야합니다. 내가있는 곳에서 컴퓨터에 액세스 할 수 없습니다. 어쨌든 앉아있을 때 작동하지 못했기 때문에 원격 액세스를 위해 설정하는 것이 귀찮습니다. 나는 또한 분명히 옷을 입을 것이다. 활성화 된 경우 기본적으로 활성화되어 있습니다. 시스템에 의해 설치된 것을 변경하지 않고 LAMP를 추가했습니다.
TJL

@tlo 출력을 업데이트하고 설명에 약간의 주름을 추가했습니다. 그것을 두드리는 대신에, 나는 한두 시간 동안
떠나서

1
@tlo 도와 주셔서 감사합니다. 복장은 범인이었습니다.
TJL

답변:


28

mysql에서 mariadb로 업그레이드 한 후에도 똑같은 문제가있었습니다. 이상한 점은 서비스 mysql 시작이 성공한 동안 서비스 mariadb 시작이 시간 초과 (시스템 부팅 또는 수동)에서 실패한다는 것입니다.

TJL 의 설명 은 옳지 만 수정은 효과가 없었습니다.

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

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

그래서 프로필을 비활성화했습니다 ( plutocrat 의 솔루션 과 동등한 것으로 보이는 aa-disable )

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

mysqld-akonadi 및 mysqld-digikam도 비활성화했습니다.

의류 재 장전이 충분하지 않아서 재부팅해야 했고 mariadb가 완벽하게 시작되었습니다.


재부팅하지 않고 작동 할 수있는 방법을 찾을 수 없음을 확인합니다.
Meetai.com

이 답변은 Kubuntu 18.04.2 LTS에서 저에게 효과적이었습니다. complain그리고 ... apparmor reload( 답변 TJL )은 실제로 충분하지 않았습니다.
Marten Koetsier

25

복장은 범인이었습니다. /etc/apparmor.d/usr.sbin.mysqld아무 말도하지 않고 내용이 있다고 주장 함에도 불구하고 Apparmor가 MariaDB에 질식하지 않을 것이라는 주장이 있었지만, 그것은 정확히 일어난 일입니다.

Oracle 블로그의 AppArmor 및 MySQL 은 진행 상황을 파악하는 데 필요한 것을 제공했습니다.

sudo aa-status의류가 무엇을하고 있는지 보여줍니다. 실제로 시행되는 정책과 방금 설정 한 사항.

sudo apt-get install apparmor-utils 의류 프로필을보다 쉽게 ​​처리 할 수있는 몇 가지 명령을 추가합니다.

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

1
저도 마찬가지입니다. 우분투 14.04에서 16.04로 업그레이드하고 MySQL을 실행하는 기능을 잃었습니다. 이제 작동합니다! 이것을 자세히 설명해 주셔서 감사합니다. : D. 몇 주 동안 찾고있었습니다!
Sawtaytoes

나를 위해 그것을하지는 않지만 팁을 주셔서 감사합니다 apparmor-utils. 3 년 후 나는을 얻는다 ERROR: /etc/apparmor.d/usr.sbin.mysqld contains no profile.
YetiCGN

14

의류에서 mysql을 완전히 비활성화해야했습니다. aa 불평은 나를 위해 아무것도하지 않을 것입니다. 그래서 ...

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

그런 다음 재부팅


고맙습니다! 이것이 내 문제에 대한 유일한 해결책이었습니다! 나는 또한 MySQL의에서 mariadb로 업그레이드
토마스 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에서는 2016 년에 작동하는 동안 해당 파일과 함께 실패하도록 설정했을 수 있습니다.
YetiCGN

정답입니다 (최소한 2019 년). MySql을 제거한 후에도 AppArmor 프로파일 /usr/sbin/mysqld이 여전히 커널에로드됩니다. 실행 aa-remove-unknown(또는 재부팅)하면이 문제가 해결됩니다.
zwets
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.