Obținerea erorii „Înregistrarea plugin-ului ‘InnoDB’ ca STORAGE ENGINE a eșuat” la pornirea MySQL (Programare, Mysql, Ubuntu, Innodb, Mariadb 10.3)

Ritesh Kumar a intrebat.

Am găsit multe întrebări similare pe Stackoverflow, dar nu am găsit soluția exactă a erorii.Problema mea este că atunci când pornesc serviciul MySQL pe una dintre mașinile dedicate Centos 6.5, primesc o eroare :

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

Iată starea comenzii libere: free -m

             total       used       free     shared    buffers     cached
Mem:          3743       3631        111          0       2705         21
-/+ buffers/cache:        905       2838
Swap:         2047          0       2047

Comentarii

  • Știu că este târziu, dar cred că cineva se poate confrunta cu această problemă ca și tine. Aici cred că aveți o eroare de permisiune a fișierului. Mysql este rulat de propriul său utilizator numit „mysql”, care trebuie să aibă permisiunea în directorul „/var/lib/mysql”. Vă rugăm să verificați acel director care are permisiunea de scriere și de execuție pentru utilizatorul numit „mysql”, altfel trebuie să schimbați utilizatorul implicit al mysql –  > Por Shahadat Hossain Khan.
7 răspunsuri
xuri

Am aceleași probleme, aceasta este soluția mea:

  1. Adăugați mai multă memorie RAM la server

  2. Micșorați valoarea mărimii innodb-buffer-pool în fișierul de configurare:

    sudo nano /etc/mysql/my.cnf

    innodb_buffer_pool_size = 10M
    

După ce ați salvat /etc/mysql/my.cnf.

Reporniți serviciul mysql:

sudo service mysql restart

exit

Comentarii

Avinash Thombre

Aceasta este o problemă care apare frecvent. Faceți următoarele –

  1. ștergeți/îndepărtați aceste fișiere „aria_log_contro, ib_logfile0, ib_logfile1, ib_data1” din locația „..xamppmysqldata” și, de asemenea, din „..xamppmysqlbackup”.
  2. opriți și porniți serverul apache și mysql din panoul de control xampp

Acest lucru ar trebui să rezolve problema; de fapt, pentru mine a funcționat.

Comentarii

  • Aș dori să adaug un avertisment la această metodă pentru persoanele care nu știu ce conțin aceste fișiere. Îndepărtarea acestor fișiere va corupe probabil grav baza de date și nu veți putea să o recuperați. ib_logfile conține redo logs (după cunoștințele mele) care sunt esențiale pentru tabelele innodb. –  > Por papa zulu.
Petr Nagy

Modificarea valorilor din innodb_buffer_pool_size și innodb_log_file_size nu a funcționat pentru mine.

Mutarea ib_logfile0 și ib_logfile1 nu m-a ajutat nici mutarea fișierelor

Ce a făcut ajuta a fost:

> service mysql stop

Editați my.cfg și adăugați innodb_force_recovery = 1

> service mysql start
> service mysql stop

Comentați innodb_force_recovery = 1 linie.

> service mysql start

Și voilá. (Trebuie să menționez că nu am nicio idee dacă acest lucru implică pierderi de date sau nu)

user3871474

Am fost obtinerea de mai jos mysql eroare de jurnal de eroare: –

[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

Am aflat că există două soluții care sunt: –

1)Setați innodb_log_file_size egal cu dimensiunea reală a fișierelor de jurnal InnoDB existente. Pentru a vedea care este dimensiunea logului InnoDB alocat, conectați-vă la mysql și introduceți următorul cmd: –

SHOW GLOBAL VARIABLES LIKE 'innodb_log_file_size';

Exemplu de rezultat așteptat: – 5242880

După aceea, introduceți această valoare în my.cnf:- vi /etc/my.cnf

 innodb_log_file_size =5242880

2)Redenumiți sau mutați ambele fișiere ./ib_logfile0 și ./ib_logfile1, apoi porniți serverul MySQL. în mod normal, acesta va fi localizat în /var/lib/mysql. După ce pornește mysql, acesta creează un nou fișier jurnal innoDB și restaurează eventualele date scrise pe jumătate din fișierul .ibd.

Exemplul de jurnal mysql expextat:-

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

Referințe:-JUSTIN KULESZA (2011). MySQL: Failed Registration of InnoDB as a Storage Engine (Înregistrare eșuată a InnoDB ca motor de stocare). Disponibil la adresa: https://spin.atomicobject.com/2011/05/09/mysql-failed-registration-of-innodb-as-a-storage-engine/.

RolandoMySQLDBA (2014). MySQL my.cnf: innodb_log_file_size lipsește. Disponibil la: https://dba.stackexchange.com/questions/75688/mysql-my-cnf-innodb-log-file-size-is-missing/158325#158325

Modificarea numărului sau a dimensiunii fișierelor InnoDB Redo Log Files. Disponibil la adresa : http://dev.mysql.com/doc/refman/5.7/en/innodb-data-log-reconfiguration.html

Ritesh Kumar

Deși târziu, dar punând răspunsul aici, astfel încât soluția care m-a ajutat pe mine să poată ajuta pe cineva. Am făcut următorii pași:

  1. A adăugat mai multă memorie RAM la sever
  2. Diminuați valoarea mărimii innodb-buffer-pool size
  3. Setați innodb_log_file_size
  4. Reporniți mysql

Exemplu de adăugare la my.cnf:

innodb_buffer_pool_size = 10M
innodb_log_file_size = 1000M

Comentarii

  • @Walter fișierul dvs. de configurare în /etc/mysql/my.cnf –  > Por Anatole Lucet.
Minhaj Javed

Am rezolvat această problemă prin următoarele:

  • Conectați-vă la server prin SSH cu acces root.
  • Navigați în /var/lib/mysql.
  • Dacă vedeți fișiere de jurnal precum, ib_logfile0 și ib_logfile1, redenumiți-le sau mutați-le în alt dosar.
  • Opriți și porniți serviciul MySQL prin rularea sudo service mysql stop și sudo service mysql start

Sper că acest lucru vă ajută. Mulțumesc

John Greenfelder

Nimic nu funcționa cu reinstalări, eliminări și altele (nu aveam date de păstrat, nu era o soluție; mai mult un proces de distrugere a datelor, mare avertisment acolo):

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

Și viola; baza de date utilizabilă de fapt.