开发者社区> 技术小胖子> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

使用purge_relay_logs 清理relay log

简介:
+关注继续查看

      MySQL数据库主从复制在缺省情况下从库的relay logs会在SQL线程执行完毕后被自动删除,(默认relay_log_purge=1)但是对于MHA场景下,对于某些滞后从库的恢复依赖于其他从库的relay log,因此采取禁用自动删除功能以及定期清理的办法,从而避免对于清理过多过大的relay log需要注意引起的复制延迟资源开销等。MHA可通过purge_relay_logs脚本及配合cronjob来完成此项任务,具体描述如下:


1、purge_relay_logs的功能
  a、为relay日志创建硬链接(最小化批量删除大文件导致的性能问题)
  b、SET GLOBAL relay_log_purge=1; FLUSH LOGS; SET GLOBAL relay_log_purge=0;
  c、删除relay log(rm –f  /path/to/archive_dir/*)


2、purge_relay_logs的用法及相关参数

###用法

# purge_relay_logs --help
Usage:

1
purge_relay_logs --user=root --password=rootpass --host=127.0.0.1

###参数描述
--user mysql            用户名,缺省为root
--password mysql          密码
--port                 端口号
--host                 主机名,缺省为127.0.0.1
--workdir               指定创建relay log的硬链接的位置,默认是/var/tmp,成功执行脚本后,硬链接的中继日志文件被删除
由于系统不同分区创建硬链接文件会失败,故需要执行硬链接具体位置,建议指定为relay log相同的分区
--disable_relay_log_purge    默认情况下,参数relay_log_purge=1,脚本不做任何处理,自动退出
设定该参数,脚本会将relay_log_purge设置为0,当清理relay log之后,最后将参数设置为OFF(0)
             

3、定制清理relay log cronjob
pureg_relay_logs脚本在不阻塞SQL线程的情况下自动清理relay log。

对于不断产生的relay log直接将该脚本部署到crontab以实现按天或按小时定期清理。
$ crontab -l  
# purge relay logs at 5am  
0 5 * * * /usr/bin/purge_relay_logs --user=root --password=PASSWORD --disable_relay_log_purge >> /var/log/masterha/purge_relay_logs.log 2>&1            


4、手动清理示例

1
2
3
4
5
6
7
8
9
10
# purge_relay_logs --user=mha --password=mha --disable_relay_log_purge 
2015-04-23 14:33:20: purge_relay_logs script started.
 relay_log_purge is enabled. Disabling..
 Found relay_log.info: /data/mysqldata/relay-log.info
 Opening /data/mysqldata/vdbsrv3-relay-bin.000001 ..
 Opening /data/mysqldata/vdbsrv3-relay-bin.000002 ..
 Executing SET GLOBAL relay_log_purge=1; FLUSH LOGS; sleeping a
 few seconds so that SQL thread can delete older relay log files (if it keeps up); 
 SET GLOBAL relay_log_purge=0; .. ok.
2015-04-23 14:33:23: All relay log purging operations succeeded.





      本文转自crazy_charles 51CTO博客,原文链接:http://blog.51cto.com/douya/1788772,如需转载请自行联系原作者



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【redo log、bin log、undolog、purge操作、group commit】
【redo log、bin log、undolog、purge操作、group commit】
0 0
再深入一点|binlog和relay-log到底长啥样?
上一篇mysql面试的文章之后收到不少朋友的意见,希望深入讲讲复制、日志的格式这些,今天,我们就来深挖一下mysql的复制机制到底有哪一些,以及binlog和relay-log的结构到底是什么样子的。
0 0
MySQL中binlog和relay log清理方式
1. MySQL server的binlog清理 1.1 使用MySQL参数控制 expire_logs_days 设置二进制日志的过期天数,过了指定天数的日志将被自动删除,可动态修改 如果设置了非0值,则在mysqld启动和日志刷新时,可能执行清理超过定义天数的binlog file 全局变...
969 0
mysql relay_log_recovery relay_log_info_repository
relay-log-info 记录SQL线程读取Master binlog的位置,用于Slave 宕机后根据文件中记录的pos点恢复Sql线程 master-info 记录IO线程读取已经读取到的master binlog位置,用于slave宕机...
2668 0
mysql 清除relay-log文件方法详解
<div class="keywords" style="color:rgb(51,51,51); font-family:Simsun; font-size:15px; line-height:28px; list-style:none; margin:0px; padding:0px"> <br> </div> <p style="line-height:25.5px; color
5467 0
MHA 清理relay log(purge_relay_logs)
     MySQL数据库主从复制在缺省情况下从库的relay logs会在SQL线程执行完毕后被自动删除,但是对于MHA场景下,对于某些滞后从库的恢复依赖于其他从库的relay log,因此采取禁用自动删除功能以及定期清理的办法。
793 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载