mysql binlog日志自动清理及手动删除

本文涉及的产品
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用版 2核4GB 50GB
简介:

说明:

当开启MySQL数据库主从时,会产生大量如mysql-bin.00000* log的文件,这会大量耗费您的硬盘空间。

mysql-bin.000001

mysql-bin.000002

mysql-bin.000003

mysql-bin.000004

mysql-bin.000005

有三种解决方法:

1.关闭mysql主从,关闭binlog;


2.开启mysql主从,设置expire_logs_days;


3.手动清除binlog文件,> PURGE MASTER LOGS TO ‘MySQL-bin.010′;



实现:


  1. 关闭mysql主从,关闭binlog


# vim /etc/my.cnf  //注释掉log-bin,binlog_format

# Replication Master Server (default)

# binary logging is required for replication

# log-bin=mysql-bin

# binary logging format - mixed recommended

# binlog_format=mixed

然后重启数据库


2.重启mysql,开启mysql主从,设置expire_logs_days


# vim /etc/my.cnf  

//修改expire_logs_days,x是自动删除的天数,一般将x设置为短点,如10;

expire_logs_days = x  

//二进制日志自动删除的天数。默认值为0,表示“没有自动删除”

此方法需要重启mysql,附录有关于expire_logs_days的英文说明


当然也可以不重启mysql,开启mysql主从,直接在mysql里设置expire_logs_days

> show binary logs;

> show variables like '%log%';

set global expire_logs_days = 10;

 

3.手动清除binlog文件

# /usr/local/mysql/bin/mysql -u root -p


PURGE MASTER LOGS BEFORE DATE_SUB(CURRENT_DATE, INTERVAL 10 DAY); 

  

//删除10天前的MySQL binlog日志,附录2有关于PURGE MASTER LOGS手动删除用法及示例


> show master logs;

 

也可以重置master,删除所有binlog文件:


# /usr/local/mysql/bin/mysql -u root -p


reset master;  //附录3有清除binlog时,对从mysql的影响说明

 

附录:

1.expire_logs_days英文说明

Where X is the number of days you’d like to keep them around. I would recommend 10, but this depends on how busy your MySQL server is and how fast these log files grow. Just make sure it is longer than the slowest slave takes to replicate the data from your master.

Just a side note: You know that you should do this anyway, but make sure you back up your mysql database. The binary log can be used to recover the database in certain situations; so having a backup ensures that if your database server does crash, you will be able to recover the data.


2.PURGE MASTER LOGS手动删除用法及示例,MASTER和BINARY是同义词


> PURGE {MASTER | BINARY} LOGS TO 'log_name'


> PURGE {MASTER | BINARY} LOGS BEFORE 'date'


删除指定的日志或日期之前的日志索引中的所有二进制日志。这些日志也会从记录在日志索引文件中的清单中被删除MySQL BIN-LOG 日志,这样被给定的日志成为第一个。


实例:

> PURGE MASTER LOGS TO 'MySQL-bin.010';  //清除MySQL-bin.010日志

> PURGE MASTER LOGS BEFORE '2008-06-22 13:00:00';   //清除2008-06-22 13:00:00前binlog日志

> PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY);  //清除3天前binlog日志

BEFORE,变量的date自变量可以为'YYYY-MM-DD hh:mm:ss'格式。

 

3.清除binlog时,对从mysql的影响

如果您有一个活性的从属服务器,该服务器当前正在读取您正在试图删除的日志之一,则本语句不会起作用,而是会失败,并伴随一个错误。不过,如果从属服务器是休止的,并且您碰巧清理了其想要读取的日志之一,则从属服务器启动后不能复制。当从属服务器正在复制时,本语句可以安全运行。您不需要停止它们。










本文转自 chengxuyonghu 51CTO博客,原文链接:http://blog.51cto.com/6226001001/1901257,如需转载请自行联系原作者
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
4天前
|
关系型数据库 MySQL Java
|
19天前
|
SQL 安全 关系型数据库
MySQL的binlog日志的简介与查看
MySQL的binlog日志的简介与查看
30 4
|
20天前
|
关系型数据库 MySQL 数据库
MySQL 启动日志报错: File /mysql-bin.index not found (Errcode: 13 - Permission denied)
MySQL 启动日志报错: File /mysql-bin.index not found (Errcode: 13 - Permission denied)
42 2
|
21天前
|
存储 关系型数据库 MySQL
|
25天前
|
存储 关系型数据库 MySQL
|
10天前
|
监控
查看服务器/IIS日志、log、访问信息基本方法
除了手动查看,你也可以使用日志分析工具,如Log Parser、AWStats等,这些工具可以帮助你更方便地分析日志数据。
7 1
|
18天前
|
Java 测试技术 Apache
《手把手教你》系列基础篇(八十六)-java+ selenium自动化测试-框架设计基础-Log4j实现日志输出(详解教程)
【7月更文挑战第4天】Apache Log4j 是一个广泛使用的 Java 日志框架,它允许开发者控制日志信息的输出目的地、格式和级别。Log4j 包含三个主要组件:Loggers(记录器)负责生成日志信息,Appenders(输出源)确定日志输出的位置(如控制台、文件、数据库等),而 Layouts(布局)则控制日志信息的格式。通过配置 Log4j,可以灵活地定制日志记录行为。
33 4
|
19天前
|
运维 Java Apache
Java中的日志框架:Log4j与SLF4J详解
Java中的日志框架:Log4j与SLF4J详解
|
25天前
|
SQL 运维 关系型数据库
|
25天前
|
存储 关系型数据库 MySQL