web-dev-qa-db-ja.com

expire_logs_daysパラメータを更新してsqlを再起動した後、古いバイナリログが削除されるのはどのくらい後ですか?

MySQL 5.1.x | InnoDB |ウィンドウズ

Mysqlデータディレクトリがbinログでいっぱいになり始めています。

現在、Windows mysqlサーバーで次の設定を構成しています。

[mysqld]
log-bin
server-id=1
binlog-do-db=foodb1
binlog-do-db=foodb2
expire_logs_days=25

Expire_logs_days設定をexpire_logs_days=10に変更して、mysqlサービスをバウンスすることを計画しています。この変更を行ってからすぐに、古いビンログが明らかになることが期待できますか。

これは、毎晩スケジュールされたタスクの一部としてのみ行われますか?それともこれは即時である必要がありますか?

16
Mike B

Mysqlの起動時にすぐに処理されます。

Mysqlの再起動を待つ必要はありません。

最初に、expire_logs_daysを/etc/my.cnfで10に設定します

[mysqld]
log-bin
server-id=1
binlog-do-db=foodb1
binlog-do-db=foodb2
expire_logs_days=10

次に、mysqlにログインしてこれを実行します。

PURGE BINARY LOGS BEFORE (date(now()) + interval 0 second - interval 10 day);

クエリの日付と時刻に注意してください

mysql> select date(now()) + interval 0 second - interval 10 day;
+---------------------------------------------------+
| date(now()) + interval 0 second - interval 10 day |
+---------------------------------------------------+
| 2012-12-11 00:00:00                               |
+---------------------------------------------------+
1 row in set (0.00 sec)

mysql>

したがって、 PURGE BINARY LOGS コマンドは、日付スタンプが2012-12-11 00:00:00より前の日付であるすべてのバイナリログを削除します。

最後に、このコマンドを実行します

SET GLOBAL expire_logs_days = 10;

それでおしまい。 expire_logs_days のインストールに再起動は必要ありません。

レプリケーションパラメータについては、はい再起動が必要です。

29
RolandoMySQLDBA