2012-09-05 20 views
1

我不明白爲什麼單獨的寫入和讀取比在一臺服務器上寫入和讀取更好。爲什麼單獨寫入和讀取更好?

例如,我有一個包含三臺機器的mysql集羣:node1,node2,node3。

一個可能的架構是:

  • 所有的寫請求節點1,但所有的讀請求2,3兩個節點。

第二個可能的架構是:

  • 所有這些三個節點的同時處理寫入和讀取。

我們可以在架構中看到寫入node1的壓力非常巨大,所以我更喜歡架構二。

此外,爲什麼mongodb將寫入主節點並讀取到輔助節點。

+2

這是需要注意的是,除非您使用'SlaveOK'或其他讀取首選項來告訴它,否則MongoDB不會將寫入和讀取分離到主節點和輔助節點。默認情況下,主要處理讀取和寫入。 –

+0

@AndredeFrere 如果我想轉儲所有的數據庫,我應該用什麼地址,即 mongodump --host mongosServer:端口 或 mongodump --host mongoDServer:端口 如果我指示的mongod我不會轉儲所有的數據 ,我不知道是否表示mongoS是正確的 在此先感謝 – Jack

+1

可能不是最好的地方,但從'mongod'和'mongos'備份是可行的策略取決於案件。檢查[這裏](http://www.mongodb.org/display/DOCS/Backing+Up+Sharded+Cluster)和[這裏](http://docs.mongodb.org/manual/administration/backups/#shard -clusters-and-replica-sets-considerations)以獲取更多詳細信息。 –

回答

2

這是MySQL和MongoDB的縮放問題。在最小的數據集和低流量的最簡單的應用程序中,將所有寫入和讀取操作都放到一臺服務器上,爲您提供了一個簡單的體系結構。在低容量寫入的大容量讀取應用程序中,複製到多個讀取節點的單個寫入節點使您能夠通過添加另一個節點來擴展讀取。在高讀寫的卷應用程序中,你可能會考慮分片(在MySQL中你自己做或者找到一個工具來幫助),在mongodb中你可以運行mongos來爲你處理分片。分片會根據您定義的某個鍵將特定實例的記錄放入。密鑰將確定每個記錄應存儲在的實例。你可以想象,分片比單個服務器的讀/寫訪問更爲複雜。即使是在你定義了一個鍵(或者僅僅使用默認鍵)之後,你也可以正確的做到,例如mongodb。

1

MySQL集羣還支持自動分片 - 默認散列主鍵,但用戶可以提供自己的鍵以提供更多的分佈感知。集羣中的每個節點都是高手,和內部負載均衡將跨節點

分配負載

在非常高的水平,在此發佈的簡短的演示向您介紹了分片在MySQL集羣的概念: http://www.oracle.com/pls/ebn/swf_viewer.load?p_shows_id=11464419

相關問題