web-dev-qa-db-ja.com

多くのInnoDBテーブルが原因でMySQLを起動できませんでしたか?

15のデータベースに約6000のInnoDBテーブルがあり、innodb_file_per_tableを使用すると、Ubuntuサーバーを再起動するたびに、MySQLが起動に失敗してエラーが発生することがわかりました。

Version: '5.1.56-rel12.7-log'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  (Percona Server (GPL), 12.7, Revision 224)
111106  5:09:00  InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./db1/tbl182.ibd
InnoDB: File operation call: 'open'.

問題のあるテーブルのファイル名(つまりtbl182.ibd)は毎回同じではないので、MySQLがすべてのテーブルで何かをしているのではないかと思いますか?

ただし、コマンド(Sudo /etc/init.d/mysql restart)を使用して再起動すると、MySQLを正常に起動できます。これはとても奇妙です!

My Env:MySQLバージョン:5.1.56-rel12.7-log(Ubuntu 10.04 LTS + Percona)

更新

多数のテーブルを削除することで問題が解決したため、権限ではなくファイル制限に関連するものである必要があります。

/etc/init.d/mysqlをハードコードされた値に変更しましたlimit -n 500、それでも大規模なテーブルを作成するときに役立ちません。

2
Howard

DBファイルが置かれているディレクトリでDBユーザーの書き込み権限を確認することをお勧めします。

1
Michael

これはAppArmorの問題ですか?再起動してから手動で起動しようとするまでの間に、AppArmorが起動または強制終了されるようなものである可能性があります。

同じ時間にsyslogを確認してください。

1
crb