生活随笔
收集整理的這篇文章主要介紹了
mysql主从日志的定期清理
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
?mysql主從的binlog定時(shí)刪除是很重要的,一般是通過(guò)expire_logs_days = 10來(lái)設(shè)置binlog保留的天數(shù)(mysql5.0一下版本不支持),但有時(shí)這還不夠,假如有幾天的日志量非常大,硬盤可能會(huì)滿,所以不但要設(shè)置保留的天數(shù),還要監(jiān)控硬盤的空間使用情況。寫了一個(gè)腳本,適合各個(gè)版本的mysql,保留3天的日志,當(dāng)存放日志的硬盤使用率超過(guò)80%,則保留2天,但至少會(huì)保留一天的binlog日志文件。
????????import?os,sys,time,MySQLdb??def?log_w(text):?????logfile?=?"/usr/local/zabbix/bin/delet.log"?????now?=?time.strftime("%Y-%m-%d?%H:%M:%S")?????tt?=?now?+?"\t"?+?str(text)?+?"\n"?????f?=?open(logfile,'a+')?????f.write(tt)?????f.close()??def?mysql_conn(port,lastlog,days):?????try:?????????center_ip?=?'127.0.0.1'?????????center_user?=?'repl_monitor'?????????center_passwd?=?'VQMQLGwTaw3k0UV8'?????????sql?=?"PURGE?MASTER?LOGS?TO?'%s';"?%?lastlog?????????conn?=?MySQLdb.connect(host?=?center_ip,port?=?int(port),user?=?center_user,passwd?=?center_passwd,connect_timeout=5)?????????cursor?=?conn.cursor()??????????cursor.execute(sql)?????????alldata?=?cursor.fetchall()?????????cursor.close()?????????conn.close()?????????text?=?"Deltet?before?%s?days?binlog,deltet?%s?before?!"?%?(days,lastlog)?????????log_w(text)?????except?Exception,e:?????????log_w(e)??def?find_logdir():?????conn?=?"find?/?-name?binlog|grep?-v?usr"?????logdir_list?=?os.popen(conn).readlines()?????if?len(logdir_list)?!=?0:?????????for?logdir?in?logdir_list:?????????????datadir?=?logdir.strip().split("/")[1]?????????????if?"mysql_log"?in?logdir.strip():?????????????????port?=?3306?????????????else:?????????????????port?=?logdir.strip().split("/")[3].split("-")[-1]?????????????days?=?3?????????????while?1:?????????????????conn?=?"find?%s?-mtime?%s|sort"?%?(logdir.strip(),days)?????????????????count?=?os.popen(conn).readlines()?????????????????if?len(count)?!=?0:?????????????????????lastlog?=?count[-1].strip().split("/")[-1]?????????????????????mysql_conn(port,lastlog,days)??????????????????df?=?"df?-h|grep?-e?'%s$'|awk?'{print?$5}'|awk?-F?'%%'?'{print?$1}'"?%?datadir?????????????????disk?=?os.popen(df).read().strip()?????????????????if?not?disk:?????????????????????break?????????????????else:?????????????????????if?int(disk)?<?80:?????????????????????????break?????????????????????else:?????????????????????????days?=?days?-?1?????????????????????????if?days?==?1:?????????????????????????????break?????else:?????????sys.exit()??if?__name__?==?"__main__":?????find_logdir()? ?
總結(jié)
以上是生活随笔為你收集整理的mysql主从日志的定期清理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。