這里主要記錄工作中應用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()