programing

MySQL을 시작할 때 "스토리지 엔진으로 'InnoDB' 등록 실패" 오류가 발생합니다.

padding 2023. 10. 20. 13:29
반응형

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

이 파일들은 서버를 다시 시작한 후에 다시 만들어지며 문제가 해결되기를 바랍니다.

감사해요.

저도 똑같은 문제가 있습니다. 이것이 제 해결책입니다.

  1. 서버에 RAM 추가

  2. 구성 파일에서 innodb-buffer-pool 크기 값을 줄입니다.

    sudo nano /etc/ mysql/ my.cnf

    innodb_buffer_pool_size = 10M
    

저장후/etc/mysql/my.cnf.

mysql 서비스를 다시 시작합니다.

sudo service mysql restart

exit

이는 자주 발생하는 문제입니다.따라하기 -

  1. 위치 "에서 이러한 "aria_log_control, ib_logfile0, ib_logfile1, ib_data1" 파일을 삭제/이동합니다.\xampp\mysql\data" 및 "..\xampp\mysql\backup".
  2. 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. (데이터 손실 여부는 전혀 알 수 없음을 유의해야 합니다.)

늦었지만 제게 도움이 된 해결책이 누군가에게 도움이 될 수 있도록 여기에 답을 넣는 것입니다.다음과 같은 조치를 취했습니다.

  1. 서버에 RAM 추가
  2. innodb-buffer-pool 크기 값 줄이기
  3. innodb_log_file_size 설정
  4. 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가 백업을 수행하는 원래 인스턴스와 일치하지 않기 때문이며 다음과 같은 단계별로 수정합니다.


  1. 아래 명령을 통해 oragin 인스턴스에서 innodb_log_file_size 값을 가져옵니다.

    mysql uroot -ppasswd -NBe "show global variables like 'innodb_log_file_size';"

  2. 새 인스턴스의 /etc/my.cnf를 마지막 get 값으로 수정합니다.

    vim /etc/my.cnf

  3. 다음을 통해 mysqld를 다시 시작합니다.

    systemctl restart mysqld

언급URL : https://stackoverflow.com/questions/26439742/getting-error-plugin-innodb-registration-as-a-storage-engine-failed-when-sta

반응형