咱們線上DB的高可用部分採用的是官方原版的MySQL-MMM(http://mysql-mmm.org),但在最近幾日出現2次寫VIP自動切換到了備Master節點上(雙Master單寫),其實主Master也是正常的,因而就去MySQL-MMM Monitor節點查看了一下日誌,
# cd /var/log/mysql-mmm
# tail -30 mmm_mond.logmysql
初步看來是由於存在主從複製延遲,致使了寫VIP切換。查閱了一下官方文檔,在monitor節點,與此相關的參數爲max_backlog,而此參數的默認值爲60,因而咱們將其修改300,詳細以下:git
# vim /etc/mysql-mmm/mmm_mon.conf github
......sql
<check default>
check_period 5
trap_period 10
timeout 2
restart_after 10000
max_backlog 300
</check>vim
......bash
而後重啓服務:
ide
# /etc/init.d/mysql-mmm-monitor restartspa
隨後輸出以下信息:
rest
# cd /var/log/mysql-mmm
# tail -30 mmm_mond.log日誌
同時也加了一些簡單監控:
(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切換與報錯日誌。雖然恢復了正常,但總會出現以下信息:
查閱了一些資料,也沒找到太好的解決辦法,雖然影響不大,但總以爲是個隱患,看來得花點時間硬着頭皮看看perl源碼
最近發現大衆點評--盧鈞軼開源了一個修改版本,聽說修復了不少BUG,有空能夠試試: