對於允許(通過流式處理或快照)將單個riak桶備份到文件的解決方案,您有什麼建議?針對單桶的riak備份解決方案
回答
據我所知,沒有自動化解決方案來備份Riak中的一個存儲桶。您必須使用riak-admin
命令行工具來負責備份單個物理節點。如果你希望它快但不安全(r = 1),你可以寫一些東西來檢索單個桶中的所有密鑰並使用較低的r值。
桶是一個邏輯名稱空間,所有的鍵都存儲在同一個bitcask結構中。這就是爲什麼獲得單個節點的唯一方法是編寫一個工具來自己進行流式處理。
Basho函數contrib具有備份單個桶的erlang解決方案。這是一個自定義函數,但它應該做的伎倆。
備份只是一個單一的桶將是中了Riak困難的操作。
所有的解決方案都將歸結爲以下兩個步驟:
列出所有桶裏的對象。這是一個棘手的部分,因爲在Riak集羣的任何地方沒有任何存儲桶的「清單」或內容列表。
對上述列表中的每個對象發出GET,並將其寫入備份文件。這部分通常很簡單,但爲了獲得最佳性能,您希望確保您以多線程方式並行發佈這些GET,並使用某種連接池。
至於列出所有的對象,你有三種選擇之一。
一個是通過HTTP(例如/buckets/bucket/keys?keys=stream
)或協議緩衝區做在剷鬥串流列表按鍵操作 - 詳見http://docs.basho.com/riak/latest/dev/references/http/list-keys/和http://docs.basho.com/riak/latest/dev/references/protocol-buffers/list-keys/。在任何情況下,您都不應該執行非流式常規列表鍵操作。 (它會掛起整個羣集,並且一旦密鑰數量變得足夠大,最終會超時或崩潰)。
二是發出二級索引(2i)查詢來獲取該對象列表。有關討論和注意事項,請參閱http://docs.basho.com/riak/latest/dev/using/2i/。
如果您使用Riak Search並且可以通過單個分頁搜索查詢檢索所有對象,則會有三個。 (但是,Riak搜索具有10,000條結果的查詢結果限制,因此,這種方法遠非理想)。
對於獨立的應用程序,可以備份單個桶,看看Riak Data Migrator,使用該流列表鍵的方法結合高效並行獲取一個實驗的Java應用程序的一個例子。
- 1. 備用SQlite備份解決方案
- 2. 版本管理/備份解決方案
- 3. 房地產Linux備份解決方案
- 4. PostgreSQL還原和備份解決方案
- 5. openSuSE遠程備份解決方案
- 6. 備份軟件解決方案問題
- 7. Riak-cs解決方案與防病毒
- 8. 針對Epaper的PHP解決方案
- 9. 簡單的Magento自動備份解決方案?
- 10. 針對較新設備的菜單按鈕的解決方法
- 11. SQLite是備份Heroku上的postgres的最佳解決方案嗎?
- 12. 簡單的解決方案
- 13. 備份解決方案,用於解決debian上的困難情況
- 14. 備份C#解決方案的源代碼
- 15. iOS文件存儲:未備份的解決方案
- 16. git push作爲一個足夠的備份解決方案?
- 17. Rsyncing git repo足夠好的備份解決方案嗎?
- 18. Xen虛擬機的良好備份解決方案?
- 19. Node.js的身份驗證解決方案
- 20. 針對移動設備的ADO.NET解決方案的同步服務 - ArgumentNullException
- 21. 僅針對解決方案中的網頁進行Windows身份驗證
- 22. 針對Android的同儕對消息傳遞解決方案?
- 23. Visual Studio:單一解決方案還是很多解決方案?
- 24. SQL Server 2008 - 最佳備份解決方案
- 25. api桌面聯機備份解決方案
- 26. 增量備份解決方案(Sqlite,MySQL,SQL Server)
- 27. 爲Amazon S3創建Amazon EC2備份解決方案
- 28. 身份管理/ SSO解決方案?
- 29. Rails 3身份驗證解決方案
- 30. 在線身份驗證解決方案
我們在使用riak-admin工具進行備份時遇到了問題。備份速度很慢,我們永遠無法讓它們恢復正常。如果這是您當前的備份解決方案,我會建議您測試您可以儘快恢復! 我們當前的解決方案是停止Riak節點,拍攝/ var/lib/riak目錄的快照,並啓動節點。如果我們使用帶有快照的文件系統(例如XFS),我們只會這樣做。我們已經對此進行了測試,並且沒有遇到任何問題。注:這假設你正在使用Bitcask。 – 2011-04-14 10:15:23