MYSQLrelay_logs日志清理

更新时间:2023-06-25 15:06:37 阅读: 评论:0

MYSQLrelay_logs⽇志清理
情景
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:
purge_relay_logs --ur=root --password=rootpass --host=127.0.0.1
###参数描述
--ur mysql            ⽤户名,缺省为root写一种植物的作文
--password mysql          密码
--port                端⼝号
--host                主机名,缺省为127.0.0.1
好评语30字--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 --ur=root --password=PASSWORD --disable_relay_log_purge >>
/var/log/masterha/purge_relay_logs.log 2>&1
4、⼿动清理⽰例
# purge_relay_logs --ur=mha --password=mha --disable_relay_log_purge
主要有两种⽅式:
⽅式⼀:
通过MHA中⾃带的⼯具 purge_relay_logs ⼯具来删除。
步骤:
1、创建⼯作⽬录
水晶咕咾肉⽬的为了提⾼性能,这个⼯作⽬录必须跟mysql在同⼀个磁盘分区
删除打印机驱动mkdir -p /data/mha_tmp
2、purge relay logs
/usr/bin/purge_relay_logs --ur=USERNAME --password=PASSWORD --host=Mysql_IP --disable_relay_log_purge --workdir=/data/mha_tmp 2>&1
加⼊到crontab中
0 4 * * * /usr/bin/purge_relay_logs --ur=USERNAME --password=PASSWORD --host=Mysql_IP --
disable_relay_log_purge --workdir=/data/mha_tmp 2>&1我的梦想作文600字
说明:
–disable_relay_log_purge:⾃动设置”relay_log_purge = 1“
乖字组词
⽅式⼆:
⼿动删除 relay log
1. 设置relay_log_purge = 1
SET GLOBAL relay_log_purge = 1
2. flush logs
通过管理员⽤户登陆从数据库,然后执⾏下⾯命令:
flush logs;
可以执⾏多次!
注意:观察堆积的relay logs⽇志是否已经删除,如果删除,直接执⾏下⾯第6步“恢复relay_log_purge = 0“;如果未删除,继续从下⾯第3步”停⽌slave“往下操作
3. 停⽌slave
通过管理员⽤户登陆从数据库,然后执⾏下⾯命令:
mac重装
stop slave;
4. 删除relay logs
可以通过rm直接删除relay logs
通使⽤下⾯⽅式安全删除:
(1) 统计所有关于relay的⽂件(包括 relay_log_name.index)总个数
ls -A1 |grep relay | sort -rn | wc -l
(2) 列出要删除所有有关relay的⽂件:
ls -A1 |grep relay | sort -rn | tail -n 100
说明: 100 为要删除的relay logs 数量
(3) 确定没有问题,删除relay logs:
ls -A1 |grep relay | sort -rn | tail -n 100 | xargs rm -rf {}
注意:
要保留最新的两个relay log
要保留relay log的index⽂件
relay log的index⼀般命名为: relay_log_name.index
例如: relay-bin.index
5. 启动slave
武松的事迹通过管理员⽤户登陆从数据库,然后执⾏下⾯命令:
start slave;
6 . 恢复relay_log_purge = 0
通过管理员⽤户登陆从数据库,然后执⾏下⾯命令:
SET GLOBAL relay_log_purge=0;
扩展
如果你对从数据库要求不⾼,可以将relay_log_purge = 1

本文发布于:2023-06-25 15:06:37,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1037056.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:删除   链接   脚本   参数   登陆
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图