天天看點

故障的機器修好後重新開機,狂拉主庫binlog,導緻網絡問題,造成一定影響

本文主要記錄一次簡單的、典型的故障,發生問題的原因很簡單,這個問題發生也很簡單,各位同學一定要注意,一不留神就會對主庫造成影響。 

歡迎轉載,請注明作者、出處。

作者:張正

blog:http://space.itpub.net/26355921 

QQ:176036317

如有疑問,歡迎聯系。

問題簡述:

一周前,有一台mysql伺服器發生硬體故障,停機了。我們給專門負責這塊的同學送出了申請,他們負責去報修這台伺服器。今天這台伺服器修好後,他們将其開機啟動。伺服器上的4個mysql執行個體在開機後自動啟動,開始拉主庫的binlog。由于這台伺服器停機時間比較久,日志丢的比較多,狂拉主庫的binlog,導緻主庫網絡出現問題。

<b>現象:</b>

首先,我們完全沒有意識到是因為一台壞掉的伺服器重新開機拉主庫binlog導緻的,因為我們壓根不知道 這台伺服器什麼情況,隻知道1周前,我們報修了1台伺服器。具體什麼情況,有沒有修好,有沒有開機,我們完全不知道。

在這樣的情況下,忽然聽到網絡的同學說mysql有一台機器網絡流量過大,導緻業務感覺很慢,總共持續了17分鐘。其實這樣,是沒有多大頭緒的。

<b>排查:</b>

檢視processlist、全日志、慢日志都沒有發現有什麼問題。

檢視監控,發現那段時間的伺服器的讀IO驟然升高。

通過檢視processlist的曆史記錄,發現有一段時間,主從複制的使用者 狀态是 waiting for net,通過其IP發現該伺服器是1周前壞掉的一個slave伺服器。

<b>結論:</b>

這台伺服器上有4個執行個體,伺服器啟動後,mysql執行個體自動啟動,開始向主庫上拉binlog,每個主庫每天的binlog量大概6G,4個執行個體1個星期大概160多G的binlog。

<b>問題:</b>

1、壞掉的伺服器什麼時候修好,什麼時候開機,我們不可控,也不知道,也沒有關注

2、這種案例其實是<b>很簡單、很典型</b>的可能造成影響或故障的case,我們提前沒有對這個現象有警覺,雖然知道這是個很容易出現的問題,但是在我們的case中,完全沒有這方面的意識。是以導緻該事件發生

3、對于網絡流量這塊,缺乏有效監控

<b>解決方法:</b>

1、所有伺服器,取消開機自動啟動mysql,伺服器開機後,人為啟動執行個體,停slave。(這樣,如果伺服器很多,可能過于麻煩,暫且先這樣記錄下來,總比造成影響強)

2、意識到該問題,将該問題納入避免問題的<b>常識庫</b>或<b>工作手冊</b>中去。

繼續閱讀