expire_logs_days paramを更新してSQLを再起動した後、古いbinlogは削除されますか?


16

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=10mysqlサービスに変更してバウンスする予定です。この変更を行ってからどれくらい経ってから、古いビンのログが明らかになると思いますか。

これは、夜間にスケジュールされたタスクの一部としてのみ実行されますか?または、これはすぐにすべきですか?

回答:


29

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コマンドは、日時スタンプがpredatesであるすべてのbinlogを削除します2012-12-11 00:00:00

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

SET GLOBAL expire_logs_days = 10;

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

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


素晴らしい反応。ありがとうございました。詳細に感謝します。
マイクB

更新してください、タイプミスを修正しました。
RolandoMySQLDBA

1
expire_logs_daysがMySQL 8.0で非推奨になったことに注意してください(@RolandoMySQLDBAが提供するリンクの詳細を参照)。代わりにbinlog_expire_logs_secondsを使用してください。
ジョンリックス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.