9 節點 percona xtradb 集群
我們希望在 Amazon 上啟動一個 9 節點 percona xtradb 集群,其中每個 ec2 節點使用 20k iops 磁碟。
我擔心 9 節點集群是否可以工作,而我看到的主要是 3 節點集群。
我們在一些表上寫得很重,也讀得很重。
有什麼建議。
PXC 和 Galera Cluster 不能很好地寫入規模。
我在對 mySQL v5.6 複製的舊文章事務速度基準的回答中提到了這一點-在我說以下內容時似乎很慢:
請記住,Percona XtraDB Cluster 一開始並沒有很好地編寫規模。請注意文件在其缺點(第二個缺點)下所說的內容:
這不能用作有效的寫入縮放解決方案。當您將寫入流量執行到 2 個節點而不是所有流量執行到 1 個節點時,寫入吞吐量可能會有所提高,但您不能期望太多。所有寫入仍然必須在所有節點上進行。
這對您意味著:集群中的節點越多,節點之間的網路通信就越需要證明所有 9 個節點可以一起送出或一起回滾。這種增加的通信會在節點之間進行 n(n-1) 次呼叫(其中 n 是節點數),肯定會成為單個
INSERT
、UPDATE
或的瓶頸DELETE
。多語句交易變得更糟。這就是為什麼大多數 PXC/Galera 強調使用三個節點的例子。您可能會使用 5 個節點而僥倖,但您應該期望比 3 個節點更差的寫入性能。您可能可以設置 3 個不同的 3 節點集群,並在循環複製中使用每個集群中的一個節點(請參閱我的文章MySQL 5.5 Replication to Galera/Percona XtraDB Cluster)。如果集群之間的 MySQL 複製中斷,這很容易造成腦裂情況。
結語
請堅持使用 3 節點集群。如果您使用 9 個節點,則必須接受跨區域的網路通信。如果是這樣,請嘗試使節點位於不同區域的東海岸,或者位於不同區域的西海岸。
另一種拓撲是一個 3 節點的 Galera 集群,外加 2 個普通的只讀從屬節點掛在每個 Galera 節點上。向 6 個從站中的任何一個發送非關鍵讀取請求;將寫入發送到 3 個集群節點中的任何一個。
無法擴展寫入的原因是所有寫入都必須寫入所有節點。基於行的複制(Galera 要求)有助於減輕負載。
寫入縮放的“真正”修復是分片。但是,這不適用於任意工作負載。
您願意討論您的查詢嗎(寫和讀);也許我們可以找到一些技術來幫助您處理負載。