数日前から、MySQLのインストールでいくつかの深刻な問題が発生しています。MySQLは一時ファイルを開き続けます(通常の動作)が、これらのファイルはリリースされません。その結果、最終的にはディスク領域が使い果たされるため、サービスを再起動して/ tmpを手動でクリーンアップする必要があります。
lsofを使用すると、次のように表示されます。
mysqld 16866 mysql 5u REG 8,3 0 692 /tmp/ibyWJylQ (deleted)
mysqld 16866 mysql 6u REG 8,3 0 707 /tmp/ibf5adsT (deleted)
mysqld 16866 mysql 7u REG 8,3 0 728 /tmp/ibGjPRyW (deleted)
mysqld 16866 mysql 8u REG 8,3 0 5678 /tmp/ibMQDLMZ (deleted)
mysqld 16866 mysql 13u REG 8,3 0 5679 /tmp/ibQAnM42 (deleted)
おそらく関係ありませんが、サーバーをシャットダウンすると、ファイルは最終的に解放され、MySQLログで次の警告を確認できます。
121029 7:44:27 [Warning] /usr/local/mysql/bin/mysqld: Forcing close of thread 1333 user: 'xxx'
121029 7:44:27 [Warning] /usr/local/mysql/bin/mysqld: Forcing close of thread 1156 user: 'yyy'
121029 7:44:27 [Warning] /usr/local/mysql/bin/mysqld: Forcing close of thread 1151 user: 'zzz'
ここで、「xxx」、「yyy」、および「zzz」は別個のmysqlユーザー(およびデータベースへのアクティブな接続を持つ3人のユーザーのみ)です。
いくつかの理論があります。
OSに問題があり、ファイルハンドラーを開いたままにします。OSの「削除」操作がシャットダウンするまでスレッドをブロックする可能性はありますか?これは、シャットダウン時の警告と、プロセスが終了したときにファイルが最終的に削除されるという事実を説明する場合があります。
これまで、データセットは非常に小さいため、一時ファイルは比較的小さく、ディスク領域を使い果たすことなくファイルハンドルを解放するのに十分な時間がありました。
デフォルトカーネルのRHEL 6.2でMysql 5.5を使用しています。