2011-10-12 12 views
10

Ho un'applicazione AppEngine che ha attualmente circa 15 GB di dati, e mi sembra che non sia pratico utilizzare gli attuali strumenti del caricatore di massa di AppEngine per eseguire il backup di set di dati di queste dimensioni . Pertanto, sto iniziando a indagare su altri modi di eseguire il backup e sarei interessato a conoscere le soluzioni pratiche che le persone potrebbero aver utilizzato per eseguire il backup dei dati AppEngine.Backup del database AppEngine (Google cloud storage?)

Per inciso, sto iniziando a pensare che Google Cloud Storage potrebbe essere una buona scelta. Sono curioso di sapere se qualcuno ha esperienza nell'utilizzo di Google Cloud Storage come backup per i propri dati AppEngine e quale sia stata la loro esperienza, e se ci sono indicazioni o elementi di cui dovrei essere a conoscenza prima di intraprendere questa strada.

Non importa quale soluzione io alla fine con, vorrei una soluzione di backup per soddisfare i seguenti requisiti:.

1) ragionevolmente veloce per il backup, e ragionevolmente veloce per ripristinare (cioè se un errore/dati grave eliminazione/attacco dannoso colpisce il mio sito Web, non voglio doverlo abbattere per più giorni durante il ripristino del database - per veloce intendo ore, in contrapposizione a giorni).

2) Una posizione e un account separati dai miei dati AppEngine - es. Non voglio che qualcuno con accesso amministratore ai miei dati AppEngine abbia necessariamente accesso in scrittura/eliminazione al percorso dei dati di backup, ad esempio se il mio account AppEngine viene compromesso da un hacker o se un dipendente insoddisfatto decide di eliminare tutti i miei dati, mi piacerebbe avere dei backup separati dagli account degli amministratori di AppEngine.

Per riassumere, dato che ottenere i dati dal cloud sembra lento/doloroso, ciò che vorrei sarebbe una soluzione di backup basata su cloud che emuli il ruolo che i backup su nastro sarebbero stati utili in passato - se dovessi avere un nastro di backup, nessun altro potrebbe modificare il contenuto di quel nastro - ma dato che non riesco a ottenere un nastro, posso conservare una copia sicura dei miei dati da qualche parte, a cui solo io ho accesso?

Cordiali saluti Alexander

risposta

4

Ci sono alcune opzioni qui, anche se nessuna (attualmente) è proprio quello che stai cercando.

Con l'ultima versione della versione 1.5.5 dell'SDK, ora supportiamo l'interfacciamento con Google Storage direttamente: è possibile vedere come, here. Con questo puoi scrivere dati su Google Storage, ma per quanto ne so non c'è modo di scrivere un file che l'app non sarà in grado di eliminare.

Per raccogliere effettivamente i dati, è possibile utilizzare lo App Engine mapreduce API. Ha integrato il supporto per la scrittura sul blobstore di App Engine; scrivendo su Google Storage richiederebbe l'implementazione del proprio writer di output, al momento.

Un'altra opzione, come suggerisce WoLpH, consiste nell'utilizzare lo strumento di amministrazione Datastore per eseguire il backup dei dati su un'altra app. Con un piccolo sforzo aggiuntivo è possibile modificare lo stub remote_api per vietare le eliminazioni all'app di destinazione (backup).

Una cosa che dovresti assolutamente fare a prescindere è enable two-factor authentication per il tuo account Google; questo rende molto più difficile per chiunque avere il controllo del tuo account, anche se scoprono la tua password.

1

Il bulkloader è probabilmente uno dei modo più veloce per il backup/ripristino dei dati.

Il problema con l'AppEngine è che devi fare tutto attraverso le viste. Quindi hai le restrizioni che le viste hanno ... il risultato è che un backup/ripristino veloce deve ancora utilizzare le stesse API del resto della tua app. Quindi il bulkloader (eventualmente con alcune modifiche) è sicuramente la migliore opzione qui.

Forse ... (non l'ho ancora provato), è possibile utilizzare il nuovo Datastore Admin per copiare i dati in un'altra app. Uno che solo tu controlli. In questo modo è possibile copiarlo dall'altra app quando necessario.

+0

Avete delle metriche sulla velocità del caricatore di massa per il backup di set di dati di grandi dimensioni? La mia esperienza è che ci vorranno molti giorni per fare il backup di 15 GB di dati. –

+0

@AlexanderMarquardt: nella mia esperienza. Se gli dai un numero sufficiente di thread, puoi caricare ~ 1 GB in 30 minuti, ma il bulkloader tende a bloccarsi con una quantità di dati e thread. Quindi non penso che ci sia una buona soluzione disponibile fuori dalla scatola. – Wolph