Ritesh Kumar
Ritesh Kumar

Reputation: 2223

Getting error "Plugin 'InnoDB' registration as a STORAGE ENGINE failed" when starting MySQL

I found many similar question on Stackoverflow but didn't get the exact error solution. My issue is when starting MySQL service on one of the Dedicated Centos 6.5 machine, I am getting error :

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

Here are 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

Upvotes: 36

Views: 173780

Answers (14)

Sean Kiong
Sean Kiong

Reputation: 11

I have the same issue to start the mariadb service. Tried all the advices here but still not working for me.

However, i manage to resolve the issue by doing the following steps:

  • sudo chown mysql:mysql -R /mysql/datadir
  • sudo chmod 700 -R /mysql/datadir

hope this help.

Upvotes: -1

Petr Nagy
Petr Nagy

Reputation: 569

Changing the values of innodb_buffer_pool_size and innodb_log_file_size didn't work for me.

Moving ib_logfile0 and ib_logfile1 files didn't help either.

What did help was:

> service mysql stop

Edit my.cfg and add innodb_force_recovery = 1

> service mysql start
> service mysql stop

Comment the innodb_force_recovery = 1 line.

> service mysql start

And voilá.

Note: Using innodb_force_recovery may cause data loss.

Upvotes: 9

mcaleaa
mcaleaa

Reputation: 577

In my case, I needed to restart mysql using innodb_force_recovery as described here: https://serverfault.com/a/592797/519751

Upvotes: 0

georgiecasey
georgiecasey

Reputation: 23381

I got this error:

[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

After restoring a file backup of a crashed server and trying to start MySQL/MariaDB. Embarrassingly, it was just because I forgot to change the owner and group of the restored folder to mysql from root. So check file permissions and owners/groups.

Upvotes: 0

Minhaj Javed
Minhaj Javed

Reputation: 981

This error also happens when your Database data is corrupt. You may fix this issue by moving your Db data files (ib_logfile0 and ib_logfile1) mentioned below to another location. ib_logfile0 and ib_logfile1 are system tablespace for the InnoDB infrastructure. These files contains several classes for information vital for InnoDB. You may read about these files here.

Before following below steps please keep a copy of files (ib_logfile0 and ib_logfile1) so you may restore your data in case it is lost:

Follow below steps:

  • Login to server via SSH with root access.
  • Navigate to /var/lib/mysql.
  • If you see files like, ib_logfile0 and ib_logfile1, rename or move them to some other folder.
  • Stop and start the MySQL service by running sudo service mysql stop and sudo service mysql start

These files will be recreated after you restart the server and the issue will be fixed hopefully.

Thanks

Upvotes: 47

blylei
blylei

Reputation: 1

I also met the same issue when restore a backup set made via innobackupex to a new instance. Finally ,the root cause is innodb_log_file_size doesn't match original instance that take the backup, and fix steps by steps like below:


  1. Get innodb_log_file_size value from oragin instance via below command:

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

  2. Modify the /etc/my.cnf of new instance with last get value:

    vim /etc/my.cnf

  3. Restart mysqld via :

    systemctl restart mysqld

Upvotes: -1

user3781113
user3781113

Reputation: 77

After few unsuccess hours, i checked the disk space... and was full...

Upvotes: 3

Rahul Sharma
Rahul Sharma

Reputation: 1

Just move this log file (ib_logfile0) to some other place for safer side and start the mysql services it worked for me.

Upvotes: -1

Avinash Thombre
Avinash Thombre

Reputation: 314

This is frequently occurred issue. Do following -

  1. delete/move out these "aria_log_contro, ib_logfile0, ib_logfile1, ib_data1" files from location "..\xampp\mysql\data" and also from "..\xampp\mysql\backup".
  2. stop and start apache server and mysql form xampp control panel

This should fix the issue; actually it worked for me.

NOTE: THIS IS GOING TO RESET THE DB IN MANY CASES BE VERY CAREFUL

Upvotes: 12

Skiv
Skiv

Reputation: 41

for me the solution was to change the config to add

innodb_use_native_aio = 0

in mysql config

Upvotes: -1

frustrated.
frustrated.

Reputation: 1

Nothing was working with reinstalls, removes, and others (I had no data to keep, not a fix; more of a data destruction process, big caveat there):

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

And viola; actually usable database.

Upvotes: -1

xuri
xuri

Reputation: 903

I have the same problems, this my solution:

  1. Add more RAM to the server

  2. Decrease the value of innodb-buffer-pool size in the config file:

    sudo nano /etc/mysql/my.cnf

    innodb_buffer_pool_size = 10M
    

After save /etc/mysql/my.cnf.

Restart mysql service:

sudo service mysql restart

exit

Upvotes: 21

Ritesh Kumar
Ritesh Kumar

Reputation: 2223

Although late but putting answer here so that solution that helped me can help someone. I took following steps:

  1. Added more RAM to sever
  2. Decrease the value of innodb-buffer-pool size
  3. Set innodb_log_file_size
  4. Restart mysql

Example of addition to my.cnf:

innodb_buffer_pool_size = 10M
innodb_log_file_size = 1000M

Upvotes: 2

user3871474
user3871474

Reputation: 17

I was getting below mysql error log:-

[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

I found out there are two solutions which are:-

1)Set innodb_log_file_size equal to the actual size of the existing InnoDB log files. To see what size of innoDB log allocated, login mysql and enter following cmd:-

SHOW GLOBAL VARIABLES LIKE 'innodb_log_file_size';

Expected result example:- 5242880

After that, insert that value in my.cnf:- vi /etc/my.cnf

 innodb_log_file_size =5242880

2)Rename or move both the ./ib_logfile0 and ./ib_logfile1 files, and then start the MySQL server.This normally will be located at /var/lib/mysql. After start mysql, it create new innoDB log file and restore possible half-written data from the file of .ibd.

The expexted mysql log example:-

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

References:- JUSTIN KULESZA (2011). MySQL: Failed Registration of InnoDB as a Storage Engine. Available at: 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 is missing. Available at: https://dba.stackexchange.com/questions/75688/mysql-my-cnf-innodb-log-file-size-is-missing/158325#158325

Changing the Number or Size of InnoDB Redo Log Files. Available at: http://dev.mysql.com/doc/refman/5.7/en/innodb-data-log-reconfiguration.html

Upvotes: 0

Related Questions