12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
ADADADADAD
mysql数据库 时间:2024-12-25 09:55:01
作者:文/会员上传
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
【MySQL】【高可用】purge_relay_logs工具的使用背景: 在MHA高可用架构中切换的步骤中,主要靠对各个实例的relay log文件新旧程度进行比较,选取最新的relaylog进行群组内的数
以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。
在MHA高可用架构中切换的步骤中,主要靠对各个实例的relay log文件新旧程度进行比较,选取最新的relaylog进行群组内的数据追加,以此尽可能地来保证数据的安全性,减少数据丢失的数量。这就要求relay log不能被系统自动清除,要保留一段时间,防止主库挂掉,进行数据补全。
但这就会产生一个问题,在业务持续繁忙时,从库可能会积累很多relay log,若不及时清除早晚会酿出祸患。
简介: --user/password/host/port 指定用户名/密码/主机/端口,这里有个需要注意的地方,虽然提供了主机的参数,但是只允许127.0.0.1或者localhost两种取值,即只能从本地登录。
--workdir 指定硬链接创建的位置,purge_relay_logs使用硬链接的方式删除relay log,需要注意的是,为了保证硬链接的成功,建议硬链接的文件夹和relay log的目录在同一个分区。[5.7版本似乎没有用到]
--disable_relay_log_purge 禁用MySQL的自动清除relay log设置,默认情况下,MySQL自动清除relay log,反映到参数上即是:relay_log_purge=1。若MySQL自动清除relay log,工具在启动后就会自动结束,不清除任何文件。当指定了此参数后,工具会禁用MySQL的自动清除relay log设置。
使用: purge_relay_logs --user=sniffer --password=123456 --port=3110 --host=127.0.0.1 --disable_relay_log_purge --workdir=/data/mha/
输出如下:
2018-02-02 16:40:01: purge_relay_logs script started. Opening /data/mysql/3110/data/relay-bin.000012 .. Opening /data/mysql/3110/data/relay-bin.000013 .. 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.2018-02-02 16:40:04: All relay log purging operations succeeded.#MySQL中$./vc-mysql-sniffer --binding "[::]:3110"|grep -v "#"USE ``;SHOW SLAVE STATUS;SELECT @@global.relay_log_purge As Value;SELECT VERSION() AS Value;SELECT @@global.relay_log_info_repository AS Value;SELECT Relay_log_name FROM mysql.slave_relay_log_info;SELECT @@global.datadir AS Value;SELECT GET_LOCK('MHA_Master_High_Availability_Failover', '200') AS Value;SELECT VERSION() AS Value;SET GLOBAL relay_log_purge=1;FLUSH NO_WRITE_TO_BINLOG /*!50501 RELAY */ LOGS;SET GLOBAL relay_log_purge=0;SELECT RELEASE_LOCK('MHA_Master_High_Availability_Failover') As Value;
解析:1.先检查是否开启了自动清理relay log
2.从MySQL中获得relay log 的文件名,位置,正在使用的编号,创建硬链接。
3.开启自动清理,刷新relay log,生成新的一组relay log后,关闭自动清理,这一步在最大程度上清理了relay log。
自动化清理: 通过shell脚本并添加到crontab中定时清理。
cat >/etc/auto_clean_relay_log.sh<<EOF#!/bin/shUSER=proxysqlPASSWORD=123456PORT=3110log_dir='/data/mha'work_dir='/data/mha'purge='/usr/local/bin/purge_relay_logs'if [ ! -d $log_dir ]then mkdir $log_dir -pfi$purge --user=$user --password=$passwd --disable_relay_log_purge --port=$port>> $log_dir/purge_relay_logs.log 2>&1
crontab -e
增加如下一行:
0 0 */3 * * sh /etc/auto_clean_relay_log.sh
参考文章:国平师兄:https://blog.51cto.com/arthur376/1812640
11-20
11-19
11-20
11-20
11-20
11-19
11-20
11-20
11-19
11-20
11-19
11-19
11-19
11-19
11-19
11-19