Percona Server per MongoDB è una distribuzione open source MongoDB basata su Percona. È un sostituto gratuito, completamente compatibile e sostitutivo dell'edizione MongoDB Community. Fornisce inoltre funzionalità di "livello aziendale" che altrimenti sarebbero disponibili solo nell'edizione Enterprise di MongoDB, ad esempio:autenticazione e autorizzazione LDAP, registrazione di controllo, autenticazione Kerberos.
L'aggiornamento di Percona Server per MongoDB è davvero semplice. In questo blog discuteremo alcuni suggerimenti per l'aggiornamento e mostreremo un esempio di come eseguire l'aggiornamento dalla versione 3.6 alla versione 4.0.
Preparazione aggiornamento
Prima di eseguire l'aggiornamento, potresti voler fare un po' di preparazione. Controlla sempre le modifiche di compatibilità nella documentazione e sul lato dell'applicazione; controllare la documentazione relativa alle modifiche e alle funzionalità migliorative, funzionalità obsolete (se presenti).
Controlla la matrice di compatibilità dei driver per MongoDB per capire se è necessario aggiornare anche il driver.
Prepara una lista di controllo passo passo su come verrà eseguito l'aggiornamento. Annotare il piano d'azione, le parti devono essere coinvolte nella documentazione, piano di rollback per gli scenari peggiori.
Aggiornamento di Percona Server per MongoDB
È sempre utile testare l'aggiornamento nell'ambiente di sviluppo o di staging prima di passare all'ambiente di produzione. Puoi costruire esattamente la stessa architettura MongoDB di produzione, testare e ripristinare i dati dall'ultimo backup. Successivamente, puoi testare l'aggiornamento e convalidare il tuo piano di aggiornamento, non solo puoi ottenere una stima del tempo necessario per l'aggiornamento e anche verificare se l'applicazione è compatibile con la nuova versione del database.
Il processo di aggiornamento installa semplicemente il nuovo pacchetto dal repository percona, ecco come eseguire l'aggiornamento su CentOS basato dalla versione 3.6 alla versione 4.0.
Fase uno
Se non hai installato Percona Repository, puoi installare percona-release-latest.
[[email protected] ~]# yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
Loaded plugins: fastestmirror
percona-release-latest.noarch.rpm | 19 kB 00:00:00
Examining /var/tmp/yum-root-evWD4w/percona-release-latest.noarch.rpm: percona-release-1.0-25.noarch
Marking /var/tmp/yum-root-evWD4w/percona-release-latest.noarch.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package percona-release.noarch 0:1.0-25 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
===========================================================================================================================================
Package Arch Version Repository Size
===========================================================================================================================================
Installing:
percona-release noarch 1.0-25 /percona-release-latest.noarch 31 k
Transaction Summary
===========================================================================================================================================
Install 1 Package
Total size: 31 k
Installed size: 31 k
Is this ok [y/d/N]: y
Fase due
Dopo aver installato il repository Percona, abilita Percona Server per MongoDB 4.0
[[email protected] ~]# percona-release enable psmdb-40
* Enabling the Percona Server for MongoDB 4.0 repository
<*> All done!
Fase tre
Installa il nuovo pacchetto percona-server-mongodb, rimuoverà automaticamente il vecchio pacchetto e installerà il nuovo pacchetto:
[[email protected] ~]# yum install percona-server-mongodb
Loaded plugins: fastestmirror
Repository percona-release-noarch is listed more than once in the configuration
base | 3.6 kB 00:00:00
extras | 2.9 kB 00:00:00
percona-release | 2.9 kB 00:00:00
percona-release-noarch | 2.9 kB 00:00:00
percona-release-x86_64 | 2.9 kB 00:00:00
prel-release-noarch | 2.9 kB 00:00:00
psmdb-40-release-x86_64 | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
(1/3): prel-release-noarch/7/primary_db | 2.5 kB 00:00:00
(2/3): psmdb-40-release-x86_64/7/primary_db | 47 kB 00:00:01
(3/3): percona-release-x86_64/7/primary_db | 1.1 MB 00:00:03
Loading mirror speeds from cached hostfile
* base: mirror.buana.web.id
* extras: mirror.buana.web.id
* updates: mirror.buana.web.id
Resolving Dependencies
--> Running transaction check
---> Package Percona-Server-MongoDB-36.x86_64 0:3.6.19-8.0.el7 will be obsoleted
---> Package percona-server-mongodb.x86_64 0:4.0.20-14.el7 will be obsoleting
--> Processing Dependency: percona-server-mongodb-tools = 4.0.20-14.el7 for package: percona-server-mongodb-4.0.20-14.el7.x86_64
--> Processing Dependency: percona-server-mongodb-mongos = 4.0.20-14.el7 for package: percona-server-mongodb-4.0.20-14.el7.x86_64
--> Processing Dependency: percona-server-mongodb-shell = 4.0.20-14.el7 for package: percona-server-mongodb-4.0.20-14.el7.x86_64
--> Processing Dependency: percona-server-mongodb-server = 4.0.20-14.el7 for package: percona-server-mongodb-4.0.20-14.el7.x86_64
--> Running transaction check
---> Package Percona-Server-MongoDB-36-mongos.x86_64 0:3.6.19-8.0.el7 will be obsoleted
---> Package Percona-Server-MongoDB-36-server.x86_64 0:3.6.19-8.0.el7 will be obsoleted
---> Package Percona-Server-MongoDB-36-shell.x86_64 0:3.6.19-8.0.el7 will be obsoleted
---> Package Percona-Server-MongoDB-36-tools.x86_64 0:3.6.19-8.0.el7 will be obsoleted
---> Package percona-server-mongodb-mongos.x86_64 0:4.0.20-14.el7 will be obsoleting
---> Package percona-server-mongodb-server.x86_64 0:4.0.20-14.el7 will be obsoleting
---> Package percona-server-mongodb-shell.x86_64 0:4.0.20-14.el7 will be obsoleting
---> Package percona-server-mongodb-tools.x86_64 0:4.0.20-14.el7 will be obsoleting
--> Finished Dependency Resolution
Dependencies Resolved
===========================================================================================================================================
Package Arch Version Repository Size
===========================================================================================================================================
Installing:
percona-server-mongodb x86_64 4.0.20-14.el7 psmdb-40-release-x86_64 4.9 k
replacing Percona-Server-MongoDB-36.x86_64 3.6.19-8.0.el7
percona-server-mongodb-mongos x86_64 4.0.20-14.el7 psmdb-40-release-x86_64 8.9 M
replacing Percona-Server-MongoDB-36-mongos.x86_64 3.6.19-8.0.el7
percona-server-mongodb-server x86_64 4.0.20-14.el7 psmdb-40-release-x86_64 19 M
replacing Percona-Server-MongoDB-36-server.x86_64 3.6.19-8.0.el7
percona-server-mongodb-shell x86_64 4.0.20-14.el7 psmdb-40-release-x86_64 9.8 M
replacing Percona-Server-MongoDB-36-shell.x86_64 3.6.19-8.0.el7
percona-server-mongodb-tools x86_64 4.0.20-14.el7 psmdb-40-release-x86_64 28 M
replacing Percona-Server-MongoDB-36-tools.x86_64 3.6.19-8.0.el7
Transaction Summary
===========================================================================================================================================
Install 5 Packages
Total download size: 66 M
Is this ok [y/d/N]: y
Downloading packages:
(1/5): percona-server-mongodb-4.0.20-14.el7.x86_64.rpm | 4.9 kB 00:00:05
(2/5): percona-server-mongodb-mongos-4.0.20-14.el7.x86_64.rpm | 8.9 MB 00:00:39
(3/5): percona-server-mongodb-shell-4.0.20-14.el7.x86_64.rpm | 9.8 MB 00:00:42
(4/5): percona-server-mongodb-server-4.0.20-14.el7.x86_64.rpm | 19 MB 00:01:23
(5/5): percona-server-mongodb-tools-4.0.20-14.el7.x86_64.rpm | 28 MB 00:02:00
-------------------------------------------------------------------------------------------------------------------------------------------
Total 332 kB/s | 66 MB 00:03:22
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : percona-server-mongodb-shell-4.0.20-14.el7.x86_64 1/10
Installing : percona-server-mongodb-server-4.0.20-14.el7.x86_64 2/10
warning: /etc/mongod.conf created as /etc/mongod.conf.rpmnew
* To start the service, configure your engine and start mongod
** WARNING: Access control is not enabled for the database.
** Read and write access to data and configuration is unrestricted.
** To fix this please use /usr/bin/percona-server-mongodb-enable-auth.sh
Installing : percona-server-mongodb-mongos-4.0.20-14.el7.x86_64 3/10
Installing : percona-server-mongodb-tools-4.0.20-14.el7.x86_64 4/10
Installing : percona-server-mongodb-4.0.20-14.el7.x86_64 5/10
Erasing : Percona-Server-MongoDB-36-3.6.19-8.0.el7.x86_64 6/10
Erasing : Percona-Server-MongoDB-36-server-3.6.19-8.0.el7.x86_64 7/10
Erasing : Percona-Server-MongoDB-36-shell-3.6.19-8.0.el7.x86_64 8/10
Erasing : Percona-Server-MongoDB-36-mongos-3.6.19-8.0.el7.x86_64 9/10
Erasing : Percona-Server-MongoDB-36-tools-3.6.19-8.0.el7.x86_64 10/10
Verifying : percona-server-mongodb-server-4.0.20-14.el7.x86_64 1/10
Verifying : percona-server-mongodb-tools-4.0.20-14.el7.x86_64 2/10
Verifying : percona-server-mongodb-mongos-4.0.20-14.el7.x86_64 3/10
Verifying : percona-server-mongodb-shell-4.0.20-14.el7.x86_64 4/10
Verifying : percona-server-mongodb-4.0.20-14.el7.x86_64 5/10
Verifying : Percona-Server-MongoDB-36-server-3.6.19-8.0.el7.x86_64 6/10
Verifying : Percona-Server-MongoDB-36-tools-3.6.19-8.0.el7.x86_64 7/10
Verifying : Percona-Server-MongoDB-36-mongos-3.6.19-8.0.el7.x86_64 8/10
Verifying : Percona-Server-MongoDB-36-shell-3.6.19-8.0.el7.x86_64 9/10
Verifying : Percona-Server-MongoDB-36-3.6.19-8.0.el7.x86_64 10/10
Installed:
percona-server-mongodb.x86_64 0:4.0.20-14.el7 percona-server-mongodb-mongos.x86_64 0:4.0.20-14.el7
percona-server-mongodb-server.x86_64 0:4.0.20-14.el7 percona-server-mongodb-shell.x86_64 0:4.0.20-14.el7
percona-server-mongodb-tools.x86_64 0:4.0.20-14.el7
Replaced:
Percona-Server-MongoDB-36.x86_64 0:3.6.19-8.0.el7 Percona-Server-MongoDB-36-mongos.x86_64 0:3.6.19-8.0.el7
Percona-Server-MongoDB-36-server.x86_64 0:3.6.19-8.0.el7 Percona-Server-MongoDB-36-shell.x86_64 0:3.6.19-8.0.el7
Percona-Server-MongoDB-36-tools.x86_64 0:3.6.19-8.0.el7
Complete!
Fase quattro
Infine, avvia i servizi mongod.
$ systemctl start mongod.service
Il processo di installazione su Ubuntu/Debian è simile, hai solo bisogno del comando dal gestore di pacchetti APT.
In un'architettura MongoDB a disponibilità elevata, puoi eseguire un aggiornamento in sequenza per ridurre al minimo i tempi di inattività.
Se la tua applicazione supporta già l'ultima versione di MongoDB, puoi impostare il parametro
setFeatureCompatibilityVersion after the upgrade was completed.
> db.adminCommand( { setFeatureCompatibilityVersion: "4.0" } )
Verifica dell'aggiornamento
Puoi verificare se l'aggiornamento è andato a buon fine collegandoti direttamente all'istanza MongoDB. Controlla se il database è in esecuzione con la versione corretta:
> db.version()
Oppure puoi controllare dalla riga di comando:
[[email protected] lib]# mongod --version
db version v4.0.20-14
git version: b96ae5b9e6c70670b6880d4c5412167a7017713a
OpenSSL version: OpenSSL 1.0.2k-fips 26 Jan 2017
allocator: tcmalloc
modules: none
build environment:
distarch: x86_64
target_arch: x86_64