mongo_upgrade_logical

In this method, we simply export the database from the old release and import it in the new release. During this, the old database can be removed but it is best practice advise to keep the old release working on the old server just in case.

The steps for this method are simple:

  1. Make a backup of the database or server (using mongodump)
  2. Install the new software (preferably the latest)
  3. Import the backup into the release (using mongorestore)

So let's get going:

As mentioned before, mongo has two types of backup:

  • Physical
  • Logical

In that method, we are using the LOGICAL one, as the physical will NOT be compatible with the new release.

[root@localhost backup]#  mongodump  --out /root/backup/`date +"%m-%d-%y"`
2019-09-16T06:31:47.226-0400    writing admin.system.version to
2019-09-16T06:31:47.227-0400    done dumping admin.system.version (1 document)
2019-09-16T06:31:47.227-0400    writing admin.artists to
2019-09-16T06:31:47.227-0400    done dumping admin.artists (2 documents)
[root@localhost backup]#

This command will export all not system databases and relations in the system.

After that install the new software, either on the same server: By deleting the old one and installing the new one OR on a new server.

[root@localhost ~]# yum install mongodb-org-server.x86_64
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirror.it4i.cz
 * extras: mirror.it4i.cz
 * updates: mirror.it4i.cz                                                                                                                                                                                                    | 2.5 kB  00:00:00
mongodb-org-4.2                                                                                                                                                                                                       | 2.5 kB  00:00:00
Resolving Dependencies
--> Running transaction check
---> Package mongodb-org-server.x86_64 0:4.2.14-1.el7 will be an update
--> Finished Dependency Resolution
 
Dependencies Resolved
 
=============================================================================================================================================================================================================================================
 Package                                                       Arch                                              Version                                                    Repository                                                  Size
=============================================================================================================================================================================================================================================
Updating:
 mongodb-org-server                                            x86_64                                            4.2.14-1.el7                                               mongodb-org-4.2                                             20 M
 
Transaction Summary
=============================================================================================================================================================================================================================================
Upgrade  1 Package
 
Total download size: 20 M
Is this ok [y/d/N]: y
Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
mongodb-org-server-4.2.14-1.el7.x86_64.rpm                                                                                                                                                                            |  20 MB  00:00:01
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Updating   : mongodb-org-server-4.2.14-1.el7.x86_64                                                                                                                                                                                    1/2                                                                                                                                                                               2/2
  Verifying  : mongodb-org-server-4.2.14-1.el7.x86_64                                                                                                                                                                                    1/2                                                                                                                                                                                2/2
 
Updated:
  mongodb-org-server.x86_64 0:4.2.14-1.el7
 
Complete!
[root@localhost ~]#

There are couple changes to be done in order to secure our databases:

In order to change the IP, modify the /etc/mongod.conf file as so:

# network interfaces
net:
  port: 27017
  bindIp: 172.27.1.245  # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.

Restart the instance with:

[root@hostname hunter_dev]# service mongod restart
Redirecting to /bin/systemctl restart mongod.service

Users have to be added so we can enable security authentication:

[root@tbp-cx-mdb01 hunter_dev]# mongo 172.27.1.245
MongoDB shell version v4.0.13
connecting to: mongodb://172.27.1.245:27017/test?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("4c9e2e3d-4224-4731-89ad-3a2cca29110a") }
MongoDB server version: 4.0.13
Server has startup warnings:
2019-10-25T15:48:26.654+0200 I STORAGE  [initandlisten]
2019-10-25T15:48:26.655+0200 I STORAGE  [initandlisten] ** WARNING: Support for MMAPV1 storage engine has been deprecated and will be
2019-10-25T15:48:26.655+0200 I STORAGE  [initandlisten] **          removed in version 4.2. Please plan to migrate to the wiredTiger
2019-10-25T15:48:26.655+0200 I STORAGE  [initandlisten] **          storage engine.
2019-10-25T15:48:26.655+0200 I STORAGE  [initandlisten]
2019-10-25T15:48:26.662+0200 I STORAGE  [initandlisten]
2019-10-25T15:48:26.662+0200 I STORAGE  [initandlisten] ** WARNING: Readahead for /var/lib/mongo is set to 4096KB
2019-10-25T15:48:26.662+0200 I STORAGE  [initandlisten] **          We suggest setting it to 256KB (512 sectors) or less
2019-10-25T15:48:26.662+0200 I STORAGE  [initandlisten] **          http://dochub.mongodb.org/core/readahead
2019-10-25T15:48:27.012+0200 I CONTROL  [initandlisten]
2019-10-25T15:48:27.012+0200 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2019-10-25T15:48:27.012+0200 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2019-10-25T15:48:27.012+0200 I CONTROL  [initandlisten]
2019-10-25T15:48:27.013+0200 I CONTROL  [initandlisten]
2019-10-25T15:48:27.013+0200 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2019-10-25T15:48:27.013+0200 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2019-10-25T15:48:27.013+0200 I CONTROL  [initandlisten]
2019-10-25T15:48:27.013+0200 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2019-10-25T15:48:27.013+0200 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2019-10-25T15:48:27.013+0200 I CONTROL  [initandlisten]
---
Enable MongoDB's free cloud-based monitoring service, which will then receive and display
metrics about your deployment (disk utilization, CPU, operation statistics, etc).

The monitoring data will be available on a MongoDB website with a unique URL accessible to you
and anyone you share the URL with. MongoDB may use this information to make product
improvements and to suggest MongoDB products and deployment options to you.

To enable free monitoring, run the following command: db.enableFreeMonitoring()
To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
---

> use admin
switched to db admin
> db.createUser(
...  {
...        "user" : "adminDBA",
...        pwd: "3kHq9mNqMcxIDITbbEEq",
...         "roles" : [
...                 {
...                         "role" : "userAdminAnyDatabase",
...                         "db" : "admin"
...                 },
...                 {
...                         "role" : "root",
...                         "db" : "admin"
...                 },
...                 {
...                         "role" : "dbOwner",
...                         "db" : "admin"
...                 },
...                 {
...                         "role" : "userAdmin",
...                         "db" : "admin"
...                 }
...         ]
... }
... )

Secure authentication has to be enabled again in the /etc/mongod.conf as follows:

security:
  authorization: enabled

Again restart the service:

[root@hostname hunter_dev]# service mongod restart
Redirecting to /bin/systemctl restart mongod.service
[root@hostname hunter_dev]#

After that, we can simply import the exported data into the new release as follows:

[root@hostname hunter_dev]# mongorestore --host 172.27.1.245 -u adminDBA -p 'password' --port 27017  /root/backup/10-25-19/
2019-10-25T16:15:55.813+0200    preparing collections to restore from
2019-10-25T16:15:55.855+0200    reading metadata for hunter_dev.livefishs.rar.chunks from /root/backup/10-25-19/hunter_dev/livefishs.rar.chunks.metadata.json
2019-10-25T16:15:55.879+0200    reading metadata for monitor.config from /root/backup/10-25-19/monitor/config.metadata.json
------------------------------------------------------------------------------
2019-10-25T16:15:58.564+0200    finished restoring hunter_dev.billFish (0 documents)
2019-10-25T16:15:58.564+0200    restoring users from /root/backup/10-25-19/admin/system.users.bson
2019-10-25T16:15:58.638+0200    done

  • mongo_upgrade_logical.txt
  • Last modified: 2019/10/25 23:28
  • by 127.0.0.1