Heim >Datenbank >MySQL-Tutorial >12组nodes MySQL DB,每组2台Master-Master,批量清除过期的binl_MySQL

12组nodes MySQL DB,每组2台Master-Master,批量清除过期的binl_MySQL

WBOY
WBOYOriginal
2016-06-01 13:29:40916Durchsuche

bitsCN.com

12组nodes MySQL DB,每组2台Master-Master,批量清除过期的binlog释放磁盘空间

 

接到call,磁盘报警了,发现是大量dml操作导致N多binlog产生,所以需要清除已经sync过的binlog日志,12组nodes MySQL DB,每组2台Master-Master,需要批量清除过期的binlog释放磁盘空间。

 

方案,总共24台db,一台台进去清理肯定不行,得需要写一个脚本,进行批量操作,方案思路大概如下

1,  建立双master列表masterlist; 一个master一行。

 

2,远程获取master db上面的binlog位置以及对应master的master主机名(也许是ip地址)

 

3,拿到binlog位置以及master主机名,然后ssh远程清理掉远程master上面的binlog

 

4, 采用shell for循环操作step 2以及step 3。

 

clearbinlog.sh脚本如下

[python] 

for masterdb in `cat master.db.full`;do  

    #1 echo get the binlog position infomation  

    str_log_files=`ssh $masterdb "/opt/mysql/product/5.5.25a/bin/mysql -uroot --password="" -e /"show slave status/G;/" |grep -i master_Log_File "`  

    echo $str_log_files;  

    log_file=`echo $str_log_files | awk '{print $2}'`;   

    echo $log_file;  

  

    #2 echo get the master ip address or master hostname  

    db01tmp=`ssh $masterdb "  /opt/mysql/product/5.5.25a/bin/mysql  -uroot  --password=""  -e /"show slave status/G;/" |grep -i Master_Host  "`;    

    db01=`echo $db01tmp | awk '{print $2}'`  

  

    #3 begin to clear the old binlog   

    ssh $db01 "/opt/mysql/product/5.5.25a/bin/mysql  -uroot  --password="" -e /"purge master logs to '$log_file';/""  

  

    #4 check the disk space for master  

    ssh $db01 "df -h"  

    echo " "  

    echo " -- -- -- ";  

done;  

 

OK,run sh脚本 

sh clearbinlog.sh 就可以开始清理所有db的binlog了。

 

最后再次check disk space,执行check_disk.sh脚本,脚本内容如下:

[html] 

for masterdb in `master.db.full`;do  

  ssh  $masterdb "df -h" |grep -i mysqldatadir;  

done;  

 

执行sh check_disk.sh开始check
 

bitsCN.com
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn