MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Suggerimenti per l'archiviazione dei backup di MongoDB nel cloud

Quando si tratta di backup e archiviazione dei dati, i dipartimenti IT sono sotto pressione per soddisfare accordi sui livelli di servizio più severi, fornire report più personalizzati e aderire a requisiti di conformità in espansione, pur continuando a gestire le attività quotidiane di archiviazione e backup. Senza dubbio, il server di database memorizza alcune delle informazioni più preziose della tua azienda. Garantire backup affidabili del database per prevenire la perdita di dati in caso di incidente o guasto hardware è una casella di controllo fondamentale.

Ma come renderlo veramente DR quando tutti i tuoi dati si trovano nel singolo data center o anche nei data center che si trovano nella geolocalizzazione vicina? Inoltre, sia che si tratti di un server con carichi elevati 24 ore su 24, 7 giorni su 7 o di un ambiente con un volume di transazioni ridotto, sarà necessario rendere i backup una procedura senza interruzioni senza interrompere le prestazioni del server in un ambiente di produzione.

In questo blog esamineremo il backup di MongoDB nel cloud. Il cloud ha cambiato il settore del backup dei dati. Grazie al suo prezzo accessibile, le piccole imprese hanno una soluzione fuori sede che esegue il backup di tutti i loro dati.

Ti mostreremo come eseguire backup MongoDB sicuri utilizzando i servizi mongo e altri metodi che puoi utilizzare per estendere le opzioni di ripristino di emergenza del database.

Se il tuo server o destinazione di backup si trova in un'infrastruttura esposta come un cloud pubblico, un provider di hosting o è connesso tramite una rete WAN non affidabile, devi pensare ad azioni aggiuntive nella tua policy di backup. Esistono diversi modi per eseguire i backup del database per MongoDB e, a seconda del tipo di backup, il tempo di ripristino, le dimensioni e le opzioni dell'infrastruttura variano. Poiché molte delle soluzioni di archiviazione cloud sono semplicemente archiviazione con front-end API diversi, qualsiasi soluzione di backup può essere eseguita con un po' di scripting. Quindi quali sono le opzioni che abbiamo per rendere il processo semplice e sicuro?

Crittografia backup MongoDB

La sicurezza dovrebbe essere al centro di ogni azione svolta dai team IT. È sempre una buona idea applicare la crittografia per migliorare la sicurezza dei dati di backup. Un semplice caso d'uso per implementare la crittografia è dove vuoi inviare il backup a un archivio di backup fuori sede situato nel cloud pubblico.

Quando si crea un backup crittografato, una cosa da tenere a mente è che di solito il ripristino richiede più tempo. Il backup deve essere decrittografato prima di qualsiasi attività di ripristino. Con un grande set di dati, questo potrebbe introdurre alcuni ritardi nell'RTO.

D'altra parte, se stai utilizzando le chiavi private per la crittografia, assicurati di conservare la chiave in un luogo sicuro. Se manca la chiave privata, il backup sarà inutile e irrecuperabile. Se la chiave viene rubata, tutti i backup creati che utilizzano la stessa chiave verrebbero compromessi poiché non sono più protetti. Puoi utilizzare il popolare GnuPG o OpenSSL per generare chiavi private o pubbliche.

Per eseguire la crittografia MongoDBdump utilizzando GnuPG, genera una chiave privata e segui la procedura guidata di conseguenza:

$ gpg --gen-key

Crea un semplice backup di MongoDBdump come al solito:

$ mongodump –db db1 –gzip –archive=/tmp/db1.tar.gz
Crittografa il file dump e rimuovi il backup semplice precedente:
$ gpg --encrypt -r ‘[email protected]’ db1.tar.gz

$ rm -f db1.tar.gz
GnuPG aggiungerà automaticamente l'estensione .gpg al file crittografato. Per decrittografare,

esegui semplicemente il comando gpg con --decrypt flag:

$ gpg --output db1.tar.gz --decrypt db1.tar.gz.gpg
Per creare un MongoDBdump crittografato utilizzando OpenSSL, è necessario generare una chiave privata e una chiave pubblica:
OpenSSL req -x509 -nodes -newkey rsa:2048 -keyout dump.priv.pem -out dump.pub.pem

Questa chiave privata (dump.priv.pem) deve essere conservata in un luogo sicuro per future decrittazioni. Per Mongodump, è possibile creare un backup crittografato collegando il contenuto a openssl, ad esempio

mongodump –db db1 –gzip –archive=/tmp/db1.tar.gz | openssl smime -encrypt -binary -text -aes256

-out database.sql.enc -outform DER dump.pub.pem
Per decifrare, usa semplicemente la chiave privata (dump.priv.pem) insieme al flag -decrypt:

openssl smime -decrypt -in database.sql.enc -binary -inform

DEM -inkey dump.priv.pem -out db1.tar.gz

Compressione backup MongoDB

Nel mondo del backup su cloud di database, la compressione è uno dei tuoi migliori amici. Non solo può risparmiare spazio di archiviazione, ma può anche ridurre significativamente il tempo necessario per scaricare/caricare i dati.

Oltre all'archiviazione, abbiamo anche aggiunto il supporto per la compressione tramite gzip. Ciò è evidenziato dall'introduzione di una nuova opzione della riga di comando "--gzip" sia in mongodump che in mongorestore. La compressione funziona sia per i backup creati utilizzando la directory che in modalità archivio e riduce l'utilizzo dello spazio su disco.

Normalmente, il dump di MongoDB può avere i migliori tassi di compressione in quanto è un file di testo piatto. A seconda dello strumento di compressione e del rapporto, un MongoDBdump compresso può essere fino a 6 volte più piccolo della dimensione del backup originale. Per comprimere il backup, puoi reindirizzare l'output di MongoDBdump a uno strumento di compressione e reindirizzarlo a un file di destinazione

Avere un backup compresso potrebbe farti risparmiare fino al 50% della dimensione del backup originale, a seconda del set di dati.

mongodump --db country --gzip --archive=country.archive

Limitazione del throughput di rete

Un'ottima opzione per i backup su cloud è limitare la larghezza di banda dello streaming di rete (Mb/s) durante l'esecuzione di un backup. Puoi ottenerlo con lo strumento pv. L'utilità pv viene fornita con l'opzione di modifica dei dati -L RATE, --rate-limit RATE che limita il trasferimento a un massimo di byte RATE al secondo. L'esempio seguente lo limiterà a 2 MB/s.

$ pv -q -L 2m

Trasferimento di backup MongoDB nel cloud

Ora, quando il backup è compresso e protetto (crittografato), è pronto per il trasferimento.

Google Cloud

Lo strumento da riga di comando gsutil viene utilizzato per gestire, monitorare e utilizzare i tuoi bucket di archiviazione su Google Cloud Storage. Se hai già installato l'utility gcloud, hai già installato gsutil. Altrimenti, segui le istruzioni per la tua distribuzione Linux da qui.

Per installare la CLI di gcloud puoi seguire la procedura seguente:

curl https://sdk.cloud.google.com | bash
Riavvia la shell:
exec -l $SHELL
Esegui gcloud init per inizializzare l'ambiente gcloud:
gcloud init
Con lo strumento della riga di comando gsutil installato e autenticato, crea un bucket di archiviazione regionale denominato MongoDB-backups-storage nel progetto corrente.
gsutil mb -c regional -l europe-west1 gs://severalnines-storage/

Creating gs://MongoDB-backups-storage/

Amazon S3

Se non stai utilizzando RDS per ospitare i tuoi database, è molto probabile che tu stia facendo i tuoi backup. La piattaforma AWS di Amazon, S3 (Amazon Simple Storage Service) è un servizio di archiviazione dati che può essere utilizzato per archiviare backup di database o altri file business-critical. Sia che si tratti dell'istanza Amazon EC2 o del tuo ambiente on-premise puoi utilizzare il servizio per proteggere i tuoi dati.

Mentre i backup possono essere caricati tramite l'interfaccia web, l'interfaccia della riga di comando s3 dedicata può essere utilizzata per farlo dalla riga di comando e tramite script di automazione del backup. Se i backup devono essere conservati per un tempo molto lungo e il tempo di ripristino non è un problema, i backup possono essere trasferiti al servizio Amazon Glacier, fornendo uno storage a lungo termine molto più economico. I file (oggetti amazon) sono logicamente archiviati in un enorme contenitore piatto chiamato bucket. S3 presenta un'interfaccia REST ai suoi interni. Puoi utilizzare questa API per eseguire operazioni CRUD su bucket e oggetti, nonché per modificare autorizzazioni e configurazioni su entrambi.

Il metodo di distribuzione principale per l'AWS CLI su Linux, Windows e macOS è pip, un gestore di pacchetti per Python. Le istruzioni sono disponibili qui.

aws s3 cp severalnines.sql s3://severalnine-sbucket/MongoDB_backups
Per impostazione predefinita, S3 fornisce undici 9 di durabilità degli oggetti. Significa che se immagazzini 1.000.000.000 (1 miliardo) di oggetti al suo interno, puoi aspettarti di perdere in media 1 oggetto ogni 10 anni. Il modo in cui S3 ottiene un numero impressionante di 9 è replicando automaticamente l'oggetto in più zone di disponibilità, di cui parleremo in un altro post. Amazon ha data center regionali in tutto il mondo.

Archiviazione Microsoft Azure

La piattaforma cloud pubblica di Microsoft, Azure, dispone di opzioni di archiviazione con la sua interfaccia della linea di controllo. Le informazioni possono essere trovate qui. L'interfaccia della riga di comando di Azure multipiattaforma open source fornisce un set di comandi per l'utilizzo della piattaforma Azure. Offre gran parte delle funzionalità viste nel portale di Azure, incluso l'accesso ai dati avanzati.

L'installazione dell'interfaccia della riga di comando di Azure è abbastanza semplice, puoi trovare le istruzioni qui. Di seguito puoi scoprire come trasferire il backup nello spazio di archiviazione Microsoft.

az storage blob upload --container-name severalnines --file severalnines.gz.tar --name severalnines_backup

Archiviazione ibrida per backup MongoDB

Con la crescita del settore dello storage su cloud pubblico e privato, abbiamo una nuova categoria chiamata storage ibrido. L'approccio tipico consiste nel conservare i dati sulle unità disco locali per un periodo più breve mentre l'archiviazione di backup nel cloud verrebbe conservata per un periodo di tempo più lungo. Molte volte il requisito per una conservazione del backup più lunga deriva da obblighi legali per diversi settori (come le telecomunicazioni che devono archiviare i metadati di connessione). Questa tecnologia consente di archiviare i file in locale, con le modifiche sincronizzate automaticamente in remoto nel cloud. Tale approccio deriva dalla necessità di disporre di backup recenti archiviati in locale per un ripristino rapido (RTO inferiore), nonché da obiettivi di continuità aziendale.

L'aspetto importante di un utilizzo efficiente delle risorse è avere conservazioni di backup separate. I dati archiviati localmente su unità disco ridondanti verrebbero conservati per un periodo più breve mentre l'archiviazione di backup nel cloud verrebbe conservata per un tempo più lungo. Molte volte il requisito per una conservazione del backup più lunga deriva da obblighi legali per diversi settori (come le telecomunicazioni che devono archiviare i metadati di connessione).

I provider cloud come Google Cloud Services, Microsoft Azure e Amazon S3 offrono ciascuno spazio di archiviazione praticamente illimitato, riducendo le esigenze di spazio locale. Ti consente di conservare i tuoi file di backup più a lungo, per tutto il tempo che desideri e non hai problemi di spazio su disco locale.

Gestione backup ClusterControl - Archiviazione ibrida

Quando si pianifica il backup con ClusterControl, ciascuno dei metodi di backup è configurabile con una serie di opzioni su come si desidera eseguire il backup. Il più importante per l'archiviazione su cloud ibrido sarebbe:

  • Limitazione della rete
  • Crittografia con la gestione delle chiavi integrata
  • Compressione
  • Il periodo di conservazione per i backup locali
  • Il periodo di conservazione per i backup su cloud

Funzionalità di backup avanzate di ClusterControl per cloud, compressione parallela, limite di larghezza di banda di rete, crittografia , ecc. La tua azienda può trarre vantaggio dalla scalabilità del cloud e dai prezzi con pagamento in base al consumo per le crescenti esigenze di archiviazione. Puoi progettare una strategia di backup per fornire sia copie locali nel data center per il ripristino immediato, sia un gateway senza interruzioni per i servizi di archiviazione cloud da AWS, Google e Azure.

TLS e AES 256 avanzati Le funzionalità di crittografia e compressione -bit supportano backup sicuri che occupano molto meno spazio nel cloud.