web-dev-qa-db-ja.com

MySQLがクラッシュし続ける:InnoDB:./ibdata1をロックできません、エラー:11

私はシンプルなウェブサーバー(Debian 6.0 x86、1GBのメモリと10GBの空き容量があるDirectAdmin、mySQlバージョン5.5.9)を持っていますが、mySQLサーバーがクラッシュし続け、再起動できるようにすべてのmySQLプロセスを終了する必要があります再び。

/var/log/mysql-error.log出力:

130210 21:04:26 InnoDB: Using Linux native AIO
130210 21:04:34 InnoDB: Initializing buffer pool, size = 128.0M
130210 21:05:42 InnoDB: Completed initialization of buffer pool
130210 21:05:48 InnoDB: Initializing buffer pool, size = 128.0M
130210 21:06:22 InnoDB: Initializing buffer pool, size = 128.0M
130210 21:06:27 mysqld_safe mysqld from pid file /usr/local/mysql/data/website.pid ended
130210 21:06:29 mysqld_safe mysqld from pid file /usr/local/mysql/data/website.pid ended
130210 21:07:22 InnoDB: Completed initialization of buffer pool
130210 21:07:51 mysqld_safe mysqld from pid file /usr/local/mysql/data/website.pid ended
130210 21:08:33 InnoDB: Completed initialization of buffer pool
130210 21:12:03 [Note] Plugin 'FEDERATED' is disabled.
130210 21:12:47 InnoDB: The InnoDB memory heap is disabled
130210 21:12:47 InnoDB: Mutexes and rw_locks use InnoDB's own implementation
130210 21:12:47 InnoDB: Compressed tables use zlib 1.2.3
130210 21:12:47 InnoDB: Using Linux native AIO
130210 21:13:11 InnoDB: highest supported file format is Barracuda.
130210 21:13:23 InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: The log sequence number in ibdata files does not match
InnoDB: the log sequence number in the ib_logfiles!
130210 21:14:05  InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
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: 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: 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.
130210 21:17:53  InnoDB: Unable to open the first data file
InnoDB: Error in opening ./ibdata1
130210 21:17:53  InnoDB: Operating system error number 11 in a file operation.

MySQL Webサイト here でトピックを見つけましたが、解決策はありません。

誰かアイデアはありますか?

47
Devator

同じブログの1つのコメントからの別のアプローチ:

これは私を助けました:

lsof -i:3306

次に、それを殺します(プロセス番号)

kill -9 PROCESS

例えばキル-9 13498

次に、MySQLを再起動してください。

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

33
Brigo

ubuntu 14.04で。経由で再起動しようとすると、この問題が発生しています

/etc/init.d/mysql restart

代わりに試してください

service mysql restart 
28
Jens

この問題の最も一般的な原因は、MySQLがすでに実行されているときにMySQLを起動しようとすることです。

これを解決するには、実行中のMySQLインスタンスをすべて停止し、通常の起動スクリプトを使用して再起動します。 service mysql start

傷ついた世界に備える準備ができていない限り、ディストリビューションパッケージバージョンを使用する場合は、MySQLを手動で起動しないでください。

18
Michael Hampton

ソリューション

元のファイル(ibdata1、ib_logfile0、ib_logfile1 ...)のコピーを作成します。

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

http://cglreport.zhenhua.info/2008/08/mysql-error-unable-to-lock-ibdata1.html

12
Brigo

これは私がそれを解決するのに役立ちました:

すべてのibdataファイルを削除し、mysqlにそれらを作成させます。

mysqlを停止します。

service mysql stop

mysqlライブラリに移動します。

cd /var/lib/mysql/

必要に応じて、innodbファイルをどこかに移動します。

mv ib* /root/

mysqlを起動します。

service mysql start
3
Ali Caner Öner

同じ繰り返しエラーのグーグルからここに来ましたが、エラーコード13(InnoDB: Unable to lock ./ibdata1, error: 13)。インターネットで多くの解決策を試した後、私を助けてくれたもの(発明者!)

これらの行を構成に追加します/etc/apparmor.d/usr.sbin.mysqld(もちろん、apparmorとmysqlを再ロードします):

/path/to/mysql/data/ r,
/path/to/mysql/data/** rwk,

多くのソリューションの主な違い:2つのルール(dir自体と内部のすべてのファイルについて、二重の**)およびkオプション。mysqlがファイルをロックできるようにします。

これが誰かを助けることを願っています。

1
hlomzik

スペースをチェックして100%であることを確認してください

df -h

まるでいっぱいのように、.sockファイルを作成しません。

1

他の解決策がどれも機能しない場合、問題はおそらくAppArmorの設定ミスが原因です。

だからちょうどしてください:

$ apt install apparmor-profiles

mySQLを再起動します(再起動の速度に注意してください)。

AppArmorに関連するファイルが見つからないことに気づきました:

$ systemctl status mysql.service

したがって、なぜAppArmorの設定に問題があると思ったのですか。

0
fevangelou

シンプルですが、「cp -a」を使用する方法より高速です。そして、「cp -a」と他のすべてができなかったときに助けました。

  1. service mysql stop && pkill -f mysql

すべてのmysqlプロセスを取り除く

  1. vi /etc/mysql/my.cnf

パラメータdatadir =/var/lib/mysqlをdatadir =/var/lib/mysql2に変更します(または、ない場合は追加します)。

  1. mv /var/lib/mysql /var/lib/mysql2

Datadirの名前を新しい名前に変更します

  1. service mysql start

タンバリンを準備する

0
WSR

pid-fileファイルの[mysql]セクションにmy.cnfパラメータがあることを確認してください。存在しない場合は、unable to lock ...ibdata1.. error:1が発生します。

0
Sachin