The Index Tool facilitates the migration of indexes metadata (excluding data) between document databases deployments.
Supported source:
- Amazon DocumentDB (any version)
- MongoDB (2.x and later versions) standalone, replicaset or sharded cluster
- Azure Cosmos DB
Supported target:
- Amazon DocumentDB (any version)
- Export indexes metadata from a running MongoDB or Amazon DocumentDB deployment
- Checks for any unsupported indexes types or collections options with Amazon DocumentDB
- Check index and collections options compatibility against a logical backup, taken with mongodump. The backup has to be uncompressed.
- Restores supported indexes to Amazon DocumentDB (instance based or Elastic cluster)
- Output is a json file, similar to mongodump format
- Supports creation of 2dsphere indexes using the --support-2dsphere command line option
Python 3.7 or greater, Pymongo.
Clone the repository and install the requirements:
git clone https://github.com/awslabs/amazon-documentdb-tools.git
cd amazon-documentdb-tools/index-tool
python3 -m pip install -r requirements.txt
The Index Tool accepts the following arguments:
--debug Output debugging information
--dry-run Perform processing, but do not actually export or restore indexes
--uri URI URI to connect to MongoDB or Amazon DocumentDB
--dir DIR Specify the folder to export to or restore from (required)
--show-compatible Output all compatible indexes with Amazon DocumentDB (no change is applied)
--show-issues Output a report of compatibility issues found
--dump-indexes Perform index export from the specified server
--restore-indexes Restore indexes found in metadata to the specified server
--skip-incompatible Skip incompatible indexes when restoring metadata
--support-2dsphere Support 2dsphere indexes creation (collections must use GeoJSON Point type for indexing)
--skip-python-version-check Permit execution using Python 3.6 and prior
--shorten-index-name Shorten long index name to compatible length
--skip-id-indexes Do not create _id indexes
python3 migrationtools/documentdb_index_tool.py --dump-indexes --dir mongodb_index_export --uri 'mongodb://localhost:27017'
python3 migrationtools/documentdb_index_tool.py --dump-indexes --dir docdb_index_export --uri 'mongodb://user:password@mydocdb.cluster-cdtjj00yfi95.eu-west-2.docdb.amazonaws.com:27017/?tls=true&tlsCAFile=rds-combined-ca-bundle.pem&replicaSet=rs0&retryWrites=false'
python3 migrationtools/documentdb_index_tool.py --show-issues --dir mongodb_index_export
python3 migrationtools/documentdb_index_tool.py --restore-indexes --skip-incompatible --dir mongodb_index_export --uri 'mongodb://user:password@mydocdb.cluster-cdtjj00yfi95.eu-west-2.docdb.amazonaws.com:27017/?tls=true&tlsCAFile=rds-combined-ca-bundle.pem&replicaSet=rs0&retryWrites=false'
Contributions are always welcome! See the contributing page for ways to get involved.