web-dev-qa-db-ja.com

MySql-サーバーを再起動せずにexpire_logs_daysを変更する

MySql 5.5を使用しています。変更することは可能ですかexpire_logs_daysそして、サーバーを再起動しなくても変更が有効になりますか?

8
Ran

ありがとう@dezso

変更方法は次のとおりです:SET GLOBAL expire_logs_days = 4;

10
Ran

MySQL 5.6では、expire_logs_daysが最初に設定されているものを表示する必要があります。次に、マスターがこれらのログをx日以上保持する必要がないことを確認します。注意してください。バイナリログの日数が少ないと、大きなリスクになる可能性があります。

グローバルに設定:

 mysql> 'expire_logs_days'; 
 + ------------------ + ------- + [.____のような変数を表示します。] |変数名|値| 
 + ------------------ + ------- + 
 | expire_logs_days | 5 | 
 + ------------------ + ------- + 
 1行のセット(0.00秒)
 mysql> set global expire_logs_days = 1; 
クエリは正常、0行が影響を受けた(0.62秒)
 mysql> 'expire_logs_days'; 
 + ------------------ + ------- + [.____のような変数を表示します。] |変数名|値| 
 + ------------------ + ------- + 
 | expire_logs_days | 1 | 
 + ------------------ + ------- + 
 1行のセット(0.00秒)

次に、この設定をそのままにするか、サービスの再起動後も維持する場合は、my.cnfファイルを更新することを忘れないでください。

 $ Sudo vim /etc/my.cnf
 expire_logs_days = 1 

次に、現在のログをフラッシュし、バイナリログステートメントを使用して、1日以上前のすべてのログで有効にします。

 mysql>バイナリログをフラッシュする; 
3
Tony-Caffe

Mysql(コミュニティ)バージョン8.0.17-1.sles12-OpenSUSE tumbleweed 2019.10.02

mysql> SET GLOBAL expire_logs_days = 4;
ERROR 3683 (HY000): The option expire_logs_days and binlog_expire_logs_seconds
cannot be used together. Please use binlog_expire_logs_seconds to set the expire
time (expire_logs_days is deprecated)

..

1
Dutch Glory