Navigation

Change Replica Set to WiredTiger

Starting in version 3.2, WiredTiger is the default storage engine for MongoDB.

This tutorial gives an overview of changing the storage engine of a replica set member to WiredTiger.

Considerations

Replica sets can have members with different storage engines. As such, you can update members to use the WiredTiger storage engine in a rolling fashion.

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.

Procedure

To update a member to WiredTiger, the procedure removes a member’s data, starts mongod with WiredTiger, and performs an initial sync.

Tip

To update all members of the replica set to use WiredTiger, update the members in a rolling manner. That is, update, one by one, all secondary members first. Then, once all the secondary members have been updated, step down the primary, and update that stepped-down member.

Update a secondary member.

1

Shut down the secondary member.

In the mongo shell, shut down the secondary mongod instance.

db.shutdownServer()
2

Prepare a data directory for the new mongod running with WiredTiger.

Prepare 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. You can either delete the contents of the stopped secondary member’s current data directory or create a new directory entirely.

mongod with WiredTiger will not start with data files created with a different storage engine.

3

Start mongod with WiredTiger.

Start mongod, specifying wiredTiger as the --storageEngine and the prepared data directory for WiredTiger as the --dbpath. Specify additional options as appropriate for this replica set member.

mongod --storageEngine wiredTiger --dbpath <newWiredTigerDBPath> --replSet <replSetName>

Since no data exists in the --dbpath, the mongod will perform an initial sync. The length of the initial sync process depends on the size of the database and network connection between members of the replica set.

You can also specify the options in a configuration file. To specify the storage engine, use the storage.engine setting.

To update another secondary, repeat the previous steps.

Update the primary.

Important

If updating all members of the replica set to use WiredTiger, ensure that all secondary members have been updated first before updating the primary.

To update the primary, step down the primary.

rs.stepDown()

When the primary has stepped down and become a secondary, update the secondary to use WiredTiger as before:

1

Shut down the secondary member.

In the mongo shell, shut down the secondary mongod instance.

db.shutdownServer()
2

Prepare a data directory for the new mongod running with WiredTiger.

Prepare 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. You can either delete the contents of the stopped secondary member’s current data directory or create a new directory entirely.

mongod with WiredTiger will not start with data files created with a different storage engine.

3

Start mongod with WiredTiger.

Start mongod, specifying wiredTiger as the --storageEngine and the prepared data directory for WiredTiger as the --dbpath. Specify additional options as appropriate for this replica set member.

mongod --storageEngine wiredTiger --dbpath <newWiredTigerDBPath> --replSet <replSetName>

Since no data exists in the --dbpath, the mongod will perform an initial sync. The length of the initial sync process depends on the size of the database and network connection between members of the replica set.

You can also specify the options in a configuration file. To specify the storage engine, use the storage.engine setting.