<!-- Source: https://dev.dbmigratepro.com/docs/getting-started -->

# Getting started

DBMigratePro moves a database from one place to another — **same-engine transfers**
(MySQL → MySQL, PostgreSQL → PostgreSQL) and **cross-engine conversions**
(MySQL ↔ PostgreSQL) — across any host or cloud. You paste a source and a target
connection URL; we stream the data across with foreign keys preserved and every row
count verified.

The same pipeline runs **scheduled backups**: an encrypted copy of your database, kept off
your provider in storage you control, restorable to any host — and **a restore is always
free.** Most of this documentation walks through migrations, because the API and the
integrity guarantees are shared.

## Run your first migration (UI)

1. **[Create an account](/register)**.
2. Go to **Migrations → New migration**.
3. Paste your **source** and **target** connection URLs (or fill the fields in the
   "Enter details" tab). Both MySQL and PostgreSQL URLs are supported, e.g.
   `mysql://user:pass@host:3306/dbname` or `postgresql://user:pass@host:5432/dbname`.
4. Click **Run pre-flight checks**. We verify both databases are reachable, measure the
   source size, detect whether it's a transfer or a conversion, and show the exact price.
5. Click **Authorize hold & start**. We place a temporary hold — **you're only charged if
   the migration completes successfully; a failure is never charged.** (Pro subscribers
   start immediately with no per-migration charge.)
6. Watch progress live on the migration page. You can also enable browser notifications to
   be told the moment it finishes — success or failure.

That's it. When it completes, your target database has the schema, data, indexes, and
foreign keys, and the row counts are verified against the source.

## Set up a backup (UI)

1. Go to **Backups → New backup**.
2. Paste the **database connection** URL of the database to protect.
3. Choose **how often** — daily, weekly, or a custom interval in days.
4. Under **Advanced options** you can name it, set how many runs to keep, and pick where
   the backups land: our managed encrypted storage, or **your own S3-compatible bucket**.
5. Create it. The first run starts immediately, so you can watch it finish rather than
   wondering whether the schedule works.

Each run is encrypted before it leaves your database and stored off your provider, so you
still have it if that provider locks you out. From a backup's page you can **restore it to
any database, on any host** — and a restore is never metered or charged, on any plan.

## Prefer the API or an AI agent?

Everything above is available programmatically:

- [Authentication](/docs/authentication) — create an API token.
- [Migrations API](/docs/migrations-api) — create and track migrations over REST.
- [AI agents](/docs/ai-agents) — how an agent runs a migration on a user's behalf.
