MySQL單機多實例方案,是指在一臺物理的PC服務器上運行多個MySQL數據庫實例,爲何要這樣作?這樣作的好處是什麼?
1.存儲技術飛速發展,IO再也不是瓶頸
普通PC服務器的CPU與IO資源不均衡,由於磁盤的IO能力很是有限,爲了知足應用的須要,每每須要配置大量的服務器,這樣就形成CPU資源的大量浪 費。可是,Flash存儲技術的出現改變了這一切,單機的IO能力再也不是瓶頸,能夠在單機運行多個MySQL實例提高CPU利用率。
2.MySQL對多核CPU利用率低
MySQL對多核CPU的利用率不高,一直是個問題,5.1版本之前的MySQL,當CPU超過4個核時,性能沒法線性擴展。雖然MySQL後續版本一直 在改進這個問題,包括Innodb plugin和Percona XtraDB都對多核CPU的利用率改進了不少,可是依然沒法實現性能隨着CPU core的增長而提高。咱們如今經常使用的雙路至強服務器,單顆CPU有4-8個core,在操做系統上能夠看到16-32 CPU(每一個core有兩個線程),四路服務器能夠達到64 core甚至更多,因此提高MySQL對於多核CPU的利用率是提高性能的重要手段。下圖是Percona的一份測試數據: 數據庫
3.NUMA對MySQL性能的影響
咱們如今使用的PC服務器都是NUMA架構的,下圖是Intel 5600 CPU的架構: 服務器
NUMA的內存分配策略有四種:
1.缺省(default):老是在本地節點分配(分配在當前進程運行的節點上);
2.綁定(bind):強制分配到指定節點上;
3.交叉(interleave):在全部節點或者指定的節點上交織分配;
4.優先(preferred):在指定節點上分配,失敗則在其餘節點上分配。
由於NUMA默認的內存分配策略是優先在進程所在CPU的本地內存中分配,會致使CPU節點之間內存分配不均衡,當某個CPU節點的內存不足時,會致使swap產生,而不是從遠程節點分配內存。這就是所謂的swap insanity現象。
MySQL採用了線程模式,對於NUMA特性的支持並很差,若是單機只運行一個MySQL實例,咱們能夠選擇關閉NUMA,關閉的方法有三種:1.硬件 層,在BIOS中設置關閉;2.OS內核,啓動時設置numa=off;3.能夠用numactl命令將內存分配策略修改成interleave(交 叉),有些硬件能夠在BIOS中設置。
若是單機運行多個MySQL實例,咱們能夠將MySQL綁定在不一樣的CPU節點上,而且採用綁定的內存分配策略,強制在本節點內分配內存,這樣既能夠充分利用硬件的NUMA特性,又避免了單實例MySQL對多核CPU利用率不高的問題。 網絡
資源隔離方案
1.CPU,Memory
numactl –cpubind=0 –localalloc,此命令將MySQL綁定在不一樣的CPU節點上,cpubind是指NUMA概念中的CPU節點,能夠用numactl –hardware查看,localalloc參數指定內存爲本地分配策略。
2.IO
咱們在機器中內置了fusionio卡(320G),配合flashcache技術,單機的IO再也不成爲瓶頸,因此IO咱們採用了多實例共享的方式,並無對IO作資源限制。多個MySQL實例使用相同的物理設備,不一樣的目錄的來進行區分。
3.Network
由於單機運行多個實例,必須對網絡進行優化,咱們經過多個的IP的方式,將多個MySQL實例綁定在不一樣的網卡上,從而提升總體的網絡能力。還有一種更高級的作法是,將不一樣網卡的中斷與CPU綁定,這樣能夠大幅度提高網卡的效率。
4.爲何不採用虛擬機
虛擬機會耗費額外的資源,並且MySQL屬於IO類型的應用,採用虛擬機會大幅度下降IO的性能,並且虛擬機的管理成本比較高。因此,咱們的數據庫都不採用虛擬機的方式。
5.性能
下圖是Percona的測試數據,能夠看到運行兩個實例的提高很是明顯。 架構
高可用方案
由於單機運行了多個MySQL實例,因此不能採用主機層面的HA策略,好比heartbeat。由於當一個MySQL實例出現問題時,沒法將整個機器切 換。因此必須改成MySQL實例級別的HA策略,咱們採用了本身開發的MySQL訪問層來解決HA的問題,當某個實例出問題時,只切換一個實例,對於應用 來講,這一層是透明的。
MySQL單機多實例方案的優勢
1.節省成本,雖然採用Flash存儲的成本比較高,可是若是能夠縮減機器的數量,考慮到節省電力和機房使用的成本,仍是比單機單實例的方案更便宜。
2.提高利用率,利用NUMA特性,將MySQL實例綁定在不一樣的CPU節點,不只提升了CPU利用率,同時解決了MySQL對多核CPU的利用率問題。
3.提高用戶體驗,採用Flash存儲技術,大幅度下降IO響應時間,有助於提高用戶的體驗。
–EOF–
關於NUMA能夠參考這篇文章:NUMA與Intel新一代Xeon處理器 性能