在EC2中,如果停止並啓動或重新引導,則臨時磁盤上的數據將被刪除。將提交日誌存儲在臨時磁盤中?
問題是,將提交日誌放在臨時磁盤上是一個好主意嗎?
如果實例重新啓動並丟失commitlog會發生什麼情況? 我已將複製因子設置爲2,使用NetworkTopologyStrategy
即可識別可用區域。
請指點
在EC2中,如果停止並啓動或重新引導,則臨時磁盤上的數據將被刪除。將提交日誌存儲在臨時磁盤中?
問題是,將提交日誌放在臨時磁盤上是一個好主意嗎?
如果實例重新啓動並丟失commitlog會發生什麼情況? 我已將複製因子設置爲2,使用NetworkTopologyStrategy
即可識別可用區域。
請指點
的commitlog是C *耐用寫架構的基本組成部分。對Cassandra Write Path的簡要介紹顯示,每個寫入都會轉到memtable和commitlog。後者是C *在崩潰中倖存的方式。如果將提交日誌放在系統崩潰時消失的臨時磁盤上,則會破壞持久性寫入,並且會丟失節點上的數據。 RF將幫助您確保節點中的數據將被恢復,但會使您暴露於第二臺機器的崩潰。
當然,這是一件事我會避免,EC2虛擬機被重新啓動,往往...
*「......或重新啓動......」 * **是不正確**。臨時磁盤內容在重新啓動後仍然存在,但不會停止/啓動。 [*「實例存儲中的數據僅在與其關聯的實例的生命週期中保持不變。如果某個實例重新啓動(有意或無意),實例存儲中的數據仍然存在。」*](http://docs.aws.amazon。 com/AWSEC2/latest/UserGuide/InstanceStorage.html#instance-store-lifetime) –
但是,在重新啓動之前,實例是不是停止了? – simo
否。重啓EC2實例就像按下control-alt-delete。無論您是從EC2控制檯或API(包括SDK)還是「sudo reboot」重新啓動,該實例都會保留在同一物理主機上,並保持其臨時磁盤完好無損。停止實例會將其從AWS的物理主機上移除,並在重新啓動時將其部署到新的物理主機,並使用其EBS卷和網絡接口自動移動到另一個物理主機,但使用新的空臨時磁盤。請參閱http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-lifecycle.html#lifecycle-differences –