1.1 方法1:PURGE MASTER LOGS

    语法:

  1. PURGE { BINARY | MASTER } LOGS
  2. { TO 'log_name' | BEFORE datetime_expr }

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

    实例:

  1. PURGE BINARY LOGS TO 'mysql-bin.000002';
  2. PURGE BINARY LOGS BEFORE '2014-04-28 23:59:59';

分别表示:删除mysql-bin.000002之前的日志(不包括mysql-bin.000002)

删除2014-04-28 23:59:59时间点之前的日志

    具体演示:删除某个时间点之前的日志

    具体演示:删除某个日志之前的日志

    注意事项:

在删除binlog日志同时,也会清理MySQL-bin.index的文件记录,清理完后命令中指定的日志文件成为第一个。
        主从架构下,如果复制正在进行中,执行该命令是安全的,例如slave正在读取我们要删除的log,该语句将什么也不会做,并返回一个错误;如果复制是停止的,我们删除了一个slave还未读取的日志,则复制重新建立连接时将会失败。
    建议操作步骤:

a 在每个从属服务器上,使用SHOW SLAVE STATUS来检查它正在读取哪个日志。
        b 使用SHOW MASTER LOGS获得主服务器上的一系列日志。
        c 在所有的从属服务器中判定最早的日志。这个是目标日志。如果所有的从属服务器是最新的,这是清单上的最后一个日志。
        d 备份您将要删除的所有日志。(这个步骤是自选的,但是建议采用。)
        e 清理除目标日志之外的所有日志。

    1.2 方法2:手动删除binlog日志文件

    1.2.1 查看日志文件:

    1.2.2 删除文件mysql-bin.000009

  1. [root@localhost data]# rm -f mysql-bin.000009

    1.2.3 编辑mysql-bin.index


    删除掉一行./mysql-bin.000009

   1.3 方法3:指定过期天数(expire_logs_days)

该参数为全局可动态调整参数,默认值为0,即关闭,取值范围0-99。


    1.3.1 参数的查看:

  1. mysql> show variables like 'expire_logs_days';
  2. +------------------+-------+
  3. | Variable_name    | Value |
  4. +------------------+-------+
  5. | expire_logs_days | 0     |
  6. +------------------+-------+

    1.3.2 参数调整:

例如我们设置过期为60天


    设置完后红色标注的3个binlog日志将会被删除。

设置参数:

  1. mysql> set global expire_logs_days = 60;
  2. Query OK, 0 rows affected (0.05 sec)
  3. mysql> show variables like 'expire_logs_days';
  4. +------------------+-------+
  5. | Variable_name    | Value |
  6. +------------------+-------+
  7. | expire_logs_days | 60    |
  8. +------------------+-------+

刷新日志查看,上述三个日志被清除掉了。

/******************************************************************************/

my.cnf 配置文件中的参数  expire_logs_days  默认值为0,表示“不要自动删除”

启动时和二进制日志循环时可能删除

语法:mysql -u -p进去之后 执行:

set GLOBAL expire_logs_days=5;

但是设置了 不会马上生效

需要执行:

1.执行 flush logs;

(关闭当前的二进制日志文件并创建一个新文件,新的二进制日志文件的名字在当前的二进制文件的编号上加1。)

2.或者等待当前的日志文件写满设定的大小(重启服务器可选)

expire_logs_days=5   --表示自动删除5天以前的日志

/******************************************************************************/

  1. mysql> flush logs;
  2. Query OK, 0 rows affected (0.07 sec)
  3. mysql> show master logs;
  4. +------------------+-----------+
  5. | Log_name         | File_size |
  6. +------------------+-----------+
  7. | mysql-bin.000013 |      4097 |
  8. | mysql-bin.000014 |     54431 |
  9. | mysql-bin.000015 |       729 |
  10. | mysql-bin.000016 |       107 |
  11. +------------------+-----------+

    1.3.3 注意事项

在双机复制环境下,应确保过期天数不应小于从机追赶主机binlog日志的时间。

    1.3.4 触发过期删除的条件

每次进行 LOG flush的时候会自动删除过期的日志。
    触发log flush的条件为:
        1. 重启mysql;
     2. BINLOG文件大小达到参数max_binlog_size限制;
     3. 手工执行命令。

    1.4 方法4:重置binlog(reset master)

    语法:

  1. RESET MASTER;

    解释:

该方法可以删除列于索引文件中的所有二进制日志,把二进制日志索引文件重新设置为空,并创建一个以.000001为后缀新的二进制日志文件。

该语法一般只用在主从环境下初次建立复制时。

在主从复制进行过程中,该语句是无效的。

    主从环境下的配置步骤:
    a. 启动master和slave,开启replication(即复制)
    b. 在master上运行一些测试的语句,看数据是否能够复制到 slave上面
    c. 当复制运行正常的话,就在从上stop slave 然后执行 reset slave,去掉不需要的数据 
    d. 在master上面执行reset master 清除测试产生的数据

2 使用到的命令列表

  1. show master logs;
  2. PURGE BINARY LOGS TO 'mysql-bin.000001';
  3. PURGE BINARY LOGS BEFORE '2014-04-28 23:59:59';
  4. show variables like 'expire_logs_days';
  5. set global expire_logs_days = 60;
  6. flush logs;
  7. RESET MASTER;

****************************************************************************************
    原文地址:http://blog.csdn.net/jesseyoung/article/details/40979129
    博客主页:http://blog.csdn.net/jesseyoung
****************************************************************************************

mysql运维-二进制日志BINARY LOG清理的更多相关文章

  1. 二进制日志BINARY LOG清理

    mysql> show master logs; +------------------+-----------+ | Log_name | File_size | +------------- ...

  2. MySQL 二进制日志(Binary Log)

    同大多数关系型数据库一样,日志文件是MySQL数据库的重要组成部分. MySQL有几种不同的日志文件.通常包括错误日志文件,二进制日志,通用日志,慢查询日志,等等.这些日志能够帮助我们定位mysqld ...

  3. mysql 二进制日志binary log操作简单命令

    show master status \G; #查看当前正在记录的二进制日志 show binary logs; #查看binary log 所有文件列表 show binlog events; #查 ...

  4. mysql运维必会的一些知识点整理

    (1)基础笔试命令考察 1.开启MySQL服务 /etc/init.d/mysqld start service mysqld start systemctl start mysqld 2.检测端口是 ...

  5. mysql运维必会的一些知识点整理(转自民工哥)

    (1)基础笔试命令考察 1.开启MySQL服务 /etc/init.d/mysqld start service mysqld start systemctl start mysqld 2.检测端口是 ...

  6. mysql运维

    反反复复装了好多次的mysql,上学的时候从来没有考虑过稳定性,装起来,能跑通,增删改查没有问题万事大吉.参与工作后参与平台搭建和维护,平台的稳定性是首先必须要考虑的问题,之前装mysql使用经历了密 ...

  7. 转:三思!大规模MySQL运维陷阱之基于MyCat的伪分布式架构

    在微信公众号看到一篇关于mycat的文章,觉得分析的很不错,给大家分享一下 三思!大规模MySQL运维陷阱之基于MyCat的伪分布式架构 原文链接:https://mp.weixin.qq.com/s ...

  8. 搭建稳固的MySQL运维体系

    MySQL 监控要点 MySQL 监控要点,主要涉及服务器和 MySQL 两个方向的监控告警. 在这两个监控告警方向需要重点关注监控策略.监控趋势图及报警方式. 监控策略指的是每个监控项的告警阈值,例 ...

  9. 公司没有 DBA,Mysql 运维自己来

    如果你的公司有 DBA,那么我恭喜你,你可以无视 Mysql 运维.如果你的公司没有 DBA,那你就好好学两手 Mysql 基本运维操作,行走江湖,防身必备. 环境:CentOS7 版本: 一.虚拟机 ...

随机推荐

  1. 6、kvm克隆虚拟机

    kvm克隆有两种方法可以使用先暂停kvm虚拟机 virsh suspend privi-server 方法一:对虚拟机本身直接clone virt-clone -o privi-server -n p ...

  2. CentOS6.5安装MySQL5.7(也适合其他版本安装)

     1.查看是否已经安装过mysql或其依赖,若已装过要先将其删除,否则第4步使用yum安装时会报错: 方法一:yum list installed | grep mysql 方法二:rpm -qa | ...

  3. python之Selenium库的使用

    一  什么是Selenium selenium 是一套完整的web应用程序测试系统,包含了测试的录制(selenium IDE),编写及运行(Selenium Remote Control)和测试的并 ...

  4. 主键约束 primary key

    主键的作用: 可以唯一标识 一条数据,每张表里面只能有一个主键,.主键特性: 非空且唯一.当表里没有主键的时,第一个出现的非空且为唯一的列,被当成主键. 例子:create table tb3(    ...

  5. Luogu P4551 最长异或路径 01trie

    做一个树上前缀异或和,然后把前缀和插到$01trie$里,然后再对每一个前缀异或和整个查一遍,在树上从高位向低位贪心,按位优先选择不同的,就能贪出最大的答案. #include<cstdio&g ...

  6. lifecycle-mapping-metadata.xml

    <?xml version="1.0" encoding="UTF-8"?> <lifecycleMappingMetadata> &l ...

  7. Base64Utils

    package com.yundaex.common.crypto.base64; import java.io.ByteArrayInputStream; import java.io.ByteAr ...

  8. WSGI学习系列eventlet.wsgi

    WSGI是Web Service Gateway Interface的缩写. WSGI标准在PEP(Python Enhancement Proposal)中定义并被许多框架实现,其中包括现广泛使用的 ...

  9. Hystrix核心基础 - 滑动窗口创建过程及demo

    前言 RxJava可能有些小伙伴没有听过是什么东西,可能是因为大家平时在做业务需求的时候对异步编程了解得比较少,而RxJava就是这么一个响应式编程框架,RxJava在安卓上面用得非常多,做安卓的朋友 ...

  10. 2009年3月新浪PHP面试题及答案(一)

    1. echo count(“abc”); 输出什么? 答案:1 2. 用PHP代码写出显示客户端IP与服务器IP的代码. 答案:客户端 getenv(‘REMOTE_ADDR’); 服务器端 get ...