1. 程式人生 > >新增mysql伺服器健康檢查埠服務

新增mysql伺服器健康檢查埠服務

一、安裝xinetd服務

yum -y install xinetd

二、編寫新增checkmysql 服務

[[email protected]_mooc86 ~]# vim /etc/xinetd.d/checkmysql 


# default: on
# description: The telnet server serves telnet sessions; it uses \
#       unencrypted username/password pairs for authentication.
service checkmysql
{
        flags           = REUSE
        socket_type     = stream
        wait            = no
        user            = root
        server          = /root/mysqlchk_status.sh
        log_on_failure  += USERID
        disable         = no
        port            =9888
        bind = 192.168.0.1
        only_from = 192.168.0..0/24
}

三、編輯/etc/services ,確保埠對應

echo "checkmysql          9888/tcp" >>/etc/services 

四、重啟服務/etc/init.d/xinetd restart

這個功能配合haproxy可以對從庫資料庫進行健康檢查,比如從庫滯後,查詢緩慢,從庫同步故障等問題,自動摘除有問題的從庫

[[email protected]_test1 ~]# telnet 10.0.20.3 9888
Trying 10.0.20.3...
Connected to 10.0.20.3.
Escape character is '^]'.
mysql: [Warning] Using a password on the command line interface can be insecure.


HTTP/1.1 200 OK


Connection closed by foreign host.

標紅的影響了HTTP/1.1 200 OK的完全匹配,導致這個從庫摘除掉,為了避免mysql: [Warning] Using a password on the command line interface can be insecure.的出現

採用python處理,寫指令碼

yum install MySQL-python

 import MySQLdb

Python中MySQLdb的connect的用法

MySQLdb模組是python連線mysql資料庫的一個模組,在操作mysql資料庫是經常使用,在連線資料庫時connect是最常用的一種方法,這個方法有好多引數,總結了一下,主要有一下幾種:

  connect()方法用於連線資料庫,返回一個數據庫連線物件。如果要連線一個位於www.gyyx.com伺服器上名為mysql的MySQL資料庫,連線串可以這樣寫:

  db = MySQLdb.connect(host="www.gyyx.com",user="user",passwd="xxx",db="mysql" )

  connect()的引數列表如下:

  host,連線的資料庫伺服器主機名,預設為本地主機(localhost)。

  user,連線資料庫的使用者名稱,預設為當前使用者。

  passwd,連線密碼,沒有預設值。

  db,連線的資料庫名,沒有預設值。

  conv,將文字對映到Python型別的字典。預設為MySQLdb.converters.conversions

  cursorclass,cursor()使用的種類,預設值為MySQLdb.cursors.Cursor。

  compress,啟用協議壓縮功能。

  named_pipe,在windows中,與一個命名管道相連線。

  init_command,一旦連線建立,就為資料庫伺服器指定一條語句來執行。

  read_default_file,使用指定的MySQL配置檔案。

  read_default_group,讀取的預設組。

  unix_socket,在unix中,連線使用的套接字,預設使用TCP。

  port,指定資料庫伺服器的連線埠,預設是3306。

  連線物件的db.close()方法可關閉資料庫連線,並釋放相關資源。

  連線物件的db.cursor([cursorClass])方法返回一個指標物件,用於訪問和操作資料庫中的資料。

  連線物件的db.begin()方法用於開始一個事務,如果資料庫的AUTOCOMMIT已經開啟就關閉它,直到事務呼叫commit()和rollback()結束。

  連線物件的db.commit()和db.rollback()方法分別表示事務提交和回退。

  指標物件的cursor.close()方法關閉指標並釋放相關資源。

  指標物件的cursor.execute(query[,parameters])方法執行資料庫查詢。

  指標物件的cursor.fetchall()可取出指標結果集中的所有行,返回的結果集一個元組(tuples)。

  指標物件的cursor.fetchmany([size=cursor.arraysize])從查詢結果集中取出多行,我們可利用可選的引數指定取出的行數。

指標物件的cursor.fetchone()從查詢結果集中返回下一行。

  指標物件的cursor.arraysize屬性指定由cursor.fetchmany()方法返回行的數目,影響fetchall()的效能,預設值為1。

  指標物件的cursor.rowcount屬性指出上次查詢或更新所發生行數。-1表示還沒開始查詢或沒有查詢到資料。

  下面是一個連線mysql的例子:

  def mysql_conn():

  try:

  conn = MySQLdb.connect(host = '192.168.8.100',user = 'mysql',passwd = '123456',connect_timeout=10)

  cursor = conn.cursor()

  sql = "SELECT COUNT(1) FROM mysql.user"

  cursor.execute(sql)

  alldata = cursor.fetchall()

  count = alldata[0][0]

  cursor.close()

  conn.close()

  print count

  except Exception,e:

  print "Can not Connect to mysql server"

-----------------------------------------------------------------------------------------------------------

python指令碼如下:

[[email protected]_test3 ~]# cat /root/mysqlpython.py 
#!/usr/bin/env python
#encoding:utf-8
import MySQLdb
import sys,os
import random
import time
db1_ip="10.0.20.1"
db2_ip="10.0.20.3"
randnum01= random.randint(1, 20000)
randid01= random.randint(1, 30)
slaptime=4
#print randnum01
#print randid01


conn = MySQLdb.connect(host=db1_ip,user='root',passwd='123456',port=38141,charset='utf8')
conn.select_db('t11')
cur = conn.cursor()
sql="update sync3 set value="+str(randnum01)+" where id="+str(randid01)
#print sql
cur.execute(sql)
conn.commit()
cur.close()
conn.close()


#sleep 3s
time.sleep(slaptime)


conn_read = MySQLdb.connect(host=db2_ip,user='root',passwd='123456',port=38141,charset='utf8')
conn_read.select_db('t11')
cur_read = conn_read.cursor()
sql_read="select value from sync3 where id="+str(randid01)
#print sql_read
cur_read.execute(sql_read)
conn_read.commit()
for row in cur_read.fetchall():
  fname = row[0]
  if fname==randnum01:
     print "HTTP/1.1 200 OK\r\n"
  else:
     print "HTTP/1.1 503 Service Unavailable\r\n"
cur_read.close()
conn_read.close()

相關推薦

新增mysql伺服器健康檢查服務

一、安裝xinetd服務 yum -y install xinetd 二、編寫新增checkmysql 服務 [[email protected]_mooc86 ~]# vim /etc/xinetd.d/checkmysql  # default: on #

Kubernetes之健康檢查服務依賴處理_Kubernetes中文社群

【編者的話】對線上業務來說,保證服務的正常穩定是重中之重,對故障服務的及時處理避免影響業務以及快速恢復一直是開發運維的難點。Kubernetes提供了健康檢查服務,對於檢測到故障服務會被及時自動下線,以及通過重啟服務的方式使服務自動恢復。而對於服務依賴,無論資源描述檔案是pod, rc或dep

Kubernetes之健康檢查服務依賴處理

【編者的話】對線上業務來說,保證服務的正常穩定是重中之重,對故障服務的及時處理避免影響業務以及快速恢復一直是開發運維的難點。Kubernetes提供了健康檢查服務,對於檢測到故障服務會被及時自動下線,以及通過重啟服務的方式使服務自動恢復。而對於服務依賴,無論資源描述檔案是

systemctl中新增mysql服務

由於mysql的版本更新,許多術語有了新含義,所以需要特別指出,mysqld.service 等價於mysqld vim /usr/lib/systemd/system/mysqld.service [Unit]Description=MySQL Community ServerAfter=network

Zabbix批量新增linux伺服器監控

我們在監控生產環境的服務的時候,通常需要對多個埠進行監控,如果我們手動的一個一個的新增,這回讓我們崩潰,所以批量新增埠監控是一個非常常見的需求,當然這對於zabbix來說肯定是支援的,需要使用zabbix的Discovery功能來實現,下面就給大家分享一下批量新增埠的佔用。 第一:自動掃描埠

關於使用phpstudy搭建本地伺服器,80被系統服務佔用,不能關掉

最近我在使用apache+php+mysql搭建本地伺服器,使網站能在本地執行起來。由於php的環境搭建比較複雜,於是我就想使用phpstudy這個整合環境的軟體。這個軟體蠻好用的,唯一的缺點就是如果預設的埠被系統程序佔用後,不能強制開啟。請原諒我一定要使用預設埠,因為我覺

在雲伺服器上搭建tomcat服務訪問80問題解決辦法

問題描述: 自己購買的騰訊雲,安裝的 ubuntu14.10 系統,安裝完jdk、tomcat後,由於想通過域名直接訪問tomcat,即使用www.ifkirin.com代替www.ifkirin.

關於mysql伺服器3306不能遠端連線的解決

問題:本機可以通過3306埠連線mysql伺服器,但遠端不行。 1、網路檢測    1)ping主機可以;    2)telnet 主機3306埠不可以;      telnet 主機22埠可以;    說明與本機網路沒有關係; 2、埠檢測    1)netstat -nt

Tengine2.2.2 健康檢查http1.1 伺服器報錯400 Bad Request 問題分析

Tengine2.2.2官方健康檢查示例 check interval=3000 rise=2 fall=5 timeout=1000 type=http; check_keepalive_requests 100; check_http_send "HEAD / HTTP

禁止一個IP或者一個IP段訪問伺服器服務

80埠 ,規則插入到前面 sudo iptables -t filter -I INPUT -s 192.168.2.0/24 -p tcp –dport http -j DROP 21埠,規則插入到前面 sudo iptables -t filter

Android 新增系統串列服務步驟

系統服務實際上是呼叫了遠端Bind物件進行操作 1:新增aidl檔案到 framworks/base/core/java/android/hardware/ISerialManager.aidl//這個檔案是需要自己現實的 2:編譯指令碼中新增申明   framework

解決mysql伺服器3306不能遠端連線

問題:本機可以通過3306埠連線mysql伺服器,但遠端不行。1、網路檢測 1)ping主機可以; 2)telnet 主機3306埠不可以; telnet 主機22埠可以; 說明與本機網路沒有關係;2、埠檢測1)netstat -ntpl |grep 3306

通過ssh將mysql伺服器對映到本機

一臺mysql伺服器192.168.1.108因安全問題,未開啟遠端資料訪問,可以通過ssh到服務埠對映到另一臺伺服器192.168.1.188,作為本機埠訪問。 1、在192.168.1.108伺服器上: ssh -R 3306:localhost:3306 [emai

阿里雲伺服器如何開啟MySQL Error2003解決辦法

此處以安裝配置MySQL之後仍舊無法連線為例,出現”ERROR 2003(HY000): Can’t connect to MySQL server on ‘localhost’ (10061)”,開啟

OpenShift新增應用健康檢查功能

## 什麼是健康檢查? 對於部署成功的應用來說,通過訪問介面、執行特定命令等方式判斷應用是否存活、正常的方式稱為健康檢查。 在 OpenShift 或 Kubernetes 中,健康檢查都有兩個探針,分別是 就緒探針(Readiness Probe) 與 存活探針(Liveness Probe): -

Nacos服務心跳和健康檢查原始碼介紹

服務心跳 Nacos Client會維護一個定時任務通過持續呼叫服務端的介面更新心跳時間,保證自己處於存活狀態,防止服務端將服務剔除,Nacos預設5秒向服務端傳送一次,通過請求服務端介面/instance/beat傳送心跳。客戶端服務在註冊服務的時候會增加一個心跳的任務,如下圖所示: 首先看下BeatI

DirectX 安裝報錯: 不能信任一個安裝所需的壓縮文件,請檢查加密服務是否啟用並且cabinet文件證書是否有效

建議 長時間 頁面 檢查 ould get 浪費 images 跳轉 DirectX 安裝報錯 不能信任一個安裝所需的壓縮文件,請檢查加密服務是否啟用並且cabinet文件證書是否有效 是直播軟件open broadcaster software,這個軟件安裝的時候提示“y

Active Directory 健康檢查

active directory 安全檢查 評估 adstActive Directory是企業後端最重要的基礎架構應用,沒有之一。AD的安全與可靠幾乎影響所有應用。除了符合微軟最佳實踐的設計以及標準化的運維之外,定期執行一次健康檢查,並且在重大項目啟動前也進行一次健康檢查將會很好的保障整個活動目錄持續可靠的

遠程計算機或設備將不接受連接,檢查代理服務器配置

打開 解決 取消 -- 使用 電腦 配置 設置 ins 解決辦法一:打開IE瀏覽器---工具--internet選項--連接選項卡--選擇默認的網絡連接,點設置---去除“對此連接使用代理服務器”的勾選(點擊局域網設置:取消為LAN適用代理服務器),然後點確定,重啟IE瀏覽

nginx對後端節點的健康檢查

nginx 檢查最近梳理了下手頭的業務,發現nginx層配有幾種健康檢查方式,在這裏做個總結,記錄下nginx做負載均衡時對後端節點的健康檢查方式:1、ngx_http_proxy_module 模塊中的下面三個指令(nginx自帶模塊) proxy_connect_timeout 60s