MySQL FLUSH コマンド
MySQL FLUSH コマンド
ホスティングの世界では、MySQLは動的ウェブサイト、eコマースストア、コンテンツ管理システム(CMS)、およびSaaSプラットフォームを支える最も重要なコンポーネントの1つです。共有ホスティングクラスター、VPSインフラストラクチャ、または<а href="/ja/dedicated-servers/">企業クライアント向けの専用サーバーを管理している場合でも、MySQLの内部操作を制御することは不可欠です。
見落とされがちですが強力なツールの1つがFLUSHコマンドです。これは、特権を再読み込みし、ログをクリアし、状態をリセットし、サーバーを再起動せずに一貫性を確保するための管理SQLステートメントのコレクションです。
MySQLにおけるFLUSHとは?
このFLUSHステートメントは、以下の目的で使用されます:
内部キャッシュをクリアする
設定ファイル(特権テーブルなど)を再読み込みする
ステータス情報をリセットする
MySQLにバッファリングされたデータをディスクに書き込ませる
ほとんどのFLUSH操作を実行できるのは、RELOAD特権(またはそれ以上、例えばSUPER)を持つユーザーのみです。
一般的なFLUSHコマンド
1. 🔐 FLUSH PRIVILEGES
mysqlデータベースの権限テーブルからユーザー特権を再読み込みします:
FLUSH PRIVILEGES;使用するタイミング:
mysql.userや他の権限テーブルを手動で編集した後。
直接UPDATEステートメントを使用してユーザーアクセスを変更した場合。
2. FLUSH TABLES
すべてのオープンテーブルを閉じ、再オープンさせます。ファイルシステムのメンテナンスやバックアップに便利です。
FLUSH TABLES;特定のテーブルをフラッシュすることもできます:
FLUSH TABLES table_name [, table_name] ...;使用するタイミング:
外部ツール(例:mysqldump –single-transaction)を使用してバックアップを行う前。
テーブルキャッシュをオーバーロードする可能性のある大規模な書き込みの後。
3. FLUSH QUERY CACHE
クエリキャッシュからすべてのクエリ結果を削除します(有効な場合):
FLUSH QUERY CACHE;注意:クエリキャッシュは非推奨であり、MySQL 8.0で削除されました。
4. FLUSH LOGS
すべてのログファイル(一般ログ、エラーログ、バイナリログ、リレーログ)を閉じて再オープンします。
FLUSH LOGS;特定のタイプをフラッシュすることもできます:
FLUSH BINARY LOGS;FLUSH ERROR LOGS;FLUSH ENGINE LOGS;FLUSH SLOW LOGS;使用するタイミング:
ログローテーションの後
ログが移動またはアーカイブされたとき
デバッグやコンプライアンスのためにログをリセットするため
5. FLUSH HOSTS
失敗したクライアント接続のホストキャッシュをリセットします。
FLUSH HOSTS;使用するタイミング:
エラーを受け取ったとき:
Host 'xxx' is blocked because of many connection errors
6. FLUSH STATUS
ほとんどのステータス変数をゼロにリセットします(Uptimeのようなグローバルカウンターには影響しません)。
FLUSH STATUS;使用するタイミング:
ベンチマーキングやパフォーマンステストの前。
クリーンなメトリクスを得るためにSHOW STATUSを使用する。
7. FLUSH TABLES WITH READ LOCK
すべてのテーブルをフラッシュしてロックし、他のセッションからの書き込みを防ぎます。
FLUSH TABLES WITH READ LOCK;使用するタイミング:
一貫したスナップショットバックアップのため(例:LVMやファイルコピーツールを使用)。
重要:必ず手動で
UNLOCK TABLES;でロックを解除してください。
8. FLUSH DES_KEY_FILE
古いDES_ENCRYPT()/DES_DECRYPT()で使用されるDESキーファイルを再読み込みします(レガシー)。
FLUSH DES_KEY_FILE;9. FLUSH USER_RESOURCES
ユーザーごとのリソース制限(例:MAX_QUERIES_PER_HOUR)カウンターをリセットします。
FLUSH USER_RESOURCES;使用するタイミング:
リソース制限のあるユーザーの中間リセット。
非推奨/削除されたコマンド
FLUSH QUERY CACHEはMySQL 8.0で削除されました。
FLUSH DES_KEY_FILEはレガシーです。
MySQL 8.0でのRESET PERSISTなどの新しい代替手段を検討してください。
必要な権限
ほとんどのFLUSH操作には以下が必要です:
RELOAD特権
SUPERまたはSYSTEM_VARIABLES_ADMIN(MySQL 8+の敏感な操作用)
例:
GRANT RELOAD ON *.* TO 'admin'@'localhost';結論
このFLUSHコマンドファミリーは、MySQLにおける管理制御に不可欠です。特権、ログ、またはキャッシュ状態を管理する場合でも、FLUSHをどのように、いつ使用するかを理解することで、再起動を必要とせずに最適なサーバーパフォーマンスと信頼性を維持するのに役立ちます。特に本番環境では、適切な特権を持って賢く使用してください。


