web-dev-qa-db-ja.com

ローテーションされたMySQLバイナリログを削除しても安全ですか?

バイナリロギングがアクティブなMySQLサーバーがあります。 1日に1回、ログファイルが「ローテーション」されます。つまり、MySQLはそのファイルへの書き込みを停止し、新しいログファイルを作成するようです。たとえば、私は現在/ var/lib/mysqlにこれらのファイルを持っています

-rw-rw---- 1 mysql mysql 10485760 Jun  7 09:26 ibdata1
-rw-rw---- 1 mysql mysql  5242880 Jun  7 09:26 ib_logfile0
-rw-rw---- 1 mysql mysql  5242880 Jun  2 15:20 ib_logfile1
-rw-rw---- 1 mysql mysql  1916844 Jun  6 09:20 mybinlog.000004
-rw-rw---- 1 mysql mysql 61112500 Jun  7 09:26 mybinlog.000005
-rw-rw---- 1 mysql mysql 15609789 Jun  7 13:57 mybinlog.000006
-rw-rw---- 1 mysql mysql       54 Jun  7 09:26 mybinlog.index

そしてmybinlog.000006は成長しています。

Mybinlog.000004とmybinlog.000005を取得し、それらを圧縮して別のサーバーに転送することはできますか、それとも前に何か他のことをする必要がありますか?

Mybinlog.indexにはどのような情報が保存されていますか?最新のバイナリログに関する情報のみですか?

PDATE: mybinlog.indexファイルを更新するPURGEBINARYLOGSを使用してログを削除できることを理解しています。ただし、ログを削除する前に、ログを別のコンピューターに転送する必要があります(バックアップが別のマシンで有効かどうかをテストします)。転送サイズを減らすために、ファイルをbzip2で圧縮したいと思います。ログファイルが「存在しない」場合、PURGE BINARY LOGSは何をしますか?

17
Milan Babuškov

私はついにMySQLのウェブサイトで答えを見つけました。誰かがこの情報を必要とする場合:

MySQL 5.0.60より前は、.indexファイルにリストされているバイナリログファイルが他の方法でシステムから削除された場合、PURGE BINARY LOGSTOとPURGEBINARY LOGS BEFOREは同じように動作しませんでした(どちらも正しく動作しませんでした)。 (Linuxでrmを使用するなど)。 MySQL 5.0.60以降、このような場合、ステートメントの両方のバリアントがエラーで失敗します。 (Bug#18199、Bug#18453)このようなエラーを処理するには、.indexファイル(単純なテキストファイル)を手動で編集して、実際に存在するバイナリログファイルのみがリストされるようにしてから、PURGE BINARYLOGSを再度実行します。失敗したステートメント。

これは、.indexファイルを手動で編集する必要があることを意味し、すべてが正常になります。興味深いのは、.indexファイルが通常のテキストファイルであるということです。今まで気づかなかった。

6
Milan Babuškov

古いバイナリログを削除できます。それらを直接削除する代わりに、MySQLステートメントPURGE BINARY LOGSを使用する方が安全です。これにより、mybinlog.indexファイルも更新されます。このファイルには、バイナリログに使用されたファイル名が保存されます。を参照してください。

http://dev.mysql.com/doc/refman/5.0/en/purge-binary-logs.html

さらに、古いバイナリログを自動的に削除するようにMySQL-Serverを構成できます。サーバー構成の変数max_binlog_sizeおよびexpire_logs_daysを適切な値に設定します。

ibdataファイルとib_logfileファイルは、バイナリロギングとは何の関係もありません。これらは、innodbストレージエンジンによって使用されます。それらが成長していないように見えるという事実と誤解しないでください。サーバーにinnodb-tablesがある場合、これらのファイルは重要であり、それらを削除するとデータが失われる可能性があります。 InnoDBの詳細については、ドキュメントをご覧ください。

http://dev.mysql.com/doc/refman/5.0/en/innodb-configuration.html

24
titanoboa
mysql> PURGE BINARY LOGS BEFORE NOW() - INTERVAL 3 DAY; 

3日前にすべてのbinファイルを削除してください!

または

PURGE MASTER LOGS BEFORE '2010-10-08 00:00:00';
5
zloctb