Upgrading a MongoDB replica set to 7.x on Ubuntu 20.04
Preparation
- Create a backup of the MongoDB databases
- Make a copy of the
/etc/mongod.confconfiguration file. - If Passwork is installed on a virtual server, we recommend taking snapshots of the operating systems before performing the upgrade.
- Make sure the server has access to the MongoDB repositories.
The example uses three servers configured for data replication:
example-mongo-01(PRIMARY)example-mongo-02(SECONDARY)example-mongo-03(SECONDARY)
Checking the current version
Check the MongoDB version in use:
- shell
mongod --version
If the MongoDB version is 4.2, you first need to upgrade to 4.4, because migration to MongoDB 5.0 is only available from version 4.4.
If the current MongoDB version is already 4.4, go straight to the Upgrading the MongoDB replica set to version 5.0.x section.
Upgrading the MongoDB replica set to version 4.4
Adding the MongoDB repository
The steps in this section must be performed on all servers of the replica set.
Download the key and add the repository to the local OS store:
- shell
curl -fsSL https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
Update the list of available packages:
- shell
apt update
Upgrading the MongoDB nodes
The upgrade must be performed one instance at a time across the replica set.
Stop the MongoDB service:
- shell
systemctl stop mongod.service
Upgrade MongoDB to version 4.4:
- shell
apt upgrade mongodb-org -y
Do not update the MongoDB configuration file /etc/mongod.conf — keep the current version (N when prompted to replace it).
If an error occurs during the process, run:
- shell
apt --fix-broken install
Start the MongoDB service:
- shell
systemctl start mongod.service
Connect to the replica set and check the state of the nodes:
- shell
mongo --host rs0/example-mongo-01:27017,example-mongo-02:27017,example-mongo-03:27017
rs.status()
Changing the compatibility parameter
featureCompatibilityVersion must be changed after all MongoDB instances have been upgraded.
Connect to the MongoDB shell (replica set):
- shell
mongo --host rs0/example-mongo-01:27017,example-mongo-02:27017,example-mongo-03:27017
Update the featureCompatibilityVersion parameter:
- shell
db.adminCommand({ setFeatureCompatibilityVersion: "4.4" })
Open the Passwork web interface and make sure everything works correctly.
Upgrading the MongoDB replica set to version 5.0.x
Adding the MongoDB repository
The steps in this section must be performed on all servers of the replica set.
Download the key and add the repository:
- shell
curl -fsSL https://www.mongodb.org/static/pgp/server-5.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-5.0.gpg --dearmor
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-5.0.gpg ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list
Update the package list:
- shell
apt update
Upgrading the MongoDB nodes
The steps are performed one at a time on each node of the replica set.
Stop the MongoDB service:
- shell
systemctl stop mongod.service
Upgrade MongoDB to version 5.0.x:
- shell
apt upgrade mongodb-org -y
Do not update the MongoDB configuration file /etc/mongod.conf — keep the current version (N when prompted to replace it).
Start the MongoDB service:
- shell
systemctl start mongod.service
Check the state of the replica set:
- shell
mongo --host rs0/example-mongo-01:27017,example-mongo-02:27017,example-mongo-03:27017
rs.status()
Changing the compatibility parameter
Perform this after all nodes have been upgraded to version 5.0.x.
Connect to the MongoDB shell:
- shell
mongo --host rs0/example-mongo-01:27017,example-mongo-02:27017,example-mongo-03:27017
Update featureCompatibilityVersion:
- shell
db.adminCommand({ setFeatureCompatibilityVersion: "5.0" })
Open the Passwork web interface and check that it works.
Upgrading the MongoDB replica set to version 6.0.x
Adding the MongoDB repository
The steps in this section are performed on all servers of the replica set.
Download the key and add the repository:
- shell
curl -fsSL https://www.mongodb.org/static/pgp/server-6.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-6.0.gpg --dearmor
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
Update the package list:
- shell
apt update
Upgrading the MongoDB nodes
Perform the upgrade one node at a time across the replica set.
Stop the MongoDB service:
- shell
systemctl stop mongod.service
Upgrade MongoDB to version 6.0.x:
- shell
apt upgrade mongodb-org -y
Do not update the MongoDB configuration file /etc/mongod.conf — keep the current version (N when prompted to replace it).
Start the MongoDB service:
- shell
systemctl start mongod.service
Check the state of the replica set:
- shell
mongosh --host rs0/example-mongo-01:27017,example-mongo-02:27017,example-mongo-03:27017
rs.status()
Changing the compatibility parameter
Perform this after all nodes have been upgraded to version 6.0.x.
Connect to the MongoDB shell:
- shell
mongosh --host rs0/example-mongo-01:27017,example-mongo-02:27017,example-mongo-03:27017
Update featureCompatibilityVersion:
- shell
db.adminCommand({ setFeatureCompatibilityVersion: "6.0" })
Open the Passwork web interface and make sure Passwork works correctly with the upgraded MongoDB version.