返回顶部
首页 > 资讯 > 数据库 >mysql数据库日志binlog保存时效问题如何解决
  • 198
分享到

mysql数据库日志binlog保存时效问题如何解决

mysqlbinlog 2023-03-09 17:03:40 198人浏览 八月长安
摘要

本篇内容介绍了“Mysql数据库日志binlog保存时效问题如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学

本篇内容介绍了“Mysql数据库日志binlog保存时效问题如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

一、设置语法

1、方法一

编辑/etc/my.cnf文件,在[mysqld]节点中增加如下两行

max_binlog_size = 500M
expire_logs_days = 15
  • max_binlog_size:bin log日志每达到设定大小后,会使用新的bin log日志。如mysql-bin.000002达到500M后,创建并使用mysql-bin.000003文件作为日志记录。

  • expire_logs_days:保留指定日期范围内的bin log历史日志,上示例设置的15天内。

2、方法二

-- mysql8.0以下版本查看当前数据库日志binlog保存时效 以天为单位,默认0 永不过期,最多只能设置99天
show variables like 'expire_logs_days';
set global expire_logs_days=60;

-- mysql8.0以上版本通过设置全局参数binlog_expire_logs_seconds修改binlog保存时间 以秒为单位;默认2592000 30天   14400   4小时;86400  1天;259200  3天
show variables like '%binlog_expire_logs_seconds%';

set global binlog_expire_logs_seconds=259200;

二、过期删除策略

总结

通过下面的实验,对于mysql binlog过期删除策略,我们可以做出如下推测。

1. mysql是根据binlog文件的操作系统最近修改时间,来判断binlog是否过期(而不是根据binlog日志中事物发生的时间)。

2. 在触发mysql过期删除时,mysql先检查*bin.index文件,找到目前最老的binlog,然后检查该文件的系统时间,会有如下两种情况:

1) 如果发现该文件未过期,则认为目前没有binlog日志过期,不进行删除,即使此时有其他binlog已过期。

2) 如果发现该文件已经过期,则会找下一个binlog,判断是否过期,同样存在两种情况(过期或者未过期),如此往复,直到找到第一个过期的binlog 即停止继续查找,并删除该binlog及所有该binlog之前的所有日志

  • 1. 查看数据库binlog列表

1)
mysql> show binary logs;
+-----------------+------------+
| Log_name        | File_size  |
+-----------------+------------+
| 3306-bin.000006 | 1074742033 |
| 3306-bin.000007 | 1074580678 |
| 3306-bin.000008 | 1074739627 |
| 3306-bin.000009 |  250635228 |
| 3306-bin.000010 |        120 |
+-----------------+------------+
5 rows in set (0.00 sec)
 
2) 
ls -lrt
total 7402312
-rw-r--r-- 1 root  root        1747 Mar 25 10:06 test
-rw-rw---- 1 mysql mysql 1074742032 May  4 16:48 3306-bin.000006
-rw-rw---- 1 mysql mysql 1074580678 May  4 16:54 3306-bin.000007
-rw-rw---- 1 mysql mysql 1074739627 May  4 17:00 3306-bin.000008
-rw-rw---- 1 mysql mysql        168 May  4 17:00 3306-bin.index
-rw-rw---- 1 mysql mysql  250635182 May  4 17:02 3306-bin.000009
-rw-rw---- 1 mysql mysql   10448198 May 27 05:04 slow3306.log
-rw-r----- 1 mysql root     1096759 May 27 05:06 error3306.log
-rw-rw---- 1 mysql mysql 4093675902 May 27 05:06 general3306.log
##我们看到mysql目前保留着4个binlog日志,序号从6到9,当前正在使用的为序号为9的日志
  • 2. 设定binlog过期时间

set global expire_logs_days=7;
##在第1步中我们可以看到3306-bin.000006,3306-bin.000007,3306-bin.000008 三个日志都是属于过期的(因为3306-bin.000009是当前正在使用的日志,所以不是过期日志)
  • 3. 修改3306-bin.000006文件系统时间

  • 使用 vi 查看3306-bin.000006文件,不做任何修改保存退出。 

  • 4. 修改后查看binlog文件时间

ls -lrt
total 7402312
-rw-r--r-- 1 root  root        1747 Mar 25 10:06 test
-rw-rw---- 1 mysql mysql 1074580678 May  4 16:54 3306-bin.000007
-rw-rw---- 1 mysql mysql 1074739627 May  4 17:00 3306-bin.000008
-rw-rw---- 1 mysql mysql        168 May  4 17:00 3306-bin.index
-rw-rw---- 1 mysql mysql  250635182 May  4 17:02 3306-bin.000009
-rw-rw---- 1 mysql mysql   10448198 May 27 05:04 slow3306.log
-rw-r----- 1 mysql root     1096759 May 27 05:06 error3306.log
-rw-rw---- 1 mysql mysql 4093675902 May 27 05:06 general3306.log
-rw-rw---- 1 mysql mysql 1074742033 May 27 10:13 3306-bin.000006
##3306-bin.000006 日志文件已经系统日志已经变成当天时间
  • 5. flush logs;

##我们知道flush logs;会触发过期日志清除操作
  • 6. 查看现有binlog

1)  mysql> show binary logs;
+-----------------+------------+
| Log_name        | File_size  |
+-----------------+------------+
| 3306-bin.000006 | 1074742033 |
| 3306-bin.000007 | 1074580678 |
| 3306-bin.000008 | 1074739627 |
| 3306-bin.000009 |  250635228 |
| 3306-bin.000010 |        120 |
+-----------------+------------+
5 rows in set (0.00 sec)
 
2)  ls -lrt
total 7402316
-rw-r--r-- 1 root  root        1747 Mar 25 10:06 test
-rw-rw---- 1 mysql mysql 1074580678 May  4 16:54 3306-bin.000007
-rw-rw---- 1 mysql mysql 1074739627 May  4 17:00 3306-bin.000008
-rw-r----- 1 mysql root     1096759 May 27 05:06 error3306.log
-rw-rw---- 1 mysql mysql 1074742033 May 27 10:13 3306-bin.000006
-rw-rw---- 1 mysql mysql   10448370 May 27 10:14 slow3306.log
-rw-rw---- 1 mysql mysql 4093676334 May 27 10:14 general3306.log
-rw-rw---- 1 mysql mysql  250635228 May 27 10:14 3306-bin.000009
-rw-rw---- 1 mysql mysql        120 May 27 10:14 3306-bin.000010
-rw-rw---- 1 mysql mysql        210 May 27 10:14 3306-bin.index
##我们发现3306-bin.000006,3306-bin.000007,3306-bin.000008三个日志并没有被删除(此时3306-bin.000006文件系统时间为当天,3306-bin.000007和3306-bin.000008文件时间都是4号)
  • 7. purge 最早的3306-bin.000006日志

1)  mysql> purge master logs to '3306-bin.000007';

Query OK, 0 rows affected (0.31 sec)
 
2)  mysql> show binary logs;
+-----------------+------------+
| Log_name        | File_size  |
+-----------------+------------+
| 3306-bin.000007 | 1074580678 |
| 3306-bin.000008 | 1074739627 |
| 3306-bin.000009 |  250635228 |
| 3306-bin.000010 |        120 |
+-----------------+------------+
4 rows in set (0.01 sec)
 
3)  ls -lrt
total 6352756
-rw-r--r-- 1 root  root        1747 Mar 25 10:06 test
-rw-rw---- 1 mysql mysql 1074580678 May  4 16:54 3306-bin.000007
-rw-rw---- 1 mysql mysql 1074739627 May  4 17:00 3306-bin.000008
-rw-r----- 1 mysql root     1096759 May 27 05:06 error3306.log
-rw-rw---- 1 mysql mysql   10448370 May 27 10:14 slow3306.log
-rw-rw---- 1 mysql mysql  250635228 May 27 10:14 3306-bin.000009
-rw-rw---- 1 mysql mysql        120 May 27 10:14 3306-bin.000010
-rw-rw---- 1 mysql mysql        168 May 27 10:17 3306-bin.index
-rw-rw---- 1 mysql mysql 4093676603 May 27 10:17 general3306.log
 
##3306-bin.000006日志已经被删除
  • 8. 再次flush logs;

1) flush logs;

mysql> flush logs;
Query OK, 0 rows affected (0.30 sec) 

2)查看 binlog

mysql> show binary logs;
+-----------------+-----------+
| Log_name        | File_size |
+-----------------+-----------+
| 3306-bin.000009 | 250635228 |
| 3306-bin.000010 |       166 |
| 3306-bin.000011 |       120 |
+-----------------+-----------+
3 rows in set (0.00 sec)
 
ls -lrt
total 4253804
-rw-r--r-- 1 root  root        1747 Mar 25 10:06 test
-rw-r----- 1 mysql root     1096759 May 27 05:06 error3306.log
-rw-rw---- 1 mysql mysql  250635228 May 27 10:14 3306-bin.000009
-rw-rw---- 1 mysql mysql   10448542 May 27 10:17 slow3306.log
-rw-rw---- 1 mysql mysql 4093676814 May 27 10:17 general3306.log
-rw-rw---- 1 mysql mysql        166 May 27 10:17 3306-bin.000010
-rw-rw---- 1 mysql mysql        120 May 27 10:17 3306-bin.000011
-rw-rw---- 1 mysql mysql        126 May 27 10:17 3306-bin.index
 
##此时我们发现3306-bin.000007,3306-bin.000008日志已经被自动删除
  • 9.获取binlog文件列表

show binary logs;
  • 查看指定binlog文件的内容

show binlog events in 'mysql-bin.000002';
  • 只查看第一个binlog文件的内容

show binlog events;

“mysql数据库日志binlog保存时效问题如何解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

您可能感兴趣的文档:

--结束END--

本文标题: mysql数据库日志binlog保存时效问题如何解决

本文链接: https://lsjlt.com/news/199062.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • mysql数据库日志binlog保存时效问题如何解决
    本篇内容介绍了“mysql数据库日志binlog保存时效问题如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学...
    99+
    2023-03-09
    mysql binlog
  • mysql数据库日志binlog保存时效问题(expire_logs_days)
    目录一、设置语法1、方法一2、方法二二、过期删除策略最后一、设置语法 1、方法一 编辑/etc/my.cnf文件,在[mysqld]节点中增加如下两行 max_binlog_size = 500M expire_logs...
    99+
    2023-03-09
    mysql数据库 mysql日志binlog保存 mysql expire_logs_days
  • docker开启mysql的binlog日志解决数据卷问题
    目录前言1、通过数据卷的方式开启一个mysql镜像2、连接mysql并进行测试3、开启bin_log4、重启mysql镜像5、创建一个数据库并在里面创建一个表加一条数据结语前言 在开...
    99+
    2024-04-02
  • 如何使用docker开启mysql的binlog日志解决数据卷问题
    这篇文章主要为大家展示了“如何使用docker开启mysql的binlog日志解决数据卷问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用docker开启mysql的binlog日志解决...
    99+
    2023-06-29
  • 解决rocketmq-client日志保存路径的问题
    rocketmq-client日志保存路径 由于使用rocketmq-client会生成一个rocketmq_client.log日志文件,一般默认存于系统盘内,且持续增长速度较快,...
    99+
    2024-04-02
  • Mysql如何通过binlog日志恢复数据详解
    目录前言方法如下总结前言 MySQL的binlog日志是MySQL日志中非常重要的一种日志,记录了数据库所有的DML操作。通过binlog日志我们可以进行数据库的读写分离、数据增量备...
    99+
    2024-04-02
  • 如何在Mysql数据库中使用命令清理binlog日志
    如何在Mysql数据库中使用命令清理binlog日志?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1、查看binlog日志my...
    99+
    2024-04-02
  • 在 Golang 中保存到 MongoDB 时如何解决空数据值问题?
    在Golang中,保存数据到MongoDB时,经常会遇到空数据值的问题。当某个字段的值为空时,MongoDB默认会将其存储为null。然而,在实际应用中,我们可能更希望将其存储为一个特...
    99+
    2024-02-09
  • 利用脚本应该如何备份Mysql数据库和binlog日志
    下面一起来了解下利用脚本应该如何备份Mysql数据库和binlog日志,相信大家看完肯定会受益匪浅,文字在精不在多,希望利用脚本应该如何备份Mysql数据库和binlog日志这篇短内容是你想要的。闲话少说,...
    99+
    2024-04-02
  • 如何利用Log Parser将IIS日志保存到数据库
    这篇文章主要讲解了“如何利用Log Parser将IIS日志保存到数据库”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何利用Log Parser将IIS日志保存到数据库”吧!一个小时把上一...
    99+
    2023-06-19
  • SQLServer数据库日志已满如何解决
    本篇文章给大家分享的是有关SQLServer数据库日志已满如何解决,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。  SQLServer数据库日...
    99+
    2024-04-02
  • 如何解决Mysql收缩事务日志的问题
    这篇文章给大家分享的是有关如何解决Mysql收缩事务日志的问题的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。一.MS SQL SERVER 2005--1.清空日志  ...
    99+
    2024-04-02
  • 如何通过数据库日志发现潜在的数据库问题
    数据库日志是记录数据库活动的信息集合。这些信息可以帮助数据库管理员和开发人员识别潜在的数据库问题,例如性能下降、死锁、错误和其他问题。 1. 性能问题 数据库性能问题可能是由多种因素造成的,例如硬件瓶颈、数据库配置不当、查询不佳或索引不...
    99+
    2024-02-04
    数据库日志 性能问题 死锁 错误 性能调整
  • 数据库日志的艺术:洞悉数据更改并解决问题
    数据库日志记录了数据库中的所有更改,为数据库管理员和开发人员提供了宝贵的洞察力,用于识别数据更改、解决问题和确保数据完整性。理解数据库日志的艺术对于有效管理和维护数据库至关重要。 日志类型的选择 选择合适的日志类型对于捕获所需的数据至关重...
    99+
    2024-04-02
  • mysql数据库日志如何查看
    在MySQL数据库中,主要有两种日志:错误日志和查询日志。以下是如何查看这两种日志的方法: 错误日志:MySQL的错误日志记录了数...
    99+
    2024-04-09
    mysql
  • 如何解决数据写入mysql数据库的问号问题
    这篇文章将为大家详细讲解有关如何解决数据写入mysql数据库的问号问题,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。解决数据写入mysql的问号问题&nbs...
    99+
    2024-04-02
  • MySQL 数据库如何解决高并发问题
    前言 我们都知道初创公司一开始都是以单体应用为首要架构,一般都是单体单库的形式。但是版本以及版本的迭代,数据库需要承受更多的高并发已经成了 架构设计 需要考虑的点。 那么解决问题,就得说到方案。但是方案有很多,我们...
    99+
    2022-05-20
    MySQL 高并发 MySQL 高并发解决方案
  • 揭秘数据库日志的秘密,轻松诊断和解决数据库问题
    数据库日志是记录数据库系统运行状态和操作历史的文件,包含了大量有价值的信息,是数据库管理员诊断和解决数据库问题的重要依据。数据库日志通常包含以下类型的内容: 错误消息:记录数据库系统在运行过程中遇到的错误,包括错误代码、错误描述、发生...
    99+
    2024-02-04
    数据库 日志 分析 诊断 解决故障
  • Mysql如何解决数据库N+1查询问题
    这篇文章主要介绍Mysql如何解决数据库N+1查询问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!简介在orm框架中,比如hibernate和mybatis都可以设置关联对象,比如...
    99+
    2024-04-02
  • 解决Oracle数据库归档日志占满磁盘空间问题
    1、常用命令 SQL> show parameter log_archive_dest; SQL> archive log list; SQL> select * from ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作