互聯網 DBA 需要做那些事

發佈時間:2013-04-28 09:28:45   來源:PHP100論壇

很早前就想寫篇文章介紹一下互聯網DBA需要乾的一些事情,但苦於沒有時間,忙於平臺建設,最近,各個模塊都初具規模,故有時間靜下心來,介紹一下。

衆所周知,互聯網DBA與傳統行業DBA有很大的不同,那就是管理的機器多,新技術更新快,面對的開發多、網絡環境複雜、要求7*24待機;這樣就 導致互聯網DBA的工作在傳統DBA工作之上,增加了更多的複雜性,我們必須考慮如何大批量部署,如何集中化監控、如何解決單點故障而保障7*24,而爲 了做到這些,不是靠堆人力,我們必須有一個完整的平臺作爲支撐,那麼數據庫平臺到底要建成什麼樣子呢?

1、強有力的監控系統(監+控):

監控是我們的眼睛,我們不可能7*24個小時盯着我們的DB,所以,我們需要監控系統來幫我們盯着,一旦異常,監控不僅僅通知我們,而必須要有控 制,例如:MySQL 從庫宕機了我們通過監控自動讓其下線;從庫同步狀態失效了,可以自動修復同步等;並且,隨着機器的增加、實例daemon的增加,我們會發現我們的手機報 警會急劇增加,爲了我們自己晚上能睡一個安穩覺,我們怎麼去降低我們的報警,例如:哪些該短信,哪些該郵件;所有機器的磁盤空間報警是否可以整合後在報 呢?這就是我們監控系統必須考慮的,

2、自動審覈系統:

開發很多,項目很多,但是開發的習慣都不一致,可能會導致我們審覈表結構的時頭都看大了,爲了保證線上的統一,爲了保證不被開發的神奇SQL搞傷, 不被N多的項目審覈壓垮,我們必須有一個自動建表審覈系統,我們定義一些規則,如:不能用預留字段、主鍵必須爲INT,BIGINT等,然後開發填寫準備 上線的表結構,通過系統自動審覈,審覈通過的,自動上線,審覈不通過的,給出建議;

3、慢日誌分析系統:

隨着自動審覈系統的上線,我們可能會漏掉一些索引使用不太好的SQL,那麼我們就需要慢日誌分系統幫助我們,在設計該系統時候,我們需要考慮是實時 抓取慢日誌,還是每天定期推送慢日誌、慢日誌抓取後是立即推送給開發還是自動分析完以後給出建議給開發、慢日誌還要考慮一些SQL是否需要過濾,因爲他可 能是每天的統計,當然這些都是自動的,設計完後,不需要人工介入;

4、統計系統:

我們必須清晰的知道線上DB的整體運行情況,訪問量的變化、寫入量的變化、圖是死的,他不會欺騙任何人;我們能通過訪問統計知道是否有惡意訪問、是否需要優化,是否需要增加節點抗住更大的壓力;

5、備份系統:

不管你信不信,我是信了,冷備份總是我們的救命草,不管我們做的多麼好,故障總會有,drop database也會發生,所以,一個完整的備份系統,勢在必行,我們的備份是否正常,備份的數據是否能恢復,恢復需要多少時間,都是我們備份系統需要考慮的;

6、管理系統:

我們機器少則上百臺,多則可能好幾千,如何清晰知道每臺機器跑了多少daemon,DB Proxy下面有哪些機器,如何能對主庫機器、從庫機器進行腳本分別分發等;都需要管理系統來幫我們完成;

7、中間層:

是把雙刃劍,他能給我們帶來好的擴展,例如:動態添加從庫、主庫失效檢測等;但是他帶來了DBA管理的複雜性、帶來了更多的故障點、帶來了更多的 bug、如果DB Proxy性能不好的話,那就更糟了,並且爲了解決client透明,我們必須考慮很多,例如:連接保持,如:字符集、last_insert_id、 use dbname等;如果我們有人力開發維護,那麼我相信Proxy會帶給我們歡樂;

以上各個系統都是爲我們管理DB提供支持,如果沒有這些系統支持,那麼數據庫管理就談不上平臺,談不上批量管理,談不上承載百億訪問量,百T數據量 的數據庫;當然在涉及這樣的系統時候,我們也要考慮新技術的引進,例如:如果能快速的打造NoSQL 平臺等;當然在部署這些模塊的時候,我們時時刻刻記得,所有的模塊都是會變的,我們需要不停的學習,不停的改進,纔會打造宕機時間更低的數據庫服務。

後續會慢慢分享出,我們這些模塊是如何做的,及其進度如何。


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