MySQL怎麼樣監控主從同步情況

來源:互聯網
上載者:User

MySQL同步功能由3個線程(master上1個,slave上2個)來實現,簡單的說就是:master發送日誌一個,slave接收日誌一個,slave作業記錄一個。

首先,我們解釋一下 show slave status  中重要的幾個參數:
Slave_IO_Running: I/O線程是否被啟動並成功地串連到主伺服器上。

Slave_SQL_Running: SQL線程是否被啟動。

Seconds_Behind_Master:

本欄位是從屬伺服器“落後”多少的一個指示。當從屬SQL線程正在運行時(處理更新),本欄位為在主伺服器上由此線程執行的最近的一個事件的時間標記開始,已經過的秒數。當此線程被從屬伺服器I/O線程趕上,並進入閑置狀態,等待來自I/O線程的更多的事件時,本欄位為零。總之,本欄位測量從屬伺服器SQL線程和從屬伺服器I/O線程之間的時間差距,單位以秒計。

如何監控從伺服器是否正常運行呢?

1. 手動執行SHELL指令碼

 代碼如下 複製代碼
show slave statusG


查看上面所說的3個參數是否正常運行。

2. Percona Toolkit

Percona Toolkit 提供了一些MySQL資料庫相關的工具,可以很好的管理MySQL資料庫。
Percona工具包可以去這裡下載:http://www.percona.com/software/percona-toolkit

pt-heartbeat: 監控MySQL從伺服器的延時時間。
pt-slave-restart: 管理MySQL從伺服器重啟。
pt-table-checksum: 檢查主從同步資料的一致性,比如遇到複製錯誤,我們執行了skip error操作之後,檢查一下資料還是很有必要的。不過這個工具需要提前設定一下,安裝相應的checksum表,請參閱相關資料。

3. 第三方工具

MySQL Enterprise Monitor,MySQL企業版監控工具。
MONyog – MySQL Monior and Advisor,MONyog大家都不陌生,windows下比較好用的MySQLGUI提供者,也有相關MySQL監控工具。

 




4. Nagios 以及Zabbix 的相關外掛程式。

Nagios相關外掛程式還是很豐富的,大家可以找到相關MySQL Slave的監控工具。

最後,這裡給大家一個開源的MySQL Slave的監控指令碼,實用cronjob或者其他相關工具就可以輕易的設定自己的監控工具。

比如我們實用Jenkins+shell指令碼,做失敗通知即可迅速的搭建一個簡單的MySQL監控工具。

MySQL Slave 監控指令碼:

 代碼如下 複製代碼


#!/bin/bash
# (C) 2012 - Vincent van Scherpenseel, SYN-ACK.org
 
### VARIABLES ###
SERVER=`hostname`
SECONDS_BEHIND_MASTER=`/usr/bin/mysql -e "SHOW SLAVE STATUSG"| grep "Seconds_Behind_Master" | awk -F": " {' print $2 '}`
SENTFILE_BROKEN=/tmp/mysql_slaverep_broken.sent
SENTFILE_BEHIND=/tmp/mysql_slaverep_behind.sent
 
 
### CHECK FOR REPLICATION BREAK ###
if [ "$SECONDS_BEHIND_MASTER" == "NULL" ]; then
        # Slave replication is broken
 
        if [ ! -f $SENTFILE_BROKEN ]; then
                # This has not been reported before
                echo "Slave replication broken on $SERVER"
                touch $SENTFILE_BROKEN
        fi
else
        # Slave replication is not broken
 
        if [ -f $SENTFILE_BROKEN ]; then
                # It was broken before which was reported. Clear that state
                echo "Slave replication has been restored on $SERVER"
                rm $SENTFILE_BROKEN
        fi
 
        ### CHECK FOR REPLICATION DELAY ###
        if [ "$SECONDS_BEHIND_MASTER" -gt "60" ]; then
                # Slave replication is delayed
 
                if [ ! -f $SENTFILE_BEHIND ]; then
                        # This has not been reported before
                        echo "Slave replication is $SECONDS_BEHIND_MASTER seconds behind master on $SERVER"
                        touch $SENTFILE_BEHIND
                fi
        else
                # Slave replication is not delayed
 
                if [ -f $SENTFILE_BEHIND ]; then
                        # It was delayed before which was reported. Clear that state
                        echo "Slave replication delay has been recovered and is now $SECONDS_BEHIND_MASTER seconds behind master on $SERVER"
                        rm $SENTFILE_BEHIND
                fi
        fi
 
fi



推薦閱讀:添加新資料庫到MySQL主從複製教程解問題解答

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.