Change Standalone to WiredTiger
Starting in version 4.2, MongoDB removes the deprecated MMAPv1 storage engine. If upgrading to MongoDB 4.2 from a MongoDB 4.0 deployment that uses MMAPv1, you must upgrade to WiredTiger.
Use this tutorial to change the storage engine of a standalone MongoDB instance to WiredTiger.
This tutorial uses the
mongorestore utilities to export and import data.
Default Bind to Localhost
Starting with MongoDB 3.6, MongoDB binaries,
mongos, bind to
localhost by default.
From MongoDB versions 2.6 to 3.4, only the binaries from the
official MongoDB RPM (Red Hat, CentOS, Fedora Linux, and derivatives)
and DEB (Debian, Ubuntu, and derivatives) packages would bind to
localhost by default. To learn more about this change, see
Localhost Binding Compatibility Changes.
The tutorial runs
mongorestore from the same host as the
mongod they are connecting to. If run remotely,
mongorestore must specify
the ip address or the associated hostname in order to connect to the
MongoDB 3.0 or Greater
You must be using MongoDB version 3.0 or greater in order to use the WiredTiger storage engine. If using an earlier MongoDB version, you must upgrade your MongoDB version before proceeding to change your storage engine. To upgrade your MongoDB version, refer to the appropriate version of the manual.
XFS and WiredTiger
With the WiredTiger storage engine, using XFS for data bearing nodes is recommended on Linux. For more information, see Kernel and File Systems.
MMAPv1 Only Restrictions
Once upgraded to WiredTiger, your WiredTiger deployment is not subject to the following MMAPv1-only restrictions:
Number of Namespaces
For MMAPv1, the number of namespaces is limited to the size of the namespace file divided by 628.
Size of Namespace File
For MMAPv1, namespace files can be no larger than 2047 megabytes.
The MMAPv1 storage engine limits each database to no more than 16000 data files.
For MMAPv1, a single
Number of Collections in a Database
For the MMAPv1 storage engine, the maximum number of collections in a database is a function of the size of the namespace file and the number of indexes of collections in the database.
mongod you wish to change to WiredTiger.
mongod is already running, you can skip this step.
Export data using
Specify additional options as appropriate, such as username and
password if running with authorization enabled. See
mongodump for available options.
Create a data directory for the new
mongod running with WiredTiger.
Create a data directory for the new
mongod instance that
will run with the WiredTiger storage engine.
mongod must have read
and write permissions for this directory.
mongod with WiredTiger will not start with data files created with
a different storage engine.
Update configuration for WiredTiger.
Remove any MMAPv1 Specific Configuration Options from the
mongod with WiredTiger.
wiredTiger as the
--storageEngine and the newly
created data directory for WiredTiger as the
Specify additional options as appropriate, such as
Before binding to a non-localhost (e.g. publicly accessible) IP address, ensure you have secured your cluster from unauthorized access. For a complete list of security recommendations, see Security Checklist. At minimum, consider enabling authentication and hardening network infrastructure.
mongod --storageEngine wiredTiger --dbpath <newWiredTigerDBPath> --bind_ip localhost,<hostname(s)|ip address(es)>
You can also specify the options in a configuration file. To specify the storage engine, use
Upload the exported data using
Specify additional options as appropriate. See
mongorestore for available options.