python編寫腳本應用實例


這里主要記錄工作中應用python編寫腳本的實例。由於shell腳本操作數據庫(增、刪、改、查)並不是十分直觀方便,故這里采用python監控mysql狀態,然后將狀態保存到數據庫中,供前台頁面進行調用顯示。

1、監控mysql主從復制狀態

1)創建保存主從復制狀態的表

CREATE TABLE `slave_status` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `slave_host` char(15) NOT NULL,          #從庫主機ip
  `master_host` char(15) NOT  NULL,        #主庫主機ip
  `value` int(11) NOT NULL,                #返回值,2表示正常,0表示不正常
  `created_date` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

2)python腳本

# coding:utf8
import mysql.connector
import time

#############################################################
#從庫主機信息
#############################################################
hosts = ['192.168.245.131','192.168.245.132']
dbuser = 'root'
password = 'root'
port = 3306
#############################################################
#保存數據的主機信息
#############################################################
save_host = '192.168.245.129'
save_dbuser = 'root'
save_password = 'root'
save_port = 3306

query = "show slave status"

for host in hosts:
    try:
        conn_slave = mysql.connector.connect(host=host,port=port,user=dbuser,passwd=password,charset='utf8')
        conn_save = mysql.connector.connect(host=save_host,port=save_port,user=save_dbuser,passwd=save_password,charset='utf8')
        cur_slave = conn_slave.cursor()
        cur_save = conn_save.cursor()
        cur_slave.execute(query)
        results = cur_slave.fetchall()

        master_host = results[0][1]
        if results[0][10]=='Yes' and results[0][11] == 'Yes':
            insert_sql = "insert into a.slave_status(slave_host,master_host,value,created_date) values('%s','%s',2,NOW());" % (host,master_host)
        else:
            insert_sql = "insert into a.slave_status(slave_host,master_host,value,created_date) values('%s','%s',0,NOW());" % (host,master_host)
        cur_save.execute(insert_sql)
        conn_save.commit()
    except Exception as e:
        raise str(e)
    finally:
        cur_save.close()
        cur_slave.close()
        conn_save.close()
        conn_slave.close()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM