Mysql binlog日志文件过大的解决


Posted in MySQL onOctober 05, 2021

磁盘突然报错使用率过大,排查原因,发现mysql的binlog文件占用过大

命令

ls -l -h

Mysql binlog日志文件过大的解决

mysql-binlog是MySQL数据库的二进制日志,用于记录用户对数据库操作的SQL语句((除了数据查询语句)信息。可以使用mysqlbin命令查看二进制日志的内容。

可以通过设置my.cof配置文件的方式限制binlog文件的输出。

1、相关binlog配置

vim /etc/my.cof

[mysqld]
expire_logs_days = 3
#设置binlog清理时间

max_binlog_size = 100m
#binlog每个日志文件大小

binlog_cache_size = 4m
#binlog缓存大小

max_binlog_cache_size = 512m
#最大binlog缓存大小

重启mysql,看到只保留了前三天的日志

Mysql binlog日志文件过大的解决

2、binlog相关高级设置

2.1 改变binlog模式

binlog的模式也有三种:STATEMENT、ROW、MIXED 。下面对这三种格式分别加以说明:

STATMENT模式

基于SQL语句的复制(statement-based replication, SBR),每一条会修改数据的sql语句会记录到binlog中。

优点:不需要记录每一条SQL语句与每行的数据变化,这样子binlog的日志也会比较少,减少了磁盘IO,提高性能。

缺点:在某些情况下会导致master-slave中的数据不一致(如sleep()函数, last_insert_id(),以及user-defined functions(udf)等会出现问题)

ROW模式

不记录每一条SQL语句的上下文信息,仅需记录哪条数据被修改了,修改成了什么样子了。

优点:不会出现某些特定情况下的存储过程、或function、或trigger的调用和触发无法被正确复制的问题。

缺点:会产生大量的日志,尤其是alter table的时候会让日志暴涨。

MIXED模式

混合模式复制(mixed-based replication, MBR):以上两种模式的混合使用,一般的复制使用STATEMENT模式保存binlog,对于STATEMENT模式无法复制的操作使用ROW模式保存binlog,MySQL会根据执行的SQL语句选择日志保存方式。
修改配置文件

[mysqld]
binlog_format = mixed
#设置日志格式

2.2 相关SQL操作binlog

show binary logs;                            
# 查看binlog现有详情

show variables like '%log%';            
# 查看log变量的相关配置

set global expire_logs_days = 3;    
# 设置binlog的保存时间

reset master;                                 
# 重置所有的binlog,相当于删除所有的binlog,这个操作对主从集群影响非常大,因为主从赋值是基于binlog日志来实现的

PURGE {MASTER | BINARY} LOGS TO 'log_name'
PURGE {MASTER | BINARY} LOGS BEFORE 'date'
# 删除指定的日志或日期之前的日志索引中的所有二进制日志。MASTER和BINARY是同义词

PURGE MASTER LOGS TO 'binlog.000013'; 
#清除binlog.000013日志

PURGE MASTER LOGS BEFORE '2020-01-08 10:00:00';  
#清除2020-01-08 10:00:00前binlog日志

PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY); 
# 清除3天前binlog日志BEFORE,变量的date自变量可以为'YYYY-MM-DD hh:mm:ss'格式。

到此这篇关于Mysql binlog日志文件过大的解决的文章就介绍到这了,更多相关Mysql binlog日志过大内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
MySQL命令行操作时的编码问题详解
Apr 14 MySQL
详解mysql三值逻辑与NULL
May 19 MySQL
mysql中between的边界,范围说明
Jun 08 MySQL
MySQL REVOKE实现删除用户权限
Jun 18 MySQL
MySQL系列之五 视图、存储函数、存储过程、触发器
Jul 02 MySQL
MySql子查询IN的执行和优化的实现
Aug 02 MySQL
详解MySQL中timestamp和datetime时区问题导致做DTS遇到的坑
Dec 06 MySQL
面试提问mysql一张表到底能存多少数据
Mar 13 MySQL
数据分析数据库ClickHouse在大数据领域应用实践
Apr 03 MySQL
MySQL创建管理子分区
Apr 13 MySQL
sql查询语句之平均分、最高最低分及排序语句
May 30 MySQL
MySQL存储过程及语法详解
Aug 05 MySQL
MySQL修炼之联结与集合浅析
MySQL分库分表详情
MySQL空间数据存储及函数
Sep 25 #MySQL
MySQL基础快速入门知识总结(附思维导图)
MySQL连接控制插件介绍
Sep 25 #MySQL
Mysql案例刨析事务隔离级别
Sep 25 #MySQL
MySQL定时备份数据库(全库备份)的实现
Sep 25 #MySQL
You might like
php获取url参数方法总结
2014/11/13 PHP
php获取当月最后一天函数分享
2015/02/02 PHP
php 计算两个时间相差的天数、小时数、分钟数、秒数详解及实例代码
2016/11/09 PHP
php无限极分类实现方法分析
2019/07/04 PHP
用jquery ajax获取网站Alexa排名的代码
2009/12/12 Javascript
jquery ajax 同步异步的执行示例代码
2010/06/23 Javascript
jquery入门必备的基本认识及实例(整理)
2013/06/24 Javascript
jquery $.each()使用探讨
2013/09/23 Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
2014/06/05 Javascript
原生JavaScript生成GUID的实现示例
2014/09/05 Javascript
JavaScript代码应该放在HTML代码哪个位置比较好?
2014/10/16 Javascript
JavaScript使用DeviceOne开发实战(二) 生成调试安装包
2015/12/01 Javascript
Extjs gridpanel 中的checkbox(复选框)根据某行的条件不能选中的解决方法
2017/02/17 Javascript
JavaScript中双符号的运算详解
2017/03/12 Javascript
vue.js中v-on:textInput无法执行事件问题的解决过程
2017/07/12 Javascript
Angular中使用MathJax遇到的一些问题
2017/12/15 Javascript
Vue 自定义标签的src属性不能使用相对路径的解决
2019/09/17 Javascript
vuecli3.x中轻松4步带你使用tinymce的步骤
2020/06/25 Javascript
[05:20]2018DOTA2亚洲邀请赛主赛事第三日战况回顾 LGD率先挺进胜者组决赛
2018/04/06 DOTA
[00:12]DAC2018 no[o]ne亮相SOLO赛 他是否如他的id一样无人可挡?
2018/04/06 DOTA
利用python为运维人员写一个监控脚本
2018/03/25 Python
python3使用SMTP发送简单文本邮件
2018/06/19 Python
Python使用Shelve保存对象方法总结
2019/01/28 Python
Python基于datetime或time模块分别获取当前时间戳的方法实例
2019/02/19 Python
Priority Pass机场贵宾室会籍计划:全球超过1200间机场贵宾室
2018/08/26 全球购物
全球最大的生存食品、水和装备专用在线市场:BePrepared.com
2020/01/02 全球购物
20岁生日感言
2014/01/13 职场文书
教师辞职报告范文
2014/01/20 职场文书
教师自我反思材料
2014/02/14 职场文书
水利公司纪检监察自我鉴定
2014/02/25 职场文书
优秀家长自荐材料
2014/08/26 职场文书
挂职锻炼个人总结
2015/03/05 职场文书
大学团日活动总结书
2015/05/11 职场文书
2016年会领导致辞稿
2015/07/29 职场文书
Python排序算法之插入排序及其优化方案详解
2021/06/11 Python
JS前端轻量fabric.js系列物体基类
2022/08/05 Javascript