web-dev-qa-db-ja.com

mysqlmax_binlog_sizeが機能していません

奇妙な問題があります。私は現在mysqlを使用しており、100Mのmax_binlog_sizeを定義しています。しかし、私は毎日何百ものファイルを作成しており、各ファイルのファイル数はそれぞれ2MBまたは3MB以下であり、場合によってはそれ以下です。

なぜこれなのかわからないので、ファイルはそれぞれ約1億になるはずですか?

誰かがそれについて洞察を得ることができますか?.

1
roger moore

バイナリログが max_binlog_size で設定された制限に達しない場合、2つの主な理由があります。

  • mysqldは、現在開いているbinlogを閉じ、新しいbinlogを開きます
    • 実行中service mysql restart
    • service mysql topの後にservice mysql startを実行します
    • mysqldのクラッシュが深刻ではなかった場合、mysqldがクラッシュし、mysqld_safeが再起動します
  • FLUSH LOGS を実行すると、次のようになります
    • エラーログを閉じて再度開く
    • 一般ログを閉じて再度開きます
    • 遅いログを閉じて再度開く
    • エンジンログを閉じて再度開く
    • 現在開いているバイナリログを閉じて、新しいバイナリログを開きます

次のように書かれています MySQL Documentation under FLUSH LOGS

Log_typeオプションがない場合、FLUSHLOGSはすべてのログファイルを閉じて再度開きます。 バイナリログが有効になっている場合、バイナリログファイルのシーケンス番号は、前のファイルに比べて1つ増えます

提案

  • エラーログを調べて、mysqldがクラッシュして再起動するかどうかを確認します。タイムスタンプは、閉じられたbinlogと一致する必要があります。エラーログには、クラッシュの理由も表示されるか、少なくともトラブルシューティングを試みるための痕跡が残ります。
  • コードまたはcronジョブが実行されている場合 FLUSH LOGS 、次のいずれかを実行します:
    • FLUSH ENGINE LOGS;に置き換えます
    • FLUSH LOGSの使用を完全に停止します
    • それと一緒に暮らす。 2Mまたは3Mのバイナリログがあることはそれほど悪いことではありません
1
RolandoMySQLDBA