web-dev-qa-db-ja.com

MySQLでは、不要なログをすべて削除/フラッシュ/クリアするにはどうすればよいですか?

いくつかのコマンド(FLUSH LOGS、PURGE MASTER)を試しましたが、ログファイル(以前にアクティブ化された場合)またはログテーブル(mysql/slow_log.CSVおよびmysql/general_log.CSVとそれらの.frmおよび.CSM対応物)は削除されません。

SHOW BINARY LOGSは「バイナリロギングを使用していません」を返します。

編集:テーブルログをクリアするこのシンプルなソリューションを見つけました(ただし、mysqlコマンドを使用したファイルログはまだです)。

TRUNCATE mysql.general_log;
TRUNCATE mysql.slow_log;
22
Erwin Mayer

FLUSH LOGSは、ログファイルを閉じて再度開きます。ログファイルが大きい場合、それらは削減されません。 Linuxを使用している場合、mvを使用してログファイルの使用中に名前を変更できます。FLUSHLOGSの後、MySQLが新しい小さなファイルに書き込んでいることがわかり、削除できます。古い大きなファイル。

バイナリログは異なります。古いバイナリログを削除するには、 PURGE BINARY LOGS を使用します。スレーブ(存在する場合)がまだバイナリログを使用していないことを確認してください。つまり、SHOW SLAVE STATUSを実行して、作業中のbinlogファイルを確認し、そのファイルまたはそれ以降のファイルをパージしないでください。

また、binlogは、バックアップから復元し、binlogを再適用してデータベースを最新の状態にする必要がある場合のポイントインタイムリカバリに役立ちます。この方法でbinlogを使用する必要がある場合は、最後のバックアップ以降に書き込まれたbinlogをパージしないでください。

29
Bill Karwin

Amazon RDSを使用している場合、これを2回実行するとトリックが実行されます。

Prompt> CALL mysql.rds_rotate_slow_log;
Prompt> CALL mysql.rds_rotate_general_log;

ソース: http://docs.aws.Amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.Concepts.MySQL.html

17

サーバーでバイナリログが有効になっていないようです。バイナリログが有効になっているときに使用/作成された古いログファイルを削除したいと思います。必要に応じて、「rm」コマンドを使用して手動で削除できます。バイナリロギングを有効にしたい場合は、設定ファイルを更新することで同じことができます(ただし、すでに実行されている場合はサーバーの再起動が必要です)。以下のリンクを参照できます。 http://dev.mysql.com/doc/refman/5.0/en/replication-options-binary-log.html#option_mysqld_log-binhttp://dev.mysql。 com/doc/refman/5.0/en/replication-options-binary-log.html#sysvar_log_bin

0
kasi