Sling Academy
Home/MongoDB/Where does MongoDB store data and how to change it

Where does MongoDB store data and how to change it

Last updated: February 02, 2024

Introduction

MongoDB, as a NoSQL database, offers high performance, availability, and scalability along with a flexible schema design. Understanding where MongoDB stores its data and how to manipulate this storage location is critical for effective database management and migration. In this guide, we will explore MongoDB’s storage details and provide steps on how to change its default data path.

Understanding MongoDB’s Data Storage

By default, MongoDB stores data in the /data/db directory when installed on Unix-like systems. For Windows, MongoDB opts for a path within the program files. The database files are organized by database names, and each database’s collection and index information are maintained within these files.

Prerequisites

  • A running instance of MongoDB
  • Access to the command line interface (CLI) or terminal
  • Basic familiarity with MongoDB commands

Checking the Current Storage Path

To begin, we need to confirm the current storage path of MongoDB. Launch the MongoDB shell and type:

db.serverCmdLineOpts()

This command will output the configuration of the MongoDB server, including its data directory as specified by the --dbpath option.

Changing the Storage Path

To change the storage path, you’ll need to stop the MongoDB service, move the data to the new directory, and then restart MongoDB with the new path.

Stopping MongoDB

On Unix-like systems:

sudo service mongod stop

On Windows:

net stop MongoDB

Moving the Data

Move the existing data to the new directory, ensuring permissions are adequate:

sudo mv /data/db /new/directory/path
sudo chown -R mongodb:mongodb /new/directory/path

Restarting with the New Path

To restart and apply the new data path, utilize the --dbpath flag on Unix-like systems:

mongod --dbpath /new/directory/path

For Windows, edit the MongoDB/config-file and adjust the dbpath value:

dbpath=C:\new\directory\path

Advanced Configuration

For more sophisticated scenarios, you may wish to update your MongoDB configuration file (typically mongod.conf on Unix-like systems or mongod.cfg on Windows). This file allows setting the data directory path persistently among other configurations.

Unix-Like Systems

storage:
  dbPath: /new/directory/path

Windows

storage:
  dbPath: C:\new\directory\path

As an alternative approach, creating symbolic links to redirect the MongoDB data directory can be useful, especially if physical migration of data involves significant downtime.

sudo service mongod stop
sudo mv /data/db /new/directory/path
sudo ln -s /new/directory/path /data/db
sudo service mongod start

Managing Data with Replication and Sharding

In a sharded or replicated MongoDB environment, manipulating the storage path must be carried out for each shard or replica set member. Here, configuration changes should be done cautiously to ensure that the overall cluster remains consistent and highly available.

Update members of a replica set by connecting to each member individually and reconfiguring their dbPath. Ensure the replica set is healthy and reach consensus before removing old paths.

Automating through Scripts

For larger deployments, automating the process through scripts dramatically reduces potential human errors and streamlines the data migration process.

Example Bash Script to Move MongoDB Data

#!/bin/bash

stop_mongodb() {
    echo "Stopping MongoDB service..."
    sudo service mongod stop
}

move_data_files() {
    echo "Moving MongoDB data files..."
    sudo mv /data/db /new/directory/path
    sudo chown -R mongodb:mongodb /new/directory/path
}

update_db_path() {
    echo "Updating dbPath in MongoDB config..."
    sudo sed -i 's|/data/db|/new/directory/path|g' /etc/mongod.conf
}

start_mongodb() {
    echo "Starting MongoDB service with new dbPath..."
    sudo service mongod start
}

stop_mongodb
move_data_files
update_db_path
start_mongodb

echo "MongoDB data migration completed."

Conclusion

MongoDB is flexible in terms of data storage paths. Knowing how to check and change the path where MongoDB data files are stored is essential for database management, migration, and disaster recovery planning. Handle storage adjustments carefully to maintain the integrity of the database. This guide provides an outline of how such changes can be achieved effectively.

Next Article: What is the Default Port of MongoDB and How to Change It

Previous Article: How to install MongoDB Shell (mongosh) on Windows, Mac, and Ubuntu

Series: MongoDB Tutorials

MongoDB

You May Also Like

  • MongoDB: How to combine data from 2 collections into one
  • Hashed Indexes in MongoDB: A Practical Guide
  • Partitioning and Sharding in MongoDB: A Practical Guide (with Examples)
  • Geospatial Indexes in MongoDB: How to Speed Up Geospatial Queries
  • Understanding Partial Indexes in MongoDB
  • Exploring Sparse Indexes in MongoDB (with Examples)
  • Using Wildcard Indexes in MongoDB: An In-Depth Guide
  • Matching binary values in MongoDB: A practical guide (with examples)
  • Understanding $slice operator in MongoDB (with examples)
  • Caching in MongoDB: A practical guide (with examples)
  • CannotReuseObject Error: Attempted illegal reuse of a Mongo object in the same process space
  • How to perform cascade deletion in MongoDB (with examples)
  • MongoDB: Using $not and $nor operators to negate a query
  • MongoDB: Find SUM/MIN/MAX/AVG of each group in a collection
  • References (Manual Linking) in MongoDB: A Developer’s Guide (with Examples)
  • MongoDB: How to see all fields in a collection (with examples)
  • Type checking in MongoDB: A practical guide (with examples)
  • How to query an array of subdocuments in MongoDB (with examples)
  • MongoDB: How to compare 2 documents (with examples)