알 수 없거나 지원되지 않는 스토리지 엔진 : InnoDB | MySQL 우분투


45

나는 최근에 이전 LTS Ubuntu에서 Precise로 업그레이드했으며 이제 mysql은 시작을 거부합니다. 시작하려고 할 때 다음과 같이 불평합니다.

╰$ sudo service mysql restart
stop: Unknown instance:
start: Job failed to start

그리고 이것은 "/var/log/mysql/error.log"에 표시됩니다 :

120415 23:01:09 [Note] Plugin 'InnoDB' is disabled.
120415 23:01:09 [Note] Plugin 'FEDERATED' is disabled.
120415 23:01:09 [ERROR] Unknown/unsupported storage engine: InnoDB
120415 23:01:09 [ERROR] Aborting

120415 23:01:09 [Note] /usr/sbin/mysqld: Shutdown complete

모든 mysql 디렉토리에 대한 권한을 검사하여 소유권이 있는지 확인하고 이전 ib_logs의 이름을 변경하여 다시 만들 수 있도록했습니다. Google 검색 결과를 2 시간 동안 본 후 지금이 문제가 발생하지 않습니다.


또한 my.cnf의 "skip_innodb"항목을 주석 처리하여 mysql을 실행했습니다. 그러나 나는 그런 식으로 이것을 해결해서는 안된다는 것을 확신합니다.
개렛

innodb 설정 인 my.cnf의 모든 변수를 보여주십시오
RolandoMySQLDBA

답변:


34

로그를 확인한 후 다음 오류가 발견되었습니다.

[ERROR] Unknown/unsupported storage engine: InnoDB

이 파일들을 제거했습니다 :

rm /var/lib/mysql/ib_logfile0
rm /var/lib/mysql/ib_logfile1 

...에서 /var/lib/mysql

이것은 다시 시작한 후 내 문제를 해결했습니다.


7
rm명령은 내가 아는 한 이름을 바꾸지 않고 파일을 제거하는 데 사용됩니다 ...
Itai Ganot

2
이러한 파일에는 데이터베이스 의 실제 데이터가 포함 됩니다. 삭제하고 싶지 않습니다.
Stefan Lasiewski 2016 년

아니요, ibdata파일 당 데이터가 없으면 파일에 데이터가 포함됩니다. ib_logfile 파일은 데이터베이스가 충돌했을 때 / 중단되었을 때 처리되었을 수있는 데이터베이스 변경 트랜잭션에 대한 데이터를 포함하는 재생 로그입니다. 서버를 성공적으로 종료 한 경우 이러한 로그 파일을 삭제해도 아무런 문제가 없습니다. 충돌이 발생하면 필요합니다. 그러나 이것은 유효한 답변입니다. my.cnf 파일이 innodb_log_file_size 옵션을 변경하고 더 이상이 두 파일과 일치하지 않으면 OP 상태의 오류 메시지가 표시됩니다. 새로운 것을 삭제 / 이동하여 수정할 수 있습니다.
Safado 2016 년

2
5 분 동안 만 편집 할 수있는 이유는 저 너머입니다 ... 위에서 언급 한 오류에 대한 잠재적 수정 이라고 말해야 합니다. OP가 말했듯이, 그가 필요한 수정은 아닙니다.
Safado 2016 년

1
언제든지 이름을 바꿀 수 있습니다 (예 :) mv ib_logfile0 ib_logfile0.bak && mv ib_logfile1 ib_logfile1.bak.
kenorb

22

실제로 필요한 skip-innodb경우 (사용 사례 : 낮은 메모리 공간) 주석 처리 할 필요는 없습니다. 그러나 InnoDB가 기본 스토리지 엔진 인 경우 default-storage-engine=myisamMyISAM과 같이 대신 사용할 스토리지 엔진을 알려줄 때까지 서버가 시작되지 않습니다 .

따라서 이것을 시도하십시오 :

$ sudo -u mysql mysqld --skip-innodb --default-storage-engine=myisam

5
"skip_innodb"를 원하면 [mysqld] 섹션 의 /etc/mysql/my.cnf에 "default-storage-engine = myisam"을 추가하십시오 .
20:10에

아름답게 작동합니다. 건배!
Boann

4
innodb 지원을 원한다면 어떻게해야합니까?
Nilzor

Centos 7의 Mariadb가 default-storage-engine=myisam/etc/my.cnf 파일에 추가되었습니다 [mysqld]. 그 트릭을했다. Thx
Damodar Bashyal

12

MySQL 5.6 이상을 사용 중이고 InnoDB를 비활성화하려면 " --default-tmp-storage "를 잊지 마십시오. 그렇지 않으면 작동하지 않습니다.

InnoDB를 비활성화하려면 --innodb = OFF 또는 --skip-innodb를 사용하십시오. 이 경우 기본 스토리지 엔진이 InnoDB이므로 --default-storage-engine 및 --default-tmp-storage-engine을 사용하여 기본값을 영구적 및 영구적으로 다른 엔진으로 설정하지 않으면 서버가 시작되지 않습니다. 임시 테이블.

http://dev.mysql.com/doc/refman/5.6/en/innodb-parameters.html#option_mysqld_ignore-builtin-innodb

이것을 my.cnf에 추가 할 수 있습니다 :

[mysqld] 
innodb=OFF 
ignore-builtin-innodb 
skip-innodb
default-storage-engine=myisam 
default-tmp-storage-engine=myisam

작동하는지 확인하십시오.


+1, 공식 문서를 보지 마십시오. 그것은 설정해야 default-storage-engine하고 default-tmp-storage-engine, 감사합니다.
Giberno

7

mysql 오류 로그를 확인하십시오.

tail -100 /var/log/mysql/error.log

귀하의 로그에 (내 것처럼) 말한 경우 :

InnoDB : 버퍼 풀 초기화, 크기 = 128.0M
InnoDB : mmap (137363456 바이트) 실패; 에르 노 12
[오류] InnoDB : 버퍼 풀에 메모리를 할당 할 수 없습니다

기본 버퍼 크기 인 128M을 사용하기에 메모리가 부족합니다

더 작은 innodb_buffer_pool_size를 지정하도록 행을 추가 하여 구성 파일 /etc/mysql/my.cnf를 편집하십시오 .

# make the buffer pool smaller than 128M since we only have 1 GB of total RAM
innodb_buffer_pool_size = 16M

구성 파일을 저장하고 mysql을 시작하십시오.

sudo service mysql start

여기에 있습니다. 그러나 웹 서버의 프로세스 또는 RAM을 먹는 무언가가 중단 될 수도 있으므로 확인하십시오.
sjas

0

2 가지 더 시도하십시오. 1. innodb 버퍼 풀 크기를 줄이십시오. 2. mysql 초기 스크립트를 편집하고 --innodb 옵션을 추가하십시오.

패키지가 버그인지 궁금합니다. 다른 부 버전을 사용해 볼 수 있습니까?

또한 mysql 서버도 업그레이드되었다고 가정합니까? 아마도 그 버전이 깨졌을까요? 정확한 것은 아직 마지막이 아닙니다.


이미 효과가 없었습니다.
Garrett

죄송합니다. 나쁜 패키지와 같은 방법으로 시도해 보았습니다. 일반적으로 안정적인 mysql.com 버전 또는 percona를 사용하십시오.
johnshen64

또한 새 패키지가 설치 될 때 이전 패키지가 완전히 제거되었는지 확인하십시오.
johnshen64

패키지를 완전히 제거하면 데이터베이스 정보가 손실됩니까?
개렛

안전하지는 않지만 항상 DBS를 백업해야합니다.
johnshen64

0

에 사용하는 위치를 삭제하면이 오류가 발생합니다 tmpdir. 최근에을 변경 한 경우 tmpdir유효한 쓰기 가능 위치인지 확인하고 싶을 수 있습니다.

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