2011-10-12 125 views
10

我有目前大約有數據的15GB的AppEngine應用程式,並在我看來,這是不切實際的使用當前的AppEngine批量載入程序工具來備份數據集,這種規模的。因此,我開始調查其他備份方式,並且希望瞭解人們可能用於備份AppEngine數據的實際解決方案。備份的AppEngine數據庫(谷歌雲存儲?)

順便說一句,我開始認爲,谷歌雲存儲可能是一個不錯的選擇。我很想知道是否有人使用Google Cloud Storage作爲其AppEngine數據的備份經驗,以及他們的經驗是什麼,以及是否有任何指示或事情在我走下這條路之前應該注意。

無論我結束了它的解決方案,我想一個備份解決方案,以滿足以下要求:

1)合理快速的備份,併合理地快速恢復(即如果一個嚴重的錯誤/數據刪除/惡意攻擊襲擊了我的網站,我不想在恢復數據庫的過程中將它關閉多天 - 我的意思是幾小時,而不是幾天)。

2)從我的應用服務引擎數據分開的位置和帳戶 - 即我不想讓管理員訪問我的AppEngine數據的人必須擁有對備份數據位置的寫入/刪除訪問權限 - 例如,如果我的AppEngine帳戶被黑客入侵,或者如果某個心懷不滿的員工決定刪除我的所有數據,我想有備份是從AppEngine上管理員帳戶分開。總之,從雲中獲取數據看起來很慢/很痛苦,我想要的是一個基於雲的備份解決方案,模擬過去磁帶備份的作用 - 如果我要有一個備份磁帶,沒有其他人可以修改該磁帶的內容 - 但由於我無法獲得磁帶,我可以在任何地方存儲我的數據的安全副本,只有我有權訪問?

親切的問候 亞歷山大

回答

4

有幾個選擇這裏,雖然沒有被(目前)相當,你在找什麼。

隨着SDK的1.5.5版本的最新版本,我們現在支持與谷歌直接存儲接口 - 你可以看到,here。有了這個功能,您可以將數據寫入Google Storage,但據我所知,無法編寫應用程序無法刪除的文件。

要實際採集數據,你可以使用App Engine mapreduce API。它支持寫入App Engine blobstore;寫入Google Storage需要您目前實現自己的輸出編寫器。

WoLpH建議的另一種選擇是使用數據存儲管理工具將數據備份到另一個應用程序。稍加額外的努力,您可以修改remote_api存根,以禁止刪除目標(備份)應用程序。

您應該一定要做的一件事是不管您的Google帳戶是否爲enable two-factor authentication;這讓任何人都難以控制您的賬戶,即使他們發現了您的密碼。

1

的bulkloader可能是最快的方法來備份一個/恢復數據。

與AppEngine上的問題是,你必須通過視圖做的一切。所以你有視圖的限制......結果是一個快速的備份/恢復仍然必須使用與你的應用程序的其餘部分相同的API。因此,bulkloader(可能有一些修改)絕對是您最佳的選擇。

也許雖然...(有沒有嘗試過),你可以使用新的資料儲存庫管理員將數據複製到另一個應用程序。只有你控制的一個。這樣,您可以在需要時從其他應用程序複製它。

+0

您是否有任何關於批量加載程序備份大型數據集的速度的指標?我的經驗是,需要很多天才能備份15GB的數據。 –

+0

@AlexanderMarquardt:以我的經驗。如果你給它足夠多的線程,你可以在30分鐘內上傳〜1GB,但是bulkloader往往會因爲那麼多的數據和線程而崩潰。所以我不認爲現成的解決方案有很好的解決方案。 – Wolph