2016-10-03 43 views
0

我有三個EC2實例,每個實例都有自己的MongoDB,並且它們連接在副本集中。AWS EFS使用MongoDB副本集的彈性文件系統

因爲EFS,可以在多個EC2實例共享,我想知道三件事...

  1. 將MongoDB的情況下,仍然需要設置一個複製連接,如果磁盤上的數據實際上已經在所有三個實例之間共享? (我關心的是Mongo DB的RAM中的內容,並且每個Mungo數據庫實例不會'知道',它擁有什麼數據,或者如果直接將數據插入磁盤將省略重要的'索引'步驟)

  2. from從性能的角度來看,如果我們只需要向文件系統寫入一次,那麼最好不要讓MongoDB將N次寫入相同的事物N個不同的實例?

  3. 要確保一切都「安全」,我是否應該將每個EC2實例安裝到自己的EFS中,而不關心上述兩個問題? (在這種情況下,成本將是N次每GB成本)

回答

0
  1. 首先,從來沒有做到這一點。數據庫系統通常會鎖定正在使用的數據文件。這樣他們就可以控制數據實際寫入磁盤的時間和方式。您可能能夠通過使用網絡文件系統繞過此鎖定機制,但不應該這樣做。你會打開自己的數據損壞。如果你甚至可以讓這個工作擺在首位。

  2. 請參閱第1點,您將損壞您的數據。副本旨在提高數據的讀取性能和可用性。

  3. 你真的不需要爲Mongo使用EFS。如果需要更多寫入性能,則使用副本和/或分片很有效。