程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MYSQL DBA需要做的事兒

MYSQL DBA需要做的事兒

編輯:MySQL綜合教程

http://www.fastcloud.cn/zhishi/zhishi387.html

很早前就想寫篇文章介紹一下互聯網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 平台等;當然在部署這些模塊的時候,我們時時刻刻記得,所有的模塊都是會變的,我們需要不停的學習,不停的改進,才會打造宕機時間更低的數據庫服務。

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved