首頁  >  文章  >  資料庫  >  MHA清理中繼日誌(purge_relay_logs)

MHA清理中繼日誌(purge_relay_logs)

黄舟
黄舟原創
2017-02-15 10:37:362754瀏覽



    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


###參數描述

rr 

3、客製清理relay log cronjob

--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)




4、手動清理範例

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         
   更正,移除多余字符app @20150515


以上是MHA 清理選項!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn