web-dev-qa-db-ja.com

非常に大きなログファイル

Windows Server 2008 R2を実行していて、誤って大きなクエリを実行しました。次に、サーバーはハードドライブの容量を使い果たしました。

現在、管理者ドキュメント(log.log)に18GBを超えるファイルがあります。ファイルが再び表示されるだけなので、ファイルを削除できないようです。助けて。

ログを削除すると、管理者権限がないと表示されます。 (私がやります)

3
John Wheal

MySQLは、Windowsの首の大きな痛みです。これは、開いているファイルの動作方法が原因です。

Linuxでは、ディスクがいっぱいになるログファイル(つまり、/ var/log/mysqld.log)を見るたびに、ファイルを切り捨てようとします

echo -n > /var/log/mysqld.log

Linuxとmysqldは問題ありません。一方、ウィンドウズはそうです。

デスクトップのMySQL 5.5.12でこれを実行しようとしました。つまり、エラーファイルをザッピングすると、次のメッセージが表示されました。

C:\>copy con C:\MySQL_5.5.12\data\LW-REDWARDS2.err
^Z
The process cannot access the file because it is being used by another process.
        0 file(s) copied.

C:\>

タスクマネージャに移動して、mysqldプロセスを終了する必要があります。

次に、ファイルハンドルのロックが解除された状態で、ログファイルのザップを試行できます。

次に、mysqlを再起動します

C:\> net start mysql

MysqldがInnoDBクラッシュリカバリを実行する時間を確保する必要があります。

UPDATE 2012-04-25 17:37 EDT

Mysqlエラーログにシャットダウン情報を書き込むには、ディスクスペースが必要です。一時テーブル(これは常にMyISAMです)を生成するmysql操作中は、常にディスク領域が必要です。一時テーブル用のディスクスペースがない場合はどうなりますか?

MySQL 5.0認定調査ガイドページ408,409のセクション29.2の箇条書き11 によると、

MyISAMテーブルに行を追加しているときにディスク領域が不足しても、エラーは発生しません。サーバーは、スペースが使用可能になるまで操作を中断し、操作を完了します。

利用可能なディスクスペースがない状態でmysqldの標準シャットダウンを試行すると、問題が複雑になります。プロセスを強制終了し、18Gログファイルを削除し、mysqlを再度起動して、InnoDBクラッシュリカバリを実行します。同じディスクの問題が原因で機能しないWindows環境で代替手段を探すよりはましです。

2
RolandoMySQLDBA