Trasferimento delle modifiche al database di produzione

1

Ho un sito Web in esecuzione su un server di produzione, supportato da mongodb. Ogni ora o giù di lì, diventano disponibili alcuni nuovi dati che voglio aggiungere al db, inserire nuovi documenti e aggiornare quelli vecchi.

Ottengo i nuovi dati su un server di sviluppo e aggiorno la copia del db del server di sviluppo. Se tutto sembra a posto, voglio inviare le nuove informazioni al db di produzione, in modo che la produzione ora assomigli al db di dev. Se i test falliscono, non inviare modifiche alla produzione fino al loro superamento. Le modifiche che ho in mente non sono modifiche dello schema, ma solo nuovi valori per vecchi campi e nuovi documenti con gli stessi campi degli altri.

Diverse opzioni mi vengono in mente per come farlo.

  1. Con ogni aggiornamento, fai

{$set: {data_field: new_value, modified: ISODate()})

e quindi copia tutto con modified appropriato alla produzione.

  1. Ad ogni aggiornamento, scrivi il comando di aggiornamento in un log, quindi esegui tutti questi comandi in produzione.

  2. Ad ogni aggiornamento, coda l'oplog ed esegui tutti i comandi nell'aggiornamento in produzione.

Tutti questi approcci sono comuni? Mi piacerebbe renderlo il più semplice possibile nella pratica standard. Come posso decidere tra questi metodi?

    
posta Hatshepsut 26.10.2016 - 21:42
fonte

1 risposta

2

Dobbiamo fare qualcosa di simile e usiamo i servizi AWS per aiutarci. Se AWS non fa parte della tua immagine, sono sicuro che qualcosa di simile è possibile nella tua infrastruttura.

Rischiando cose potenzialmente ipersemplificanti, ecco cosa abbiamo.

Ci sono due parti fondamentali della nostra soluzione.

  1. Un bucket S3 in cui risiedono i nuovi dati.
  2. Uno script (che fa parte della nostra base di codice) che è in grado di acquisire dati e applicarli a un MongoDB. Accetta un parametro: la posizione dei dati in S3.

Lo script, dato che fa parte della nostra base di codice, viene distribuito in ogni ambiente. Incluso nella distribuzione è un file di configurazione utilizzato per specificare il server MongoDB a cui ci colleghiamo.

Quindi i nostri passaggi sono:

  1. Aggiorna il database di sviluppo per apparire come il database di produzione
  2. Esegui lo script di migrazione (passando il percorso S3 dei dati) nell'ambiente di sviluppo.
  3. Se i dati di sviluppo sembrano buoni, continua. Altrimenti, torna al Passaggio 1.
  4. Esegui lo script di migrazione (passando il percorso S3 dei dati) nell'ambiente di produzione.

Spero che questo aiuti!

    
risposta data 27.10.2016 - 01:38
fonte

Leggi altre domande sui tag