In questo articolo tutorial vediamo come
- installare MongoDb e come configurarlo su CetoOs 7
- aggiornare una vecchia versione del moderno Database all’ultima versione
- eseguiamo il backup ed il restore del database
Installazione di MOngoDB
Prerequisiti per l’installazione
- Linux CentOS7
- I privilegi di Root
Capitoli di configurazione
- Aggiungiamo i repository di MongoDB
- Installiamo MongoDB
- Risolviamo alcuni problemi
- Creiamo l’utente di amministrazione
- Abilitiamo MongoDB per il test
Abilitiamo i repository
Per abilitare i repository bisogna eseguire l’accesso come root. Come indicato nella guida ufficiale, dobbiamo eseguire l’installazione della versione Community Edition poichè si tratta della versione gratuita.
Doppiamo quindi impostare i parametri dei repository per YUM e quesi vanno nella cartella /etc/yum.repos.d/ dove CentOS va a leggerli. quindi installiamo questi repo
cd /etc/yum.repos.d/
vim mongodb-org-3.2.repo
Incolliamo la configurazione per il repository di MongoDB, in questo caso la versione 3.2 ma vale per qualsiasi versione succesiva:
[mongodb-org-3.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.2.asc
Salviamo il file ed usciamo. Diamo quindi il comando di installazione.
yum install -y mongodb-org
Yum si occupera quindi di effettuare l’installazione ed al termine avremo le cartelle relative a mongo in queste posizioni:
/var/lib/mongo (the data directory)
/var/log/mongodb (the log directory)
/etc/mongod.conf file di configurazione
Nella pagina ufficiale di mongo all’indirizzo https://www.mongodb.com/docs/manual/tutorial/install-mongodb-on-red-hat/ troviamo tutte le informazioni relative all’installazione di mongo du RedHat.
Aggiornamento di Mongodb
Ad oggi nella master ufficiale abbiamo installata la versione 3.2.22 si MongoDB. Secondo la linea guida ufficiale per il passaggio all’ultima versione (attualmente 01/06/23 ver 6.0) bisogna passare da diversi step: 3.2 ->3.4 -> 3.6 -> 4.0 -> 4.2 -> 4.4 -> 5.0 -> 6.02
Nella documentazione ufficiale possiamo trovare questi file di configurazione alla pagina https://www.mongodb.com/docs/v3.6/tutorial/install-mongodb-on-red-hat/
e trovo le versioni relative andando a modificare il numero di versione.
I passaggi seguenti devono essere fatti ad ogni singolo passaggio di versione. Il rischio nel saltare un passaggio e quello dell’incompatibilità tra il demone in esecuzione e la versione dell’archivio dei dati.
Stoppiamo il demone
Come primo passaggio dobbiamo loggarci come utente root
bloccare il demone di MongoDB, quindi controlliamo lo stato attuale e stoppiamo il servizio con il comando
systemctl status mongod.service
systemctl stop mongod
Prepariamo il file di configurazione per l’installazione
Creiamo il file di configurazione per la versione che vogliamo installare ad esempio la 3.4 con il comando
touch /etc/yum.repos.d/mongodb-org-3.4.repo
quindi dalla pagina della documentazione di mongodb copiamo il codice che dobbiamo inserire nel file appena creato
[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
Questa operazione va effettuata per ogni versione di MongoDB alla quale vogliamo passare. In modo automatico il programma di aggiornamento va ad installare la versione piu avanzata del repository proposto quindi non possiamo inserire subito tutti i repository ma dobbiamo fare l’upgrade versione dopo versione.
Procediamo all’installazione
Quindi con il comando dato come utente root:
yum install -y mongodb-org
Vado ad installare l’ultima versione disponibile che ho inserito nei repository .
Eseguiamo nuovamente il demone.
Prima di eseguire nuovamente il demone di MongoDB dobbiamo aggiornare l’elenco dei demoni disponibili
systemctl daemon-reload
quindi facciamo ripartire il demone
systemctl start mongod
Controlliamo il funzionamento
Una volta riavviato il demone e non aver ricevuto errori, controlliamo che il database funzioni semplicemente avviando il programma con il comando #mongo
e provando a richiedere un elenco dei database con >show databases
.
Ci sono alcune variabili da aggiornare durante il passaggio delle varie versioni.
Nel caso della 3.4 bisogna eseguire il comando setFeatureCompatibilityVersion
per aggiornare la versione di compatibilità
db.adminCommand( { setFeatureCompatibilityVersion: "3.4" } )
questo comando va ripetuto per le successive versioni 3.6
e il database deve rispondere con { "ok" : 1 }
Azioni supplementari
Cancellare i binari e ripristinare mongo
Nel caso sia necessario un downgrade di versione per errori improvvisi bisogna eseguire una cancellazione dei binary della versione attuale e tornare all’ultima funzionante.
Il tutto senza andare a toccare la cartella dei logo e dei dati.
Il comando di yum per cancellare i file binari è il seguente:
yum erase $(rpm -qa | grep mongodb-org)
mentre le cartelle che contengono i log ed i dati che non vanno toccati sono le seguenti
/var/log/mongodb /var/lib/mongodb
Abilitare l’accesso esternamente – COMPASS
Seguendo la guida di MongoDb viene spiegato che per permettere l’accesso ad DB non solo da localhost ma anche da remoto, sia sufficiente modificare il file /etc/mongod.conf
. Nella pratica, fino alla versione 3.6 questa modifica non funziona. E ne abbiamo una prova certa provando ad accedere al db 3.2 da Compass la gui che ci permette di interfacciarci facilmente con MongoDb. Otteniamo in fatti questo messaggio di errore
Server at 192.168.235.47:27017 reports maximum wire version 4, but this version of the Node.js Driver requires at least 6 (MongoDB 3.6)
Aumentiamo il numero di file aperti.
Con il passaggio a Mongodb 4.2 è necessario aumentare il numero di file che il sistema può aprire in contemporanea. Per vedere i valori di defualt si può lanciare il comando ulimit -a
che mostra a schermo tutti i limiti, con i campi opzioni per poterli alterare. Dal sito web di MongoDb è consigliato di utilizzare il valore di open files a 64000. Quindi il comando da lanciare è:
ulimit -n 64000
Backup/Restore del db
Per eseguire il backup ed il restore del database dobbiamo usare i comandi mongodump e mongorestore
Come suggerito dal manuale di mongo il comando per eseguire il dump è
mongodump -d <database> -o <directory_output>
Al contrario per ripristinare il database dobbiamo usare il comando
mongorestore -d <database> <directory_output>