删除庞大的MySQL binlog实操

  • 以下的文章主要描述的是清理删除庞大的MySQL binlog的实际操作方案,我们是在MySQL master/slave架构的环境下对清理删除庞大的MySQL binlog进行操作,以下就是文章的具体内容描述。

    问题:主库硬盘不足s

    原因:MySQL的var下大量bin二进制log,200多个g啊

    目标:安全删除MySQL binlog

    方法:网上搜搜关键词“MySQL bin文件 删除”,还真有~~

    相关语句:

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

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

    例如:

      
      
    1. PURGE MASTER LOGS TO 'MySQL-bin.010';  
    2. PURGE MASTER LOGS BEFORE '2003-04-02 22:46:26'; 

    BEFORE变量的date自变量可以为'YYYY-MM-DD hh:mm:ss'格式。MASTER和BINARY是同义词。

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

    删除庞大的MySQL binlog 要清理日志,需按照以下步骤:

    1. 在每个从属服务器上,使用SHOW SLAVE STATUS来检查它正在读取哪个日志。

    2. 使用SHOW MASTER LOGS获得主服务器上的一系列日志。

    3. 在所有的从属服务器中判定最早的日志。这个是目标日志。如果所有的从属服务器是更新的,这是清单上的最后一个日志。

    4. 制作您将要删除的所有日志的备份。(这个步骤是自选的,但是建议采用。)

    5. 清理所有的日志,但是不包括目标日志

    实践:

    从库下---

    MySQL> show slave status\G;

    ……

    Master_Log_File: tc-ns-comment-db00-bin.000162

    Relay_Master_Log_File: tc-ns-comment-db00-bin.000162

    ……

    主库下---

    MySQL> show master log;

    …………一堆堆

    MySQL> PURGE MASTER LOGS TO 'tc-ns-comment-db00-bin.000070';

    ……等待n长时间

      
      
    1. MySQL>quit  
    2. $du -sh ./  

    减少了好多g啊,世界清净了~~

    上述的相关内容就是对删除庞大的MySQL binlog的描述,希望会给你带来一些帮助在此方面。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值