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 msi版本下载安装图文详细教程
May 21 MySQL
MySQL 常见存储引擎的优劣
Jun 02 MySQL
你知道哪几种MYSQL的连接查询
Jun 03 MySQL
MySQL系列之八 MySQL服务器变量
Jul 02 MySQL
mysq启动失败问题及场景分析
Jul 15 MySQL
MySQL索引是啥?不懂就问
Jul 21 MySQL
MySQL中utf8mb4排序规则示例
Aug 02 MySQL
Mysql数据库中datetime、bigint、timestamp来表示时间选择,谁来存储时间效率最高
Aug 23 MySQL
SQL实战演练之网上商城数据库商品类别数据操作
Oct 24 MySQL
Linux7.6二进制安装Mysql8.0.27详细操作步骤
Nov 27 MySQL
一条慢SQL语句引发的改造之路
Mar 16 MySQL
手把手带你彻底卸载MySQL数据库
Jun 14 MySQL
MySQL修炼之联结与集合浅析
MySQL分库分表详情
MySQL空间数据存储及函数
Sep 25 #MySQL
MySQL基础快速入门知识总结(附思维导图)
MySQL连接控制插件介绍
Sep 25 #MySQL
Mysql案例刨析事务隔离级别
Sep 25 #MySQL
MySQL定时备份数据库(全库备份)的实现
Sep 25 #MySQL
You might like
php+mysql事务rollback&commit示例
2010/02/08 PHP
解析PHP中intval()等int转换时的意外异常情况
2013/06/21 PHP
解析linux下安装memcacheq(mcq)全过程笔记
2013/06/27 PHP
PHP abstract 抽象类定义与用法示例
2018/05/29 PHP
Windows服务器中PHP如何安装redis扩展
2019/09/27 PHP
jQuery用unbind方法去掉hover事件及其他方法介绍
2013/03/18 Javascript
JavaScript中的noscript元素属性位置及作用介绍
2013/04/11 Javascript
JQuery的自定义事件代码,触发,绑定简单实例
2013/08/01 Javascript
JavaScript函数获取事件源的小例子
2014/05/14 Javascript
超级简单的jquery操作表格方法
2014/12/15 Javascript
详解JS面向对象编程
2016/01/24 Javascript
Angular之指令Directive用法详解
2017/03/01 Javascript
JS实现的input选择图片本地预览功能示例
2018/08/29 Javascript
angularJs select绑定的model取不到值的解决方法
2018/10/08 Javascript
vue项目中mock.js的使用及基本用法
2019/05/22 Javascript
Python实现拷贝多个文件到同一目录的方法
2016/09/19 Python
django 创建过滤器的实例详解
2017/08/14 Python
Python+OpenCV让电脑帮你玩微信跳一跳
2018/01/04 Python
python3 kmp 字符串匹配的方法
2018/07/07 Python
python调用pyaudio使用麦克风录制wav声音文件的教程
2019/06/26 Python
python 随机生成10位数密码的实现代码
2019/06/27 Python
pytorch 限制GPU使用效率详解(计算效率)
2020/06/27 Python
python asyncio 协程库的使用
2021/01/21 Python
Html5实现首页动态视频背景的示例代码
2019/09/25 HTML / CSS
夏威夷灵感服装及配饰:Reyn Spooner
2018/09/18 全球购物
英国知名小木屋定制网站:Tiger Sheds
2020/03/06 全球购物
法人代表委托书
2014/04/04 职场文书
环卫工人先进事迹材料
2014/06/02 职场文书
领导干部作风建设剖析材料
2014/10/11 职场文书
2014会计年终工作总结
2014/12/20 职场文书
出纳工作检讨书范文
2014/12/27 职场文书
2015年双拥工作总结
2015/04/08 职场文书
余世维讲座观后感
2015/06/11 职场文书
2019年销售部季度工作计划3篇
2019/10/09 职场文书
php+laravel 扫码二维码签到功能
2021/05/15 PHP
DBCA命令行搭建Oracle ADG的流程
2021/06/11 Oracle