web-dev-qa-db-ja.com

mysql-bin.indexにリストされていないバイナリログファイルを削除できますか?

古いMySQLサーバー(バージョン5.045)の1つで問題が発生しました。データベースはバックアップされ、正常に実行されていますが、mysqlフォルダーには2万を超えるバイナリログファイルがありました。

MySQLにログインし、データレプリケーションがすべて正常に機能していることを確認した後、次のコマンドを発行しました...

purge binary logs to 'mysql-bin.024717';

コマンドはエラーなしで完了し、結果のmysql-bin.indexは次のようになります...

./mysql-bin.024717
./mysql-bin.024718
./mysql-bin.024719
./mysql-bin.024720
./mysql-bin.024721
./mysql-bin.024722
./mysql-bin.024723
./mysql-bin.024724

私がmysqlを離れたとき、多くのファイルがなくなっていましたが、今でも1000を超えるバイナリログファイルが残っています。これらはすべてmysql-bin.024717より前のものであり、それらのほとんどには117バイトしか含まれていません。

それらがmysql-bin.indexファイルで参照されなくなったことを考えると、OSレベルでrmを使用してそれらを削除するだけで問題ありませんか、それともクリーンアップするために何か他のことをする必要がありますか?

前もって感謝します

1
ChrisL

purge binary logs before '2016-04-29 08:00:00'を試すこともできます。何らかの理由で一方が機能しないのに、もう一方が機能しない場合があります。

それが失敗した場合は、あなたが言ったようにrmでそれらを削除してください。技術的には正しくありませんが、問題にはならないはずです(PURGEコマンドについて学ぶ前に、これを頻繁に行っていましたが、問題はありませんでした)。

もちろん、将来的にそれらを抑えるために、expire_logs_daysも設定されていることを確認する必要もあります。

私も見たばかりです this 注:

MySQL 5.1.24より前では、.indexファイルにリストされているバイナリログファイルが削除された場合、PURGE BINARY LOGSTOとPURGEBINARY LOGS BEFOREは同じように動作しませんでした(どちらも正しく動作しませんでした)。

なんらかの理由で、5.0ページにアクセスしてその内容を確認することができません。

1
IGGt

(@IGGtへのフォローオン)

「MySQL5.0.60より前は、.indexファイルにリストされているバイナリログファイルが他のユーザーによってシステムから削除された場合、PURGE BINARY LOGSTOとPURGEBINARY LOGS BEFOREは同じように動作しませんでした(どちらも正しく動作しませんでした)。は(Linuxでrmを使用するなど)を意味します。MySQL5.0.60以降、このような場合、ステートメントの両方のバリアントがエラーで失敗します。(バグ#18199、バグ#18453)このようなエラーを処理するには、.indexファイルを編集します(これは単純なテキストファイルです)手動で実行して、実際に存在するバイナリログファイルのみが一覧表示されるようにしてから、失敗したPURGE BINARYLOGSステートメントを再度実行します。」 - http://dev.mysql.com/doc/refman/5.0/en/purge-binary-logs.html

PURGE BINARY LOGSは4.1または5.0で追加されましたが、どちらかは覚えていません。

0
Rick James