• MySQL在线删除多余的binlog文件



    如果你的MySQL搭建了主从同步 , 或者数据库开启了log-bin日志(MySQL默认开启) , 那么随着时间的推移 , 你的数据库data 目录下会产生大量的日志文件

    ll /opt/mysql/data/
    -rw-rw----. 1 mysql mysql 63278 9月 11 02:03 mysql-bin.000001
    -rw-rw----. 1 mysql mysql 10966 9月 11 02:03 mysql-bin.000002
    -rw-rw----. 1 mysql mysql 133 9月 11 02:04 mysql-bin.000003
    -rw-rw----. 1 mysql mysql 133 9月 12 02:00 mysql-bin.000004
    -rw-rw----. 1 mysql mysql 271 9月 12 18:25 mysql-bin.000005
    -rw-rw----. 1 mysql mysql 133 9月 12 18:55 mysql-bin.000006
    -rw-rw----. 1 mysql mysql 133 9月 12 19:48 mysql-bin.000007
    -rw-rw----. 1 mysql mysql 133 9月 12 21:21 mysql-bin.000008
    -rw-rw----. 1 mysql mysql 321 9月 18 17:30 mysql-bin.000009

    生产环境中这些文件都会很大,默认每个1G左右大小,长期不处理会占满硬盘空间
    下面来介绍几种解决方法:

    1、如果你的数据库没有搭建主从同步这样的服务 , binlog日志也不用的情况下 , 你可以将/etc/my.cnf文件下面行删除或注释掉
    log-bin=mysql-bin
    如果你需要这样的文件 , 那么建议你在主配置文件 /etc/my.cnf 中添加如下行 , 来限制 binlog日志文件存在时间 , 过期自动删除
    expire_logs_days = 7 #只保留7天的日志文件

    2、如果你服务器上面的binlog日志已经影响到了磁盘空间,那么你可以使用下面命令清除
    mysql> reset master; #清空所有binlog文件

    3、如果你的服务器 , mysql做了主从同步 , 那么上面的命令就不适合你了 , 因为binlog文件不能全部删除 , 否则会导致数据不同步
    mysql> show slave statusG;   #在slave上查看从库读binlog读到了哪里
    Master_Log_File: mysql-bin.000009   # 我们可以看到是mysql-bin.000009
    mysql> purge master logs to 'mysql-bin.000009';    #在master中执行这条指令 , 将mysql-bin.000009前的binlog都删掉
    mysql> purge master logs before '2014-11-18 00:00:00';    #将此日期前的binlog都删掉


    参考链接:http://www.linuxidc.com/Linux/2016-03/129647.htm

  • 相关阅读:
    彻底理解 Python 生成器
    Windows上虚拟环境的安装及使用
    github怎么绑定自己的域名
    解决ImportError: cannot import name HTTPSHandler
    服务器(Linux) 安装python3
    函数的参数(必选,默认,可变,关键字)
    python 异常处理(try...finally...和with...as 方法)
    LeetCode 33. 搜索旋转排序数组 | Python
    LeetCode 46. 全排列
    LeetCode 面试题51. 数组中的逆序对
  • 原文地址:https://www.cnblogs.com/fjping0606/p/7560030.html
Copyright © 2020-2023  润新知