2012-03-26 38 views
0

我正在部署我的第一個ROR應用與MongoDB。我注意到,如果我部署的機器被重置,那麼通常數據庫將部分或全部消失。在我使用Rails應用程序明確聲明我使用的是沒有活動記錄的MongoDB之前,這也發生了,儘管它在我之前工作過。MongoDB數據庫重置與Rails 3.0

我查看了/ data/db /文件夾,似乎有很多數據庫文件:app-production.1,app-production.2等。在我的mongo_config.rb初始化文件中,我將數據庫指定爲

MongoMapper.database = "app-#{Rails.env}" 

我還推出了Interative的蒙戈控制檯,並注意到有5+應用程序的數據庫。所以我的問題是,MongoDB或Rails在關閉時會自動創建數據庫的新實例嗎? MongoDB是否使用多個文件來跨越數據庫?謝謝!

+0

什麼是'秀dbs'從蒙戈殼輸出? – 2012-03-26 14:20:00

回答

2

MongoDB數據庫跨越多個文件(app-production.1,app-production.2,...)。每個新的數據庫都駐留在它自己的一組文件中。

MongoDB提供懶惰的數據庫創建。如果您寫入數據庫並且它不存在,它將被創建。如果存在具有該名稱的數據庫,則會使用它。

如果機器復位,然後數據庫將被部分或完全消失

這取決於你的「復位」的定義。如果拔掉電源線,那麼mongodb將沒有時間正常關機。最近的版本默認隨日誌一起打開,因此不會發生重大數據丟失 - 如果出現嚴重故障,mongodb將嘗試重播日誌。 備註:如果您沒有啓用日誌功能,您應該在任何不乾淨的關機後修復數據庫,否則會面臨即將發生的數據庫損壞的風險。

如果重新安裝機器代替,那麼它也難怪,數據就沒了:)

+0

謝謝塞爾吉奧,我正在尋找。是的,權力被關閉,這可以解釋爲什麼部分記錄已經消失。謝謝! – 2012-03-26 14:31:02

+0

日誌記錄也僅在64位版本上默認啓用 – 2012-03-26 15:31:22

+0

@FrederickCheung:不知道。無論如何,誰運行32位版本? :) – 2012-03-26 15:35:11