> For the complete MongoDB documentation index, see www.mongodb.com/docs/llms.txt

# Relational Migrator Overview and Features

Relational Migrator is a free tool to help you migrate from a relational database to MongoDB. This page provides an overview of Relational Migrator's [key features](https://www.mongodb.com/docs/relational-migrator/getting-started.md#std-label-rm-key-features), [use cases](https://www.mongodb.com/docs/relational-migrator/getting-started.md#std-label-rm-use-cases), [migration scenarios](https://www.mongodb.com/docs/relational-migrator/getting-started.md#std-label-rm-migration-scenarios), and [supported databases and versions.](https://www.mongodb.com/docs/relational-migrator/getting-started.md#std-label-supported-databases)

## Key Features

### Map and Model Data

Relational Migrator provides an entity-relationship diagram builder to map your relational schema to a MongoDB schema. You can start with a recommended schema, a 1:1 mapping, or create a new schema from scratch. For more information, see [Data Modeling.](https://www.mongodb.com/docs/relational-migrator/mapping-rules/introduction.md#std-label-rm-mapping-rules)

Relational Migrator also provides features to generate and export a JSON schema, and sample documents for each collection. For more information, see [JSON Schema.](https://www.mongodb.com/docs/relational-migrator/json-schema.md#std-label-rm-json-schema)

### Migrate to MongoDB

Use Relational Migrator snapshot migration jobs to migrate data from [supported relational databases](https://www.mongodb.com/docs/relational-migrator/getting-started.md#std-label-supported-databases) to MongoDB Atlas or a self-managed MongoDB deployment. For more information, see [Use Cases.](https://www.mongodb.com/docs/relational-migrator/getting-started.md#std-label-rm-use-cases)

## Use Cases

Relational Migrator is only compatible with Snapshot migration jobs.

Snapshot migration jobs migrate all data once, and then stop. A snapshot migration job is a Relational Migrator operation that copies your data as it exists at a point in time. It isn't a SQL Server database snapshot.

To run a snapshot migration on a cadence, such as daily, use the Relational Migrator [REST API](https://www.mongodb.com/docs/relational-migrator/api-docs.md#std-label-rm-rest-api) with a task scheduler. You can use snapshot migrations for point-in-time database migrations, batch migrations, and incremental syncs. You can also use them with [table filters](https://www.mongodb.com/docs/relational-migrator/table-filters.md#std-label-rm-table-filters) to split large migration jobs into parallel batches to improve performance.

You can select which tables to import when [creating projects](https://www.mongodb.com/docs/relational-migrator/projects/create-project-live-connection.md#std-label-rm-create-project-live) or which collections to migrate when [creating migration jobs.](https://www.mongodb.com/docs/relational-migrator/jobs/creating-jobs.md#std-label-rm-create-jobs)

## Migration Scenarios

You can use Relational Migrator to migrate one legacy application at a time to MongoDB. Depending on your application's needs, you can migrate either with or without downtime.

### Migrate During Scheduled Downtime

If your application does not require constant uptime, such as an internal application, you can have the migration occur during scheduled downtime. Migrating during downtime is the easiest way to configure and complete the migration process.

When you start the migration process, Relational Migrator takes a snapshot of the data on the legacy application and migrates the data from that point in time. During the migration process, your legacy application can remain online to support incoming reads, but cannot support incoming writes. The length of the migration process depends on several factors, such as the amount of data being migrated and your connection speed.

After the migration completes, take your legacy application offline and launch your new application.

### Unsupported Scenarios

Relational Migrator currently does not support migrating an operational data store.

Relational Migrator doesn't support continuous sync or change data capture (CDC) migration, or ongoing replication of changes. To migrate data, you must run a snapshot migration job.

For SQL Server sources, you must enable CDC on the source database before you run a snapshot migration job. CDC is a source database prerequisite and doesn't enable continuous migration. To learn how to configure SQL Server, see [Configure SQL Server.](https://www.mongodb.com/docs/relational-migrator/jobs/prerequisites/sql-server.md#std-label-rm-prereq-sqlserver)

Loading a schema from a Data Definition Language (DDL) file is for schema modeling only and doesn't migrate data. To learn how to load a DDL file, see [Load a Data Definition Language File.](https://www.mongodb.com/docs/relational-migrator/database-connections/create-project-loading-schema-files.md#std-label-create-project-schema-file)

**Important:**

Migrations to sharded clusters are disabled by default due to potential data loss when embedded arrays or embedded documents are present and the balancer is enabled.

To migrate to a sharded cluster, set the `migrator.sharded.connection.allowed: true` user property.

MongoDB recommends disabling the MongoDB balancer for the duration of any migration to a sharded cluster. For more information, see the [release notes](https://www.mongodb.com/docs/relational-migrator/release-notes.md#std-label-rm-sharded-cluster-limitation). To find the `user.properties` file on your system, see [Relational Migrator File Locations.](https://www.mongodb.com/docs/relational-migrator/installation/file-location.md#std-label-file-location)

## Supported Databases and Versions

### Source Databases and Versions

Relational Migrator supports the following source databases:

| Database | Supported Versions | Deployments |
| --- | --- | --- |
| [Microsoft SQL Server](https://www.mongodb.com/docs/relational-migrator/jobs/prerequisites/sql-server.md#std-label-rm-prereq-sqlserver) | 2012 and higher (Enterprise or Developer edition required for versions before 2016) | Self hosted, AWS RDS, Azure SQL Database |
| [MySQL](https://www.mongodb.com/docs/relational-migrator/jobs/prerequisites/my-sql.md#std-label-rm-prereq-mysql) | 5.7 and higher | Self hosted, AWS RDS/Aurora, Azure Database |
| [Oracle](https://www.mongodb.com/docs/relational-migrator/jobs/prerequisites/oracle.md#std-label-rm-prereq-oracle) | 11g and higher | Self hosted, AWS RDS |
| [PostgreSQL](https://www.mongodb.com/docs/relational-migrator/jobs/prerequisites/postgres.md#std-label-rm-prereq-postgres) | 10 and higher | Self hosted, AWS RDS/Aurora, Azure Database |
| [TimescaleDB hypertables](https://docs.timescale.com/use-timescale/latest/hypertables/) | 10 and higher | Self hosted, AWS RDS/Aurora, Azure Database |

For information on connecting to relational databases, see [Connect to Databases.](https://www.mongodb.com/docs/relational-migrator/database-connections.md#std-label-rm-database-connections)

#### Databases Supported with a JDBC Driver

**Important:**

This feature is in public preview.

Some databases are supported for snapshot data migration through a JDBC connection.

| Database | Supported Versions | Deployments |
| --- | --- | --- |
| DB2 | 11.5 and higher | Self hosted, AWS RDS |
| Sybase ASE | 15 and higher | Self hosted |

### Target Databases and Versions

Relational Migrator supports the following target databases:

| Deployment Type | Supported Versions |
| --- | --- |
| MongoDB Server (Self-Managed) | 5.0 and higher |
| MongoDB Atlas | 5.0 and higher |

For information on connecting to MongoDB, see [Connect to MongoDB.](https://www.mongodb.com/docs/relational-migrator/database-connections/mongodb.md#std-label-rm-connect-to-mongo)

## Learn More

- [Relational Migrator Introductory Video Series](https://learn.mongodb.com/courses/mongodb-relational-migrator)

- [User Interface Overview](https://www.mongodb.com/docs/relational-migrator/getting-started/overview.md#std-label-rm-project-overview)
