MySQL數據庫服務器整體規劃(方法論)

        

        我們在搭建MySQL數據庫服務器的開始階段就合理的規劃,可以避免以後的很多問題的產生,大大節省我們的時間和精力,在一定幅度上降低成本。當然,這會涉及很多方面。比如機器的選型、業務評估和系統規劃等。

       所有的設計都是跟具體的需求相關的,我們首先要做的就是對業務進行整體評估。我在下面分享一個具體的例子。

一、業務需求

要求指標
響應時間查詢和操作請求ms級別返回
數據總量1年內大約有500GB的數據量
每秒請求量每秒有3W次請求
讀寫比讀寫比是11
重要程度核心業務,P1級別故障
其他說明數據具有時效性,歷史數據訪問較少,一般處理最近7天內的數據,數據總體長度約爲1K

二、業務評估

 step1:1年的數據量大約是500GB

結果:每秒產生的數據量爲500*1024*1024/(365*24*60*60)=17KB

 step2:每秒3W次請求;讀寫比是1:1

結果:每秒的讀請求是15000次;每秒的寫請求是15000次。

 step3:記錄的長度大約爲1KB

結果:根據step1得出的結果,每秒insert的數據寫入大約爲17KB;根據step2得出的結果,每秒寫入的請求爲15000次,可知14083次爲updatedelete操作。由於MySQL寫入操作按照頁來處理,頁大小爲16KB,假設每次操作的頁都不相同,那麼每秒寫操作的數量爲16KB*15000=234MB。每秒讀操作的數量爲16KB*15000=234MB

step4:處理最近7天的數據

結果:熱數據量爲:(500/365)*7=21GB

step5:操作ms級別返回

   結果:操作ms級別返回,並且讀寫基本平衡。需要儘可能多的將數據加載到內存。按照內存命中率接近100%計算的話,那麼innodb_buffer大約需要21GB,而其它的內存大約需要1~2GB,因此內存超配大約爲32GB。按照超配原則,寫帶寬(wBPS)限制爲250MB/s。讀帶寬(rBPS)限制爲250MB/s
   

   三、硬盤選擇(HDD vs SSD)

      HDD類型的硬盤更善於處理一些順序讀寫的內容,而SSD硬盤不管是順序還是隨機的性能都有遠遠優於HDD的硬盤,但是SSD的硬盤價格比較昂貴。因此,我們可以通過合理的分配,降低整體擁有的成本。

         例如,對於一些日誌文件,這些日誌文件主要是順序IO,我們可以把這些文件放到HDD上,可以考慮使用RAID5級別,提高日誌系統的容錯能力。對於數據文件,我們可以考慮放到SSD上,使用RAID10提高容錯能力。

    

   四、機型測試

         性能對比測試:對不同硬件設備在壓力測試下數據庫表現性能指標。對於硬件性能做出整體的評估。

         穩定性測試:沒有抖動現象,可以持續穩定的提供服務。

         掉電保護測試:這個環節挺麻煩,需要系統工程師的支持。

         內存異常測試:測試內存是否容易出現問題,能否對業務提供穩定支持。

         此外還有IO設備和壞盤重構。

         經過一系列的測試,我們可以選出2~3種候選機型,我們應當儘量避免應用和設備綁定,防止單個機型缺貨,供應不足影響業務。


   五、成本評估

         通過前面的一系列的準備工作,我們可以選出候選的機型,考慮我們的使用成本。這包括:

             設備成本

             運維成本

             功耗成本

         特別注意:我們雖然有的時候單機使用成本雖然會上升,但是整體的使用成本卻下降了。這是因爲我們提升了單個機器的性能,可以減少機器的數目。降低運維和功耗的成本,甚至也降低了整體設備的成本。

   

   六、文件系統規劃

             MySQL數據庫的特點:

                   ——單數據目錄(單個實例不能指定多個數據庫)

                   ——混合讀寫(日誌和數據的讀寫方式是不一樣的)

                   ——請求隨機

         文件系統劃分:

     /dev/sda1                /boot

                   /dev/sda2                /

                   /dev/sda3                /home

                   /dev/sda4                /tmp

                   /dev/sdb1               /data

                   /dev/sdc1                /log

         根據使用經驗,建議IO調度策略爲deadline的方式:

         #echo      deadline  >    /sys/block/sd{b,c}/queue/scheduler

         MySQL數據庫日誌文件是順序讀寫的,建議放在普通的SSD硬盤。

                   ——binlog日誌文件、error日誌文件、slow日誌文件可以存放在/log日誌目錄中

                   ——tmp文件指定爲系統的目錄/tmp

                   ——其他所有目錄指定爲數據目錄/data

         注意:雖然日誌文件是隨機讀寫的,但是由於把幾個日誌文件都放到一個分區,還是可能產生隨機化讀寫的現象。

 

參考資料:

Inexpensive SSDs for Database Workloads

http://www.percona.com/blog/2013/10/03/inexpensive-ssds-database-workloads/

SSD vs HDD: which is best?

http://www.techradar.com/news/storage/computing-components/ssd-vs-hdd-which-is-best-936111

Solid State Drive vs Hard Disk Drive Price andPerformance Study

http://www.dell.com/downloads/global/products/pvaul/en/ssd_vs_hdd_price_and_performance_study.pdf

SSD vs HDD

http://www.storagereview.com/ssd_vs_hdd

 


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