首页 > 数据库 >[转] MySQL binlog 日志自动清理及手动删除

[转] MySQL binlog 日志自动清理及手动删除

时间:2024-06-21 21:56:52浏览次数:25  
标签:binlog logs MySQL MASTER mysql 日志 LOGS

参考

转载自 mysql binlog日志自动清理及手动删除 - 景岳 - 博客园


说明

当开启 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'
    

实现


关闭 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

然后重启数据库。


开启 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;

手动清除 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 的影响说明

附录:


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.


PURGE MASTER LOGS 手动删除用法及示例

MASTERBINARY 是同义词

> 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'格式。

清除 binlog 时,对从 mysql 的影响

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


标签:binlog,logs,MySQL,MASTER,mysql,日志,LOGS
From: https://www.cnblogs.com/kingron/p/18261558

相关文章

  • MySQL数据库技术
    数据库基本概念1.数据库(Database,简称DB)数据库是存放数据的仓库,是长期储存在计算机内、有组织有结构的、可共享的数据集合。2.数据库管理系统(DatabaseManagementSystem,简称DMBS)数据库管理系统是为数据库的建立、使用和维护而配置的数据库管理软件,它位于用户与操作系......
  • MySQL之复制(九)
    复制复制管理和维护确定主备是否一致在理想情况下,备库和主库的数据应该是完全一样的。但事实上备库可能发生错误并导致数据不一致。即使没有明显的错误,备库同样可能因为MySQL自身的特性导致数据不一致,例如MySQL的Bug、网络中断、服务器崩溃,非正常关闭或者其他一些错误。(......
  • MySQL----表级锁&行级锁&排它锁和共享锁&意向锁
    MySQL的锁机制锁(Locking)是数据库在并发访问时保证数据一致性和完整性的主要机制。在MySQL中,不同存储引擎使用不同的加锁方式;我们以InnoDB存储引擎为例介绍MySQL中的锁机制,其他存储引擎中的锁相对简单一些。表级锁&行级锁表级锁:对整张表加锁。开销小,加锁快,不会出现......
  • MySQL----彻底卸载(附带每一步截图)
    停止mysql服务打开任务管理器,点击服务,找到mysql服务,这里我的是MySQL57,找到mysql服务后选中,点击右键选择停止服务删除mysql服务win+R打开命令框,输入cmd打开cmd控制台或者电脑左下角输入cmd搜索,选择管理员身份进入cmd控制台(否则会拒绝访问),弹出是否允许该应用对设备进行修......
  • mysql SHOW PROFILE
    SHOWPROFILE[type[,type]...][FORQUERYn][LIMITrow_count[OFFSEToffset]]type:{ALL|BLOCKIO|CONTEXTSWITCHES|CPU|IPC|MEMORY|PAGEFAULTS|SOURCE|SWAPS}SHOWPROFILE和SHOWPROFILES语句显示分析信息,这些信......
  • MySQL数据库
    一.数据库概念1.数据        描述事物的符号记录称为数据(Data)。数字、文字、图形、图像、声音、档案记录等都是数据。        在数据库中,数据是以“记录”的形式按照统一的格式进行存储的,而不是杂乱无章的。相同格式和类型的数据统一存放在一起,而不会把“人......
  • MySQL 查数据转Json
    将数据库表里的字段查询出来并且连接成json格式的实现方法SELECTCONCAT('[',GROUP_CONCAT(JSON_OBJECT('key-name',col1,'keyname2',col2,……,'key-namen',coln)),']')asjson_resultFROMtablenamewherecol1=83结果会将查询的数据一行行用{}返回,行之间&qu......
  • MySQL初体验
    数据库的基本概念数据描述事物的符号记录包括数字,文字、图形、图像、声音、档案记录等以“记录”的形式按统一的格式进行存储表将不同的记录组织在一起用来存储具体数据数据库表的集合,是存储数据的仓库以一定的组织方式存储的相互有关的数据集合数据库管理系统(DBMS)是实......
  • MySQL bit类型增加索引后查询结果不正确案例浅析
    昨天同事遇到的一个案例,这里简单描述一下:一个表里面有一个bit类型的字段,同事在优化相关SQL的过程中,给这个表的bit类型的字段新增了一个索引,然后测试验证时,居然发现SQL语句执行结果跟不加索引不一样。加了索引后,SQL语句没有查询出一条记录,删除索引后,SQL语句就能查询出几十条记录。......
  • 对比Oracle和MySQL索引对于like的支持,MySQL一言难尽啊...
     对比Oracle和MySQL索引对于like的支持,MySQL一言难尽啊... MySQL:|Oracle:(root@localhost09:44:08)[zkm](673009)>select*fromtest;|09:52:11ZKM@test(1076......