我們在搭建MySQL數據庫服務器的開始階段就合理的規劃,可以避免以後的很多問題的產生,大大節省我們的時間和精力,在一定幅度上降低成本。當然,這會涉及很多方面。比如機器的選型、業務評估和系統規劃等。
所有的設計都是跟具體的需求相關的,我們首先要做的就是對業務進行整體評估。我在下面分享一個具體的例子。
一、業務需求
要求 | 指標 |
響應時間 | 查詢和操作請求ms級別返回 |
數據總量 | 1年內大約有500GB的數據量 |
每秒請求量 | 每秒有3W次請求 |
讀寫比 | 讀寫比是1:1 |
重要程度 | 核心業務,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次爲update和delete操作。由於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