MHA 清理relay log(purge_relay_logs)

??

MySQL数据库主从复制在缺省情况下从库的relay logs会在SQL线程执行完毕后被自动删除,但是对于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 --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 * * * app /usr/bin/purge_relay_logs --user=root --password=PASSWORD --disable_relay_log_purge >> /var/log/masterha/purge_relay_logs.log 2>&1

4、手动清理示例
# 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.

时间: 2024-11-09 02:57:51

MHA 清理relay log(purge_relay_logs)的相关文章

安装MHA中清理Relay log报错

[[email protected] ~]#  /usr/bin/purge_relay_logs --user=root --password=123456 -disable_relay_log_purge --port=3306 --workdir=/opt/mysql/data/2014-08-27 09:19:30: purge_relay_logs script started.install_driver(mysql) failed: Can't locate DBD/mysql.p

mysql-MHA预发布环境架构分享(八)之relay log的清除

(1)设置relay log的清除方式(在每个slave节点上): mysql -e 'set global relay_log_purge=0' 注意: MHA在发生切换的过程中,从库的恢复过程中依赖于relay log的相关信息,所以这里要将relay log的自动清除设置为OFF,采用手动清除relay log的方式.在默认情况下,从服务器上的中继日志会在SQL线程执行完毕后被自动删除.但是在MHA环境中,这些中继日志在恢复其他从服务器时可能会被 用到,因此需要禁用中继日志的自动删除功能.

【故障处理】ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository

今天在使用冷备份文件重做从库时遇到一个报错,值得研究一下. 版本:MySQL5.6.27 一.报错现象 dba:(none)> start slave; ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository 这个时候查看error.log: 2017-07-17 16:19:02 9022 [ERROR] Failed to open the relay log '.

Replication_Error:Relay log write failure:could not queue event from master

Mysql Version :5.6.16 OS Version :CentOS release 6.4 (Final) Replication:Master-Master  刚刚突然发现DB Master1(当前读写)磁盘满了,DB Master2(当前不对外提供写)replication 抛出异常:Relay log write failure:could not queue event from master,并且Slave_IO_Running: No. 当时第一个想到的解决办法是尝试在

Relay log read failure错误解决

1.mysql版本 5.5.24 2.ip 10.1.1.1 3.查看下slave状态 mysql> show slave status\G; *************************** 1. row ***************************                Slave_IO_State: Waiting for master to send event                   Master_Host: 10.1.1.1            

Relay log read failure

[email protected] > show slave status\G*************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 10.38.153.53 Master_User: mysqlsync Master_Port: 3306 Connect_Retry: 60 Master_Log_Fil

Slave SQL_THREAD如何重放Relay log

复制的介绍: 根据日志定义的模式不一样,可以分为:Statement(SBR)模式,Row(RBR)格式或者是MIXED格式,记录最小的单位是一个Event,binlog日志前4个字节是一个magic number,接下来19个字节记录Format desc evnet:FDE.MySQL5.6版本增加了GTID复制. 下面对三种binlog格式的优缺点: Statement(基于语句级的复制): 优点: 1)Binlog文件较小 2)日志是包含用户执行的原始SQL,方便统计和审计 3)出现最早

解决Mysql复制Relay log read failure 的问题

一.问题描述 Mysql主从复制模式中,slave上报错 "relay log read failure",导致主从同步停止. mysql> show slave status\G *************************** 1. row *************************** Slave_IO_State: Master_Host: 10.0.0.93 Master_User: slaveuser Master_Port: 3306 Connect_

关于Relay Log无法自动删除的问题

本文介绍了一次运维实践中relay-log长期无法自动删除的原因和解决过程 背景: 今天在运维一个mysql实例时,发现其数据目录下的relay-log 长期没有删除,已经堆积了几十个relay-log. 然而其他作为Slave服务器实例却没有这种情况. 现象分析 通过收集到的信息,综合分析后发现relay-log无法自动删除和以下原因有关. 该实例原先是一个Slave:导致relay-log 和 relay-log.index的存在 该实例目前已经不是Slave:由于没有了IO-Thread,