MySQLレプリケーションインスタンスでは、次のエラーメッセージが表示されます。
[ERROR] MYSQL_BIN_LOG :: purge_logs Was called Expired with file / db-space-no-connected-cpa / DBMS / dxnc6sla / Arch / not listed in the index .
解決策について教えてください。前もって感謝します
log-bin が有効な場合、MySQLは完了したSQLトランザクションをバイナリログに記録します。
バイナリログは、名前がバイナリログと同じになるが、ファイル拡張子が.index
のテキストファイルで管理されます。
たとえば、log-bin=/mysqllogs/mysql-bin
があり、mysqldを起動したとします。
/mysqllogs
にファイルが配置されます
mysql-bin.000001
mysql-bin.index
インデックスファイルには、すべてのバイナリログの名前が含まれます。
この例では、mysql-bin.000001
が含まれます
時間の経過とともに、バイナリログが蓄積され、/mysqllogs
にこのようなものが表示されます
mysql-bin.000001
mysql-bin.000002
mysql-bin.000003
mysql-bin.000004
mysql-bin.index
mysql-bin.index
にはこれが含まれます
mysql-bin.000001
mysql-bin.000002
mysql-bin.000003
mysql-bin.000004
変数 expire_logs_days (0より大きい場合)と max_binlog_size に基づいて、mysqldは独自のローテーションとバイナリログの期限切れを行います。
次の場合
cd /mysqllogs
rm -f mysql-bin.000001
rm -f mysql-bin.000002
これにより、mysqldのログローテーションメカニズムが無効になります。どうして ?
/mysqllogs
フォルダには
mysql-bin.000003
mysql-bin.000004
mysql-bin.index
ただし、mysql-bin.index
にはこれが含まれます
mysql-bin.000001
mysql-bin.000002
mysql-bin.000003
mysql-bin.000004
mysqldはインデックスファイルをアクティブに使用して、ローテーションまたは期限切れを行う前に、/mysqlvar
にリストされているmysql-bin.index
内のすべてのファイルが存在することを確認します。
したがって、OSにバイナリログを削除させないでください。 mysqldに実行させます。
以前にこれについて書いた
May 23, 2016
: エラー1236-"バイナリログインデックスファイルで最初のログファイル名が見つかりませんでした"Apr 23, 2013
: mysql-binファイルを削除しても安全ですか?Mysqldをシャットダウンし、内容がディスク上の既存のバイナリログと一致するように.index
ファイルを編集して、mysqldを起動します。私はこれを以前に提案しました( Mysql binlogsが存在し、バイナリログが空であることを示します )