互聯網BDA都需要做些什么
很早前就想寫篇文章介紹一下互聯網DBA需要干的一些事情,但苦于沒有時間,忙于平臺建設,最近,各個模塊都初具規(guī)模,故有時間靜下心來,介紹一下。
眾所周知,互聯網DBA與傳統(tǒng)行業(yè)DBA有很大的不同,那就是管理的機器多,新技術更新快,面對的開發(fā)多、網絡環(huán)境復雜、要求7*24待機;這樣就 導致互聯網DBA的工作在傳統(tǒng)DBA工作之上,增加了更多的復雜性,我們必須考慮如何大批量部署,如何集中化監(jiān)控、如何解決單點故障而保障7*24,而為 了做到這些,不是靠堆人力,我們必須有一個完整的平臺作為支撐,那么數據庫平臺到底要建成什么樣子呢?
1、強有力的監(jiān)控系統(tǒng)(監(jiān)+控):
監(jiān)控是我們的眼睛,我們不可能7*24個小時盯著我們的DB,所以,我們需要監(jiān)控系統(tǒng)來幫我們盯著,一旦異常,監(jiān)控不僅僅通知我們,而必須要有控 制,例如:MySQL 從庫宕機了我們通過監(jiān)控自動讓其下線;從庫同步狀態(tài)失效了,可以自動修復同步等;并且,隨著機器的增加、實例daemon的增加,我們會發(fā)現我們的手機報 警會急劇增加,為了我們自己晚上能睡一個安穩(wěn)覺,我們怎么去降低我們的報警,例如:哪些該短信,哪些該郵件;所有機器的磁盤空間報警是否可以整合后在報 呢?這就是我們監(jiān)控系統(tǒng)必須考慮的,
2、自動審核系統(tǒng):
開發(fā)很多,項目很多,但是開發(fā)的習慣都不一致,可能會導致我們審核表結構的時頭都看大了,為了保證線上的統(tǒng)一,為了保證不被開發(fā)的神奇SQL搞傷, 不被N多的項目審核壓垮,我們必須有一個自動建表審核系統(tǒng),我們定義一些規(guī)則,如:不能用預留字段、主鍵必須為INT,BIGINT等,然后開發(fā)填寫準備 上線的表結構,通過系統(tǒng)自動審核,審核通過的,自動上線,審核不通過的,給出建議;
3、慢日志分析系統(tǒng):
隨著自動審核系統(tǒng)的上線,我們可能會漏掉一些索引使用不太好的SQL,那么我們就需要慢日志分系統(tǒng)幫助我們,在設計該系統(tǒng)時候,我們需要考慮是實時 抓取慢日志,還是每天定期推送慢日志、慢日志抓取后是立即推送給開發(fā)還是自動分析完以后給出建議給開發(fā)、慢日志還要考慮一些SQL是否需要過濾,因為他可 能是每天的統(tǒng)計,當然這些都是自動的,設計完后,不需要人工介入;
4、統(tǒng)計系統(tǒng):
我們必須清晰的知道線上DB的整體運行情況,訪問量的變化、寫入量的變化、圖是死的,他不會欺騙任何人;我們能通過訪問統(tǒng)計知道是否有惡意訪問、是否需要優(yōu)化,是否需要增加節(jié)點抗住更大的壓力;
5、備份系統(tǒng):
不管你信不信,我是信了,冷備份總是我們的救命草,不管我們做的多么好,故障總會有,drop database也會發(fā)生,所以,一個完整的備份系統(tǒng),勢在必行,我們的備份是否正常,備份的數據是否能恢復,恢復需要多少時間,都是我們備份系統(tǒng)需要考慮的;
6、管理系統(tǒng):
我們機器少則上百臺,多則可能好幾千,如何清晰知道每臺機器跑了多少daemon,DB Proxy下面有哪些機器,如何能對主庫機器、從庫機器進行腳本分別分發(fā)等;都需要管理系統(tǒng)來幫我們完成;
7、中間層:
是把雙刃劍,他能給我們帶來好的擴展,例如:動態(tài)添加從庫、主庫失效檢測等;但是他帶來了DBA管理的復雜性、帶來了更多的故障點、帶來了更多的 bug、如果DB Proxy性能不好的話,那就更糟了,并且為了解決client透明,我們必須考慮很多,例如:連接保持,如:字符集、last_insert_id、 use dbname等;如果我們有人力開發(fā)維護,那么我相信Proxy會帶給我們歡樂;
以上各個系統(tǒng)都是為我們管理DB提供支持,如果沒有這些系統(tǒng)支持,那么數據庫管理就談不上平臺,談不上批量管理,談不上承載百億訪問量,百T數據量 的數據庫;當然在涉及這樣的系統(tǒng)時候,我們也要考慮新技術的引進,例如:如果能快速的打造NoSQL 平臺等;當然在部署這些模塊的時候,我們時時刻刻記得,所有的模塊都是會變的,我們需要不停的學習,不停的改進,才會打造宕機時間更低的數據庫服務。
后續(xù)會慢慢分享出,我們這些模塊是如何做的,及其進度如何。
文章地址互聯網DBA需要做那些事
文章轉載自:開源中國社區(qū) [http://www.oschina.net]