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官方导出工具mysqlpump的使用
May 21 MySQL
MySQL触发器的使用
May 24 MySQL
全面盘点MySQL中的那些重要日志文件
Nov 27 MySQL
Mysql Innodb存储引擎之索引与算法
Feb 15 MySQL
MySQL插入数据与查询数据
Mar 25 MySQL
CentOS MySql8 远程连接实战
Apr 19 MySQL
详解Mysq MVCC多版本的并发控制
Apr 29 MySQL
MYSQL中文乱码问题的解决方案
Jun 14 MySQL
MySQL解决Navicat设置默认字符串时的报错问题
Jun 16 MySQL
MySQL池化框架学习接池自定义
Jul 23 MySQL
mysql数据库如何转移到oracle
Dec 24 MySQL
MySQL数据管理操作示例讲解
Dec 24 MySQL
MySQL修炼之联结与集合浅析
MySQL分库分表详情
MySQL空间数据存储及函数
Sep 25 #MySQL
MySQL基础快速入门知识总结(附思维导图)
MySQL连接控制插件介绍
Sep 25 #MySQL
Mysql案例刨析事务隔离级别
Sep 25 #MySQL
MySQL定时备份数据库(全库备份)的实现
Sep 25 #MySQL
You might like
PHP生成网页快照 不用COM不用扩展.
2010/02/11 PHP
linux平台编译安装PHP7并安装Redis扩展与Swoole扩展实例教程
2016/09/30 PHP
10款新鲜出炉的 jQuery 插件(Ajax 插件,有幻灯片、图片画廊、菜单等)
2011/06/08 Javascript
JavaScript获取当前网页标题(title)的方法
2015/04/03 Javascript
headjs实现网站并行加载但顺序执行JS
2016/11/29 Javascript
jQuery得到多个值只能用取Class ,不能用取ID的方法
2016/12/04 Javascript
JavaScript实现的可变动态数字键盘控件方式实例代码
2017/07/15 Javascript
2种简单的js倒计时方式
2017/10/20 Javascript
vue项目中导入swiper插件的方法
2018/01/30 Javascript
浅谈实现vue2.0响应式的基本思路
2018/02/13 Javascript
Vue路由切换时的左滑和右滑效果示例
2018/05/29 Javascript
Node.js 使用axios读写influxDB的方法示例
2018/10/26 Javascript
vue的keep-alive中使用EventBus的方法
2019/04/23 Javascript
解决使用layui对select append元素无效或者未及时更新的问题
2019/09/18 Javascript
python进阶教程之循环相关函数range、enumerate、zip
2014/08/30 Python
介绍Python的@property装饰器的用法
2015/04/28 Python
spyder常用快捷键(分享)
2017/07/19 Python
python 接口_从协议到抽象基类详解
2017/08/24 Python
Python实现的文本对比报告生成工具示例
2018/05/22 Python
破解安装Pycharm的方法
2018/10/19 Python
Python实现粒子群算法的示例
2021/02/14 Python
咖啡为什么会有酸味?你喝到的咖啡為什麼是酸的?
2021/03/17 冲泡冲煮
css3实现动画的三种方式
2020/08/24 HTML / CSS
韩国爱茉莉太平洋化妆品美国站:Amore Pacific US
2016/10/28 全球购物
添柏岚英国官方网站:Timberland英国
2019/11/28 全球购物
大学新生军训个人的自我评价
2013/10/03 职场文书
《北京的春节》教学反思
2014/04/07 职场文书
《陈涉世家》教学反思
2014/04/12 职场文书
无偿献血倡议书
2014/04/14 职场文书
竞选班长的演讲稿
2014/04/24 职场文书
奥巴马就职演讲稿
2014/05/15 职场文书
商务英语专业毕业生求职信
2014/07/06 职场文书
自查自纠整改报告
2014/11/06 职场文书
结婚保证书(三从四德)
2015/02/26 职场文书
草系十大最强宝可梦,纸片人上榜,榜首大家最熟悉
2022/03/18 日漫
Python中使用Opencv开发停车位计数器功能
2022/04/04 Python