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、それでも大規模なテーブルを作成するときに役立ちません。
DBファイルが置かれているディレクトリでDBユーザーの書き込み権限を確認することをお勧めします。
これはAppArmorの問題ですか?再起動してから手動で起動しようとするまでの間に、AppArmorが起動または強制終了されるようなものである可能性があります。
同じ時間にsyslogを確認してください。