使用MySQL-MMM時遇到的一些問題(1)

我們線上DB的高可用部分採用的是官方原版的MySQL-MMM(http://mysql-mmm.org),但在最近幾日出現2次寫VIP自動切換到了備Master節點上(雙Master單寫),其實主Master也是正常的,於是就去MySQL-MMM Monitor節點查看了一下日誌,
# cd /var/log/mysql-mmm
# tail -30 mmm_mond.log

wKioL1S0uzGyiRWlAAJ4YEvfUUw605.jpg

初步看來是因爲存在主從複製延遲,導致了寫VIP切換。查閱了一下官方文檔,在monitor節點,與此相關的參數爲max_backlog,而此參數的默認值爲60,於是我們將其修改300,詳細如下:

# vim /etc/mysql-mmm/mmm_mon.conf

......

<check default>
        check_period  5
        trap_period     10
        timeout            2
        restart_after     10000
        max_backlog   300
</check>

......

然後重啓服務:

# /etc/init.d/mysql-mmm-monitor restart

隨後輸出如下信息:

# cd /var/log/mysql-mmm
# tail -30 mmm_mond.log

wKiom1S0vOjAWlUpAAHj6o_6C6M774.jpg

同時也加了一些簡單監控:

(1)、進程個數監控腳本

# vim /data/scripts/monitor_proc_cnt.sh

#!/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin
 
PROC_NAME=$1
SRV_NAME=$2
PROC_CNT=$3
 
[[ $# -ne 3 ]] && echo "$0 進程名稱 服務名稱 進程數量" && exit 1
 
MONITOR="/usr/local/oms/agent/alarm/BusMonitorAgent"
TOKEN="ha_monitor"
 
TITLE="${PROC_NAME}服務異常監控"
CONTENT="${PROC_NAME}服務進程數存在異常,請及時檢查!"
 
if  [[ `ps aux | grep ${PROC_NAME} | grep -v grep | grep -v $0 | wc -l` -ne ${PROC_CNT} ]]; then
    kill -9 `ps aux | grep ${PROC_NAME} | grep -v grep | grep -v $0 | awk '{print $2}'` >/dev/null 2>&1
    /sbin/service ${SRV_NAME} start >/dev/null 2>&1
    ${MONITOR} -c 2 -f ${TOKEN} -t "${TITLE}" -i "${CONTENT}"
fi

(2)、在線DB的監控腳本

# vim /data/scripts/monitor_db_is_online.sh

#!/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin
 
MONITOR="/usr/local/oms/agent/alarm/BusMonitorAgent"
TOKEN="ha_monitor"
 
TITLE="MySQL-MMM Online異常監控"
CONTENT="處於Online狀態的DB數量與實際DB數量不匹配,請及時確認!"
 
MYSQL_SRV_CNT=`awk '/ping_ips/{print $2}' /etc/mysql-mmm/mmm_mon.conf | sed 's/,/\n/g;/^$/d' | wc -l`
CURRENT_ONLINE_SRV_CNT=`/usr/sbin/mmm_control show | grep ONLINE | wc -l`
 
[[ ${MYSQL_SRV_CNT} -eq ${CURRENT_ONLINE_SRV_CNT} ]] || ${MONITOR} -c 2 -f ${TOKEN} -t "${TITLE}" -i "${CONTENT}"

(3)、crontab信息添加

agent節點:

*/5 * * * * /data/scripts/monitor_proc_cnt.sh mmm_agentd mysql-mmm-agent 2 >/dev/null 2>&1

monitor節點:

*/5 * * * * /data/scripts/monitor_proc_cnt.sh mmm_mond mysql-mmm-monitor 2 >/dev/null 2>&1

*/5 * * * * /data/scripts/monitor_db_is_online.sh >/dev/null 2>&1

也順便排查了一下導致主從複製延遲的問題,並觀察了幾天,沒有再次出現之前的寫VIP切換與報錯日誌。雖然恢復了正常,但總會出現如下信息:

wKioL1S0wc_CY1w8AABs5zu33Hs371.jpg

查閱了一些資料,也沒找到太好的解決辦法,雖然影響不大,但總覺得是個隱患,看來得花點時間硬着頭皮看看perl源碼 j_0066.gif


最近發現大衆點評--盧鈞軼開源了一個修改版本,據說修復了很多BUG,有空可以試試:

https://github.com/cenalulu/mysql-mmm



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章