web-dev-qa-db-ja.com

MySQL General Log Tableをクリアします、安全ですか?

私が取り組んでいるサーバーでは、一般的なmysqlログテーブルは200GB近くのスペースを使用しており、これは巨大です。だから、私はそれをクリアすることを計画しています:

TRUNCATE table mysql.general_log

大丈夫ですか?問題は発生しますか?サーバーはライブで大きなアプリケーションなので、私は心配しています。ありがとう。

15
Rana

無効にしてから切り捨てない限り、間違いなく問題が発生します。有効になっているときに切り捨てた場合。 mysql.general_logエンジンはCSVまたはMyISAMのいずれかであるため、テーブルが巨大な場合、Truncateはテーブルをロックします。一方、新しく作成されたエントリは一般的なログテーブルに書き込もうとし、すべての接続がロックされ、最終的に「TooMany」になります。接続"。だから安全のためにこのようにしてください

mysql> SET GLOBAL general_log=OFF;
mysql> TRUNCATE table mysql.general_log;
mysql> SET GLOBAL general_log=ON;
15

問題は発生しませんが、古いログエントリはすべて失われるため、上記のRavindraのアドバイスは適切です。

次の方法でバックアップを実行できます。

mysqldump -p --lock_tables = false mysql general_log> genlog.sql

常に一般ログオンをオンにする必要がありますか?私は通常、パフォーマンスの問題をトラブルシューティングしているときにのみオンにします。 MySQLはそこにあるすべてのものをログに記録します(クライアントの接続、切断、およびすべてのステートメント)。ほとんどのシステムでは、ログは非常に急速に大きくなります。これには、パフォーマンスのオーバーヘッドもあります。

6
0xfded