Monday, August 18, 2008

Mysql error "InnoDB: Unable to lock ./ibdata1, error: 11"

Recently, there was a power outage in the lab. I did not shut down my machines before the power outage. After I restarted my Ubuntu, I could not start up Mysql. The error was:

InnoDB: Unable to lock ./ibdata1, error: 11
InnoDB: Check that you do not already have another mysqld process
InnoDB: using the same InnoDB data or log files.
InnoDB: Error in opening ./ibdata1

But I am 100% sure that no another mysqld process was running. After I searched on line, I found that I was not the only one encountering this error. See this post.
This post has an insight into this problem. It seems to be caused by NFS. Mysql is not installed on a local file system. It is installed on a remote file system which is mounted to other file systems by using NFS.

Solution
make a copy of the original files (ibdata1, ib_logfile0, ib_logfile1...).

mv ibdata1 ibdata1.bak
cp -a ibdata1.bak ibdata1
......

8 comments:

  1. Thanks a lot,

    You saved me lots of time!!!

    ReplyDelete
  2. A be it with the error:

    ERROR] /usr/sbin/mysqld: Incorrect information in file: 'somefile.frm'

    and fix it,

    Thx

    ReplyDelete
  3. I still dont under stand

    ReplyDelete
  4. I got this error when compiling from source with icc and ltcmalloc_minimal...


    Thanks a lot, your fix works !


    # MySQL - Restart
    # ------------------------------------------------------------------------------
    sudo mv /usr/local/mysql/data/ibdata1 /usr/local/mysql/data/ibdata1.bak
    sudo mv /usr/local/mysql/data/ib_logfile0 /usr/local/mysql/data/ib_logfile0.bak
    sudo mv /usr/local/mysql/data/ib_logfile1 /usr/local/mysql/data/ib_logfile1.bak
    sudo cp -a /usr/local/mysql/data/ibdata1.bak /usr/local/mysql/data/ibdata1
    sudo cp -a /usr/local/mysql/data/ib_logfile0.bak /usr/local/mysql/data/ib_logfile0
    sudo cp -a /usr/local/mysql/data/ib_logfile1.bak /usr/local/mysql/data/ib_logfile1
    sudo /etc/init.d/mysql restart

    ReplyDelete
  5. this helped me:


    lsof -i:3306

    Then kill it (the process number)

    kill -9 PROCESS

    e.g. kill -9 13498

    Then try to restart MySQL again.

    via http://www.webhostingtalk.com/archive/index.php/t-1070293.html

    ReplyDelete