当前位置:   article > 正文

二进制日志的保存时间参数binlog_expire_logs_seconds和expire_logs_days的设置

二进制日志的保存时间

在MySQL 8.0中,默认的二进制日志的保存时间参数binlog_expire_logs_seconds和expire_logs_days的设置如下

mysql> show variables like '%expire_log%';
+----------------------------+---------+
| Variable_name              | Value   |
+----------------------------+---------+
| binlog_expire_logs_seconds | 2592000 |
| expire_logs_days           | 0       |
+----------------------------+---------+
2 rows in set (0.01 sec)

mysql> select @@version;
+-----------+
| @@version |
+-----------+
| 8.0.26    |
+-----------+
1 row in set (0.00 sec)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

2592000是30天。binlog_expire_logs_seconds是8.0里面新增的,优先级比expire_logs_days高,5.7里的默认设置如下:

Server version: 5.7.33-0ubuntu0.16.04.1-log (Ubuntu)

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show variables like '%expire%';
+--------------------------------+-------+
| Variable_name                  | Value |
+--------------------------------+-------+
| disconnect_on_expired_password | ON    |
| expire_logs_days               | 0     |
+--------------------------------+-------+
2 rows in set (0.02 sec)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

在5.7里面需要设置一个过期时间,不然会一直涨下去,例如可以使用下面的命令进行设置:

mysql> set global expire_logs_days=30;
Query OK, 0 rows affected (0.00 sec)
  • 1
  • 2

这样设置后,过期的binlog并不会马上被删除,在下面三种情况下会被删除:

  • MySQL启动
  • 发出flush logs的命令
  • binlog达到最大值(通常是1G),切换时。

文章下方是我的微信,欢迎加我。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小舞很执着/article/detail/947382

推荐阅读
相关标签