MySQL을 시작할 때 "스토리지 엔진으로 'InnoDB' 등록 실패" 오류가 발생합니다.
Stack overflow에서 비슷한 질문을 많이 찾았지만 정확한 오류 해결책을 얻지 못했습니다.문제는 Dedicated Centos 6.5 시스템 중 하나에서 MySQL 서비스를 시작할 때 오류가 발생한다는 것입니다.
141018 05:13:46 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
141018 5:13:47 [Warning] Can't create test file /var/lib/mysql/ip-184-168-73-83.lower-test
141018 5:13:47 [Warning] Can't create test file /var/lib/mysql/ip-184-168-73-83.lower-test
/usr/libexec/mysqld: Can't create/write to file '/tmp/ibkTWnhE' (Errcode: 28)
141018 5:13:48 InnoDB: Error: unable to create temporary file; errno: 28
141018 5:13:48 [ERROR] Plugin 'InnoDB' init function returned error.
141018 5:13:48 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
141018 5:13:48 [ERROR] Can't start server : Bind on unix socket: No space left on device
141018 5:13:48 [ERROR] Do you already have another mysqld server running on socket: /var/lib/mysql/mysql.sock ?
141018 5:13:48 [ERROR] Aborting
141018 5:13:48 [Note] /usr/libexec/mysqld: Shutdown complete
141018 05:13:48 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
free command status : free -m
total used free shared buffers cached
Mem: 3743 3631 111 0 2705 21
-/+ buffers/cache: 905 2838
Swap: 2047 0 2047
데이터베이스 데이터가 손상된 경우에도 이 오류가 발생합니다.아래에 언급된 Db 데이터 파일(ib_logfile0 및 ib_logfile1)을 다른 위치로 이동하여 이 문제를 해결할 수 있습니다.ib_logfile0 및 ib_logfile1은 InnoDB 인프라스트럭처의 시스템 테이블 공간입니다.이러한 파일에는 InnoDB에 필수적인 정보에 대한 여러 클래스가 포함되어 있습니다.이 파일들에 대해서는 여기에서 읽어보실 수 있습니다.
다음 단계를 수행하기 전에 파일 복사본(ib_logfile0 및 ib_logfile1)을 보관하여 데이터가 손실된 경우 데이터를 복원할 수 있습니다.
다음 단계를 따릅니다.
- 루트 액세스를 사용하여 SSH를 통해 서버에 로그인합니다.
- /var/lib/mysql로 이동합니다.
- ib_logfile0 및 ib_logfile1과 같은 파일이 나타나면 이름을 바꾸거나 다른 폴더로 이동합니다.
- 를 실행하여 MySQL 서비스를 중지하고 시작합니다.
sudo service mysql stop
그리고.sudo service mysql start
이 파일들은 서버를 다시 시작한 후에 다시 만들어지며 문제가 해결되기를 바랍니다.
감사해요.
저도 똑같은 문제가 있습니다. 이것이 제 해결책입니다.
서버에 RAM 추가
구성 파일에서 innodb-buffer-pool 크기 값을 줄입니다.
sudo nano /etc/ mysql/ my.cnf
innodb_buffer_pool_size = 10M
저장후/etc/mysql/my.cnf
.
mysql 서비스를 다시 시작합니다.
sudo service mysql restart
exit
이는 자주 발생하는 문제입니다.따라하기 -
- 위치 "에서 이러한 "aria_log_control, ib_logfile0, ib_logfile1, ib_data1" 파일을 삭제/이동합니다.\xampp\mysql\data" 및 "..\xampp\mysql\backup".
- stop and start apache server and mysql form xampp 제어판
이것은 그 문제를 해결할 것입니다. 사실은 제게 효과가 있었습니다.
참고: 많은 경우 DB를 재설정할 것입니다. 매우 주의하십시오.
값 innodb_buffer_pool_size
그리고.innodb_log_file_size
저한테는 안 통했어요
ib_logfile0
그리고.ib_logfile1
파일도 도움이 되지 않았습니다.
도움이 된 것은 다음과 같습니다.
> service mysql stop
my.cfg
덧붙이기innodb_force_recovery = 1
> service mysql start
> service mysql stop
댓글 달기innodb_force_recovery = 1
선
> service mysql start
그리고 voila. (데이터 손실 여부는 전혀 알 수 없음을 유의해야 합니다.)
늦었지만 제게 도움이 된 해결책이 누군가에게 도움이 될 수 있도록 여기에 답을 넣는 것입니다.다음과 같은 조치를 취했습니다.
- 서버에 RAM 추가
- innodb-buffer-pool 크기 값 줄이기
- innodb_log_file_size 설정
- mysql 다시 시작
my.cnf에 추가되는 예제:
innodb_buffer_pool_size = 10M
innodb_log_file_size = 1000M
몇 시간 후에 디스크 공간을 확인했습니다...그리고 배가 부른...
제 경우에는 여기 설명된 innodb_force_recovery를 사용하여 mysql을 재시작해야 했습니다. https://serverfault.com/a/592797/519751
mysql 오류 로그 아래로 내려가고 있었습니다.
[Note] Plugin 'FEDERATED' is disabled.
InnoDB: The InnoDB memory heap is disabled
InnoDB: Mutexes and rw_locks use GCC atomic builtins
InnoDB: Compressed tables use zlib 1.2.3
InnoDB: Using Linux native AIO
InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(137363456 bytes) failed; errno 12
InnoDB: Completed initialization of buffer pool
InnoDB: Fatal error: cannot allocate memory for the buffer pool
[ERROR] Plugin 'InnoDB' init function returned error.
[ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
[ERROR] Unknown/unsupported storage engine: InnoDB
[ERROR] Aborting
[Note] /usr/libexec/mysqld: Shutdown complete
저는 두 가지 해결책이 있다는 것을 알았습니다.
1)innodb_log_file_size를 기존 InnoDB 로그 파일의 실제 크기와 동일하게 설정합니다.할당된 innoDB 로그 크기를 보려면 mysql에 로그인하고 다음 cmd:-를 입력합니다.
SHOW GLOBAL VARIABLES LIKE 'innodb_log_file_size';
예상 결과 예: - 5242880
그런 다음 해당 값을 my.cnf:- vi /etc/my.cnf에 삽입합니다.
innodb_log_file_size =5242880
2)./ib_logfile0 및 ./ib_logfile1 파일의 이름을 모두 바꾸거나 이동한 다음 MySQL 서버를 시작합니다.이 값은 일반적으로 /var/lib/mysql에 위치합니다.mysql을 시작한 후 새 innoDB 로그 파일을 생성하고 .ibd 파일에서 가능한 반쓰기 데이터를 복원합니다.
expressed mysql 로그 예제:-
InnoDB: Database physically writes the file full: wait...
161216 9:58:54 InnoDB: Log file ./ib_logfile1 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile1 size to 5 MB
InnoDB: Database physically writes the file full: wait...
161216 9:58:54 InnoDB: highest supported file format is Barracuda.
InnoDB: The log sequence number in ibdata files does not match
InnoDB: the log sequence number in the ib_logfiles!
161216 9:58:54 InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Restoring possible half-written data pages from the doublewrite
InnoDB: buffer...
161216 9:58:54 InnoDB: Waiting for the background threads to start
161216 9:58:55 InnoDB: 5.5.50 started; log sequence number 1589772
161216 9:58:55 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306
161216 9:58:55 [Note] - '0.0.0.0' resolves to '0.0.0.0';
161216 9:58:55 [Note] Server socket created on IP: '0.0.0.0'.
161216 9:58:55 [Note] Event Scheduler: Loaded 0 events
161216 9:58:55 [Note] /usr/libexec/mysqld: ready for connections.
Version: '5.5.50' socket: '/var/lib/mysql/mysql.sock' port: 3306 MySQL Community Server (GPL) by Remi
참고문헌: - JUSTIN KULESZA (2011).MySQL: InnoDB를 스토리지 엔진으로 등록하지 못했습니다.https://spin.atomicobject.com/2011/05/09/mysql-failed-registration-of-innodb-as-a-storage-engine/ 에서 이용할 수 있습니다.
롤란도 마이SQLDBA (2014).MySQL my.cnf: innodb_log_file_size가 없습니다.https://dba.stackexchange.com/questions/75688/mysql-my-cnf-innodb-log-file-size-is-missing/158325#158325 에서 이용 가능합니다.
InnoDB Redo 로그 파일 수 또는 크기 변경http://dev.mysql.com/doc/refman/5.7/en/innodb-data-log-reconfiguration.html 에서 이용 가능합니다.
다음 오류가 발생했습니다.
[ERROR] InnoDB: Plugin initialization aborted with error Generic error
[Note] InnoDB: Starting shutdown...
[ERROR] Plugin 'InnoDB' init function returned error.
[ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
[Note] Plugin 'FEEDBACK' is disabled.
[ERROR] Unknown/unsupported storage engine: InnoDB
[ERROR] Aborting
충돌한 서버의 파일 백업을 복원하고 MySQL/MariaDB를 시작하려고 한 후.당황스럽게도, 제가 복구된 폴더의 소유자와 그룹을 루트에서 mysql로 변경하는 것을 잊어버렸기 때문입니다.따라서 파일 권한 및 소유자/그룹을 확인합니다.
재설치, 제거 등과 관련해서는 아무것도 작동하지 않았습니다(수정이 아니라 보관할 데이터가 없었습니다. 데이터 파괴 프로세스가 더 많기 때문에 큰 주의가 필요했습니다).
1005 mysql_install_db
1007 /usr/bin/mysqld_safe --datadir='/var/lib/mysql
1008 /usr/bin/mysqld_safe --datadir='/var/lib/mysql' (^z)
1009 bg
1010 mysql
1011 mysql_secure_installation
1012 mysql
1013 mysql -p
그리고 비올라, 실제로 사용 가능한 데이터베이스.
나에게 해결책은 추가할 구성을 변경하는 것이었습니다.
innodb_use_native_aio = 0
mysql 구성에서
이 로그 파일(ib_logfile0)을 안전한 쪽으로 다른 곳으로 옮기고 나를 위해 작동한 mysql 서비스를 시작하면 됩니다.
innobackupex를 통해 생성된 백업 세트를 새 인스턴스로 복원할 때도 동일한 문제가 발생했습니다.마지막으로 근본 원인은 innodb_log_file_size가 백업을 수행하는 원래 인스턴스와 일치하지 않기 때문이며 다음과 같은 단계별로 수정합니다.
아래 명령을 통해 oragin 인스턴스에서 innodb_log_file_size 값을 가져옵니다.
mysql uroot -ppasswd -NBe "show global variables like 'innodb_log_file_size';"
새 인스턴스의 /etc/my.cnf를 마지막 get 값으로 수정합니다.
vim /etc/my.cnf
다음을 통해 mysqld를 다시 시작합니다.
systemctl restart mysqld
언급URL : https://stackoverflow.com/questions/26439742/getting-error-plugin-innodb-registration-as-a-storage-engine-failed-when-sta
'programing' 카테고리의 다른 글
angular.js $http 개체가 X-Requested-With 헤더를 보내지 못하도록 하는 방법은 무엇입니까? (0) | 2023.10.25 |
---|---|
row_number() 그룹화 기준? (0) | 2023.10.20 |
WordPress의 custom wp_query 페이지에 페이지를 지정하면 404 오류 페이지가 발생합니다. (0) | 2023.10.20 |
자바스크립트로 URL 구문 분석 (0) | 2023.10.20 |
Android 푸시 알림:알림에 표시되지 않는 아이콘, 대신 흰색 사각형이 표시됨 (0) | 2023.10.20 |