MongoDB - Replica
La replica è il processo di sincronizzazione dei dati su più server. La replica fornisce ridondanza e aumenta la disponibilità dei dati con più copie di dati su diversi server di database. La replica protegge un database dalla perdita di un singolo server. La replica consente inoltre di eseguire il ripristino da errori hardware e interruzioni del servizio. Con copie aggiuntive dei dati, puoi dedicarne una al ripristino di emergenza, al reporting o al backup.
Perché la replica?
- Per mantenere i tuoi dati al sicuro
- Disponibilità di dati elevata (24 * 7)
- Ripristino di emergenza
- Nessun tempo di inattività per la manutenzione (come backup, ricostruzioni di indici, compattazione)
- Ridimensionamento in lettura (copie extra da leggere)
- Il set di repliche è trasparente per l'applicazione
Come funziona la replica in MongoDB
MongoDB ottiene la replica tramite l'uso del set di repliche. Un set di repliche è un gruppo dimongodistanze che ospitano lo stesso set di dati. In una replica, un nodo è il nodo primario che riceve tutte le operazioni di scrittura. Tutte le altre istanze, come le secondarie, applicano le operazioni dal primario in modo che abbiano lo stesso set di dati. Il set di repliche può avere un solo nodo primario.
Il set di repliche è un gruppo di due o più nodi (generalmente sono richiesti almeno 3 nodi).
In un set di repliche, un nodo è il nodo primario ei nodi rimanenti sono secondari.
Tutti i dati vengono replicati dal nodo primario a quello secondario.
Al momento del failover automatico o della manutenzione, l'elezione stabilisce per primario e viene eletto un nuovo nodo primario.
Dopo il ripristino del nodo guasto, si unisce di nuovo al set di repliche e funziona come nodo secondario.
Viene mostrato un tipico diagramma della replica di MongoDB in cui l'applicazione client interagisce sempre con il nodo primario e il nodo primario replica quindi i dati sui nodi secondari.
![](https://assets.edu.lat/mongodb/images/replication.png)
Funzionalità del set di repliche
- Un cluster di N nodi
- Ogni nodo può essere primario
- Tutte le operazioni di scrittura vanno alla primaria
- Failover automatico
- Ripristino automatico
- Elezione consensuale delle primarie
Configurazione di un set di repliche
In questo tutorial, convertiremo l'istanza MongoDB autonoma in un set di repliche. Per convertire in set di repliche, di seguito sono riportati i passaggi:
Arresto già in esecuzione sul server MongoDB.
Avvia il server MongoDB specificando l'opzione - replSet. Di seguito è riportata la sintassi di base di --replSet -
mongod --port "PORT" --dbpath "YOUR_DB_DATA_PATH" --replSet "REPLICA_SET_INSTANCE_NAME"
Esempio
mongod --port 27017 --dbpath "D:\set up\mongodb\data" --replSet rs0
Avvierà un'istanza mongod con il nome rs0, sulla porta 27017.
Ora avvia il prompt dei comandi e connettiti a questa istanza di mongod.
Nel client Mongo, immetti il comando rs.initiate() per avviare un nuovo set di repliche.
Per controllare la configurazione del set di repliche, emettere il comando rs.conf(). Per controllare lo stato del set di repliche, emettere il comandors.status().
Aggiungi membri al set di repliche
Per aggiungere membri al set di repliche, avviare le istanze di mongod su più macchine. Ora avvia un client mongo e invia un comandors.add().
Sintassi
La sintassi di base di rs.add() il comando è il seguente:
>rs.add(HOST_NAME:PORT)
Esempio
Supponiamo che il nome dell'istanza di mongod sia mongod1.net ed è in esecuzione in porto 27017. Per aggiungere questa istanza al set di repliche, emettere il comandors.add() nel client Mongo.
>rs.add("mongod1.net:27017")
>
Puoi aggiungere l'istanza mongod al set di repliche solo quando sei connesso al nodo primario. Per verificare se sei connesso al primario o meno, immetti il comandodb.isMaster() in mongo client.