MongoDB installazione ed aggiornamento su Centoos7

In questo articolo tutorial vediamo come

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>