In the Google Cloud console, you can perform actions in bulk for migration jobs that have the same status. You can perform actions on a single migration job both in the Google Cloud console and by using Google Cloud CLI.
You can perform the following actions on migration jobs:
| Action | Description |
|---|---|
| Edit | You can edit non-draft migration jobs to make the following changes:
|
| Start | Start migration jobs is that aren't in the Running or Starting state. See Migration job statuses. |
| Stop | Stop a running migration job. The data movement is paused.
The migration job status first changes to Stopping
and then to Stopped. You can
resume, delete, or
promote a stopped migration job. |
| Resume | If you stop a migration job during the incremental load, you can resume it later. When you resume a migration job, Database Migration Service picks up all transaction log files that accumulate when the migration job is stopped. |
| Restart |
You can restart a migration job that encountered an error and can't proceed with data replication. The result of restarting a migration job depends on one of the following reasons why it failed:
|
| Delete | A migration job can be deleted. The outcome depends on the status of
the job:
|
| Promote | During the migration process, your destination Cloud SQL instance is demoted into a read replica where it is managed by Database Migration Service. You can't perform any read or write operations on the destination databases until you promote the migration. For more information, see Promote a migration. |
| View | You can view the details of a specific database in a migration job or all databases that you selected for migration. |
Start a migration job
When your migration job is fully created (that is, it isn't saved in a draft state), you can start it at any time to begin migrating data.
To start a migration job, perform the following steps:
Console
- In the Google Cloud console, go to the Migration jobs page.
- In the Jobs tab, click the display name of the migration job
that you want to start.
The migration job details page opens.
- Click Start.
- In the dialog, click Start.
gcloud
Before using any of the command data below, make the following replacements:
- MIGRATION_JOB_ID with
your migration job identifier.
If you don't know the identifier, you can use the
gcloud database-migration migration-jobs listcommand to list all migration jobs in a given region and view their identifiers. - REGION with the identifier of the region where your connection profile is saved.
Execute the following command:
Linux, macOS, or Cloud Shell
gcloud database-migration migration-jobs \ start MIGRATION_JOB_ID \ --region=REGION
Windows (PowerShell)
gcloud database-migration migration-jobs ` start MIGRATION_JOB_ID ` --region=REGION
Windows (cmd.exe)
gcloud database-migration migration-jobs ^ start MIGRATION_JOB_ID ^ --region=REGION
Result
The action is performed in an asynchronous manner. As such, this command returns an Operation entity that represents a long-running operation:
done: false metadata: '@type': type.googleapis.com/google.cloud.clouddms.v1.OperationMetadata apiVersion: v1 createTime: '2024-02-20T12:20:24.493106418Z' requestedCancellation: false target: MIGRATION_JOB_ID verb: start name: OPERATION_ID
To see if your operation is successful, you can query the returned operation object, or check the status of the migration job:
- Use the
gcloud database-migration migration-jobs describecommand with the MIGRATION_JOB_ID to view the status of the migration job. - Use the
gcloud database-migration operations describecommand with the OPERATION_ID to see the status of the operation itself.
Stop a migration job
You can stop a running migration job at any time by performing the following steps:
Console
- In the Google Cloud console, go to the Migration jobs page.
- In the Jobs tab, click the display name of the migration job
that you want to start.
The migration job details page opens.
- Click Stop.
- In the dialog, click Stop.
gcloud
Before using any of the command data below, make the following replacements:
- MIGRATION_JOB_ID with
your migration job identifier.
If you don't know the identifier, you can use the
gcloud database-migration migration-jobs listcommand to list all migration jobs in a given region and view their identifiers. - REGION with the identifier of the region where your connection profile is saved.
Execute the following command:
Linux, macOS, or Cloud Shell
gcloud database-migration migration-jobs \ stop MIGRATION_JOB_ID \ --region=REGION
Windows (PowerShell)
gcloud database-migration migration-jobs ` stop MIGRATION_JOB_ID ` --region=REGION
Windows (cmd.exe)
gcloud database-migration migration-jobs ^ stop MIGRATION_JOB_ID ^ --region=REGION
Result
The action is performed in an asynchronous manner. As such, this command returns an Operation entity that represents a long-running operation:
done: false metadata: '@type': type.googleapis.com/google.cloud.clouddms.v1.OperationMetadata apiVersion: v1 createTime: '2024-02-20T12:20:24.493106418Z' requestedCancellation: false target: MIGRATION_JOB_ID verb: stop name: OPERATION_ID
- Use the
gcloud database-migration migration-jobs describecommand to view the status of the migration job. - Use the
gcloud database-migration operations describewith the OPERATION_ID to see the status of the operation itself.
Resume a migration job
You can resume a stopped migration job by performing the following steps:
Console
- In the Google Cloud console, go to the Migration jobs page.
- In the Jobs tab, click the display name of the migration job
that you want to start.
The migration job details page opens.
- Click Resume.
- In the dialog, click Resume.
gcloud
Before using any of the command data below, make the following replacements:
- MIGRATION_JOB_ID with
your migration job identifier.
If you don't know the identifier, you can use the
gcloud database-migration migration-jobs listcommand to list all migration jobs in a given region and view their identifiers. - REGION with the identifier of the region where your connection profile is saved.
Execute the following command:
Linux, macOS, or Cloud Shell
gcloud database-migration migration-jobs \ resume MIGRATION_JOB_ID \ --region=REGION
Windows (PowerShell)
gcloud database-migration migration-jobs ` resume MIGRATION_JOB_ID ` --region=REGION
Windows (cmd.exe)
gcloud database-migration migration-jobs ^ resume MIGRATION_JOB_ID ^ --region=REGION
Result
The action is performed in an asynchronous manner. As such, this command returns an Operation entity that represents a long-running operation:
done: false metadata: '@type': type.googleapis.com/google.cloud.clouddms.v1.OperationMetadata apiVersion: v1 createTime: '2024-02-20T12:20:24.493106418Z' requestedCancellation: false target: MIGRATION_JOB_ID verb: resume name: OPERATION_ID
- Use the
gcloud database-migration migration-jobs describecommand to view the status of the migration job. - Use the
gcloud database-migration operations describewith the OPERATION_ID to see the status of the operation itself.
Restart a migration job
To restart a migration job, perform the following steps:
Console
- In the Google Cloud console, go to the Migration jobs page.
- On the Jobs tab, click the display name of the migration job
that you want to restart.
The migration job details page opens.
- Perform one of the following restart actions:
If you want to restart all databases included in the migration, on the migration job's toolbar, click Restart.
The restart migration job dialog appears.
If you want to restart only specific databases, select them using the checkboxes next to the database names and on the Databases tab, click Restart.
The dialog with a number of databases that you want to restart appears.
- In the dialog, click Restart.
gcloud
Before using any of the command data below, make the following replacements:
- MIGRATION_JOB_ID with
your migration job identifier.
If you don't know the identifier, you can use the
gcloud database-migration migration-jobs listcommand to list all migration jobs in a given region and view their identifiers. - REGION with the identifier of the region where your migration job is saved.
Optional: Database Migration Service migrates all databases in your source by default. If you want to migrate only specific databases, use the
--databases-filterflag and specify their identifiers as a comma-separated list.For example:
--databases-filter=my-business-database,my-other-databaseYou can later edit migration jobs that you created with the
--database-filter flagby using thegcloud database-migration migration-jobs updatecommand.
Execute the following command:
Linux, macOS, or Cloud Shell
gcloud database-migration migration-jobs \ restart MIGRATION_JOB_ID \ --region=REGION
Windows (PowerShell)
gcloud database-migration migration-jobs ` restart MIGRATION_JOB_ID ` --region=REGION
Windows (cmd.exe)
gcloud database-migration migration-jobs ^ restart MIGRATION_JOB_ID ^ --region=REGION
Result
The action is performed in an asynchronous manner. As such, this command returns an Operation entity that represents a long-running operation:
done: false metadata: '@type': type.googleapis.com/google.cloud.clouddms.v1.OperationMetadata apiVersion: v1 createTime: '2024-02-20T12:20:24.493106418Z' requestedCancellation: false target: MIGRATION_JOB_ID verb: restart name: OPERATION_ID
- Use the
gcloud database-migration migration-jobs describecommand to view the status of the migration job. - Use the
gcloud database-migration operations describewith the OPERATION_ID to see the status of the operation itself.
Update a draft migration job
To finish creating a migration job, perform the following steps:
Console
- In the Google Cloud console, go to the Migration jobs page.
- In the Drafts tab, click the display name of the migration job
that you want to finish creating.
The migration job creation wizard opens.
- Finish creating the migration job. See Create a migration job.
gcloud
This sample uses the optional --no-async flag so that all operations
are performed synchronously. This means that some commands might take
a while to complete. You can skip the --no-async flag to run commands asynchronously.
If you do, you need to use the
gcloud database-migration operations describe command to verify if your operation
is successful.
Before using any of the command data below, make the following replacements:
- MIGRATION_JOB_ID with a machine-readable identifier for your migration job.
- REGION with the region identifier where you want to save the connection profile.
- MIGRATION_JOB_NAME with a human-readable name for your migration job. This value is displayed in Database Migration Service in the Google Cloud console.
- SOURCE_CONNECTION_PROFILE_ID with a machine-readable identifier of the source connection profile.
- DESTINATION_CONNECTION_PROFILE_ID with a machine-readable identifier of the destination connection profile.
- COMMA_SEPARATED_DATABASE_ID_LIST with a comma-separated list of database identifiers of the MySQL you want to migrate.
Execute the following command:
Linux, macOS, or Cloud Shell
gcloud database-migration migration-jobs \ create MIGRATION_JOB_ID \ --no-async \ --region=REGION \ --display-name=MIGRATION_JOB_NAME \ --source=SOURCE_CONNECTION_PROFILE_ID \ --destination=DESTINATION_CONNECTION_PROFILE_ID \ --databases-filter=COMMA_SEPARATED_DATABASE_ID_LIST \ --type=CONTINUOUS
Windows (PowerShell)
gcloud database-migration migration-jobs ` create MIGRATION_JOB_ID ` --no-async ` --region=REGION ` --display-name=MIGRATION_JOB_NAME ` --source=SOURCE_CONNECTION_PROFILE_ID ` --destination=DESTINATION_CONNECTION_PROFILE_ID ` --databases-filter=COMMA_SEPARATED_DATABASE_ID_LIST ` --type=CONTINUOUS
Windows (cmd.exe)
gcloud database-migration migration-jobs ^ create MIGRATION_JOB_ID ^ --no-async ^ --region=REGION ^ --display-name=MIGRATION_JOB_NAME ^ --source=SOURCE_CONNECTION_PROFILE_ID ^ --destination=DESTINATION_CONNECTION_PROFILE_ID ^ --databases-filter=COMMA_SEPARATED_DATABASE_ID_LIST ^ --type=CONTINUOUS
You should receive a response similar to the following:
Waiting for migration job [MIGRATION_JOB_ID] to be updated with [OPERATION_ID] Waiting for operation [OPERATION_ID] to complete...done. Updated migration job MIGRATION_JOB_ID [OPERATION_ID]
Add or remove databases from the migration job
You can add or remove databases from a migration job in the Google Cloud console
or by using Google Cloud CLI, provided the migration job isn't in the Running state:
- The migration job must be in the
Not started,Stopped, orFailedstate. If the migration job is in theRunningstate, you must stop the migration job before you can edit the database selection. - Important: If you add or remove databases on a migration job that was already started, Database Migration Service resets the migration progress to the full dump phase. All databases selected for the migration job (including databases that were already migrated) are dropped on the destination Cloud SQL instance and re-dumped from the source instance.
- When you remove a database from a migration job, Database Migration Service stops replicating changes for that database, but doesn't delete any data already migrated for that database on the destination instance.
To add or remove databases from your migration job, perform the following steps:
Console
- In the Google Cloud console, go to the Migration jobs page.
- In the Jobs tab, click the display name of your migration job.
The migration job details page opens.
- If the migration job status is Running, click Stop, confirm in the dialog, and wait for the status to change to Stopped.
- Click Edit.
- In the Select objects to migrate section, use the Databases to migrate menu to choose between All databases and Specific databases. If you select Specific databases, use the checkboxes to select the databases that you want to add or clear the ones that you want to remove.
- Click Save and restart (or Save and start if the job hasn't been started yet) to apply your changes and run the migration job, or click Save.
gcloud
This sample uses the optional --no-async flag so that all operations
are performed synchronously. This means that some commands might take
a while to complete. You can skip the --no-async flag to run commands asynchronously.
If you do, you need to use the
gcloud database-migration operations describe command to verify if your operation
is successful.
Before using any of the command data below, make the following replacements:
- MIGRATION_JOB_ID with
your migration job identifier.
If you don't know the identifier, you can use the
gcloud database-migration migration-jobs listcommand to list all migration jobs in a given region and view their identifiers. - REGION with the identifier of the region where your migration job is saved.
- DATABASE_LIST with a comma-separated list
of all database names that you want the migration job to migrate (for example,
my-db-1,my-db-2). To switch the migration job back to migrating all databases on the source instance, replace--databases-filter=DATABASE_LISTwith--all-databases.
Execute the following command:
Linux, macOS, or Cloud Shell
gcloud database-migration migration-jobs \ update MIGRATION_JOB_ID \ --region=REGION \ --databases-filter=DATABASE_LIST
Windows (PowerShell)
gcloud database-migration migration-jobs ` update MIGRATION_JOB_ID ` --region=REGION ` --databases-filter=DATABASE_LIST
Windows (cmd.exe)
gcloud database-migration migration-jobs ^ update MIGRATION_JOB_ID ^ --region=REGION ^ --databases-filter=DATABASE_LIST
You should receive a response similar to the following:
Waiting for migration job [MIGRATION_JOB_ID] to be updated with [OPERATION_ID] Waiting for operation [OPERATION_ID] to complete...done. Updated migration job MIGRATION_JOB_ID [OPERATION_ID]
Edit a non-draft migration job
For non-draft migration jobs, you can use Google Cloud CLI to change the display name of the migration job:
This sample uses the optional --no-async flag so that all operations
are performed synchronously. This means that some commands might take
a while to complete. You can skip the --no-async flag to run commands asynchronously.
If you do, you need to use the
gcloud database-migration operations describe command to verify if your operation
is successful.
Before using any of the command data below, make the following replacements:
- MIGRATION_JOB_ID with
your migration job identifier.
If you don't know the identifier, you can use the
gcloud database-migration migration-jobs listcommand to list all migration jobs in a given region and view their identifiers. - REGION with the identifier of the region where your connection profile is saved.
- MIGRATION_JOB_NAME with a human-readable name for your migration job. This value is displayed in Database Migration Service in the Google Cloud console.
Execute the following command:
Linux, macOS, or Cloud Shell
gcloud database-migration migration-jobs \ update MIGRATION_JOB_ID \ --region=REGION \ --display-name=MIGRATION_JOB_NAME
Windows (PowerShell)
gcloud database-migration migration-jobs ` update MIGRATION_JOB_ID ` --region=REGION ` --display-name=MIGRATION_JOB_NAME
Windows (cmd.exe)
gcloud database-migration migration-jobs ^ update MIGRATION_JOB_ID ^ --region=REGION ^ --display-name=MIGRATION_JOB_NAME
You should receive a response similar to the following:
Waiting for migration job [MIGRATION_JOB_ID] to be updated with [OPERATION_ID] Waiting for operation [OPERATION_ID] to complete...done. Updated migration job MIGRATION_JOB_ID [OPERATION_ID]
Test a migration job
Before you run the migration job, you can perform a test operation to check if Database Migration Service can reach all the necessary source and destination entities. In the Google Cloud console, you can only test draft migration jobs that you create in the migration job creation wizard (see Create a migration job).
With gcloud CLI, you can test migration jobs that are created, but not yet started.
Before using any of the command data below, make the following replacements:
- MIGRATION_JOB_ID with
your migration job identifier.
If you don't know the identifier, you can use the
gcloud database-migration migration-jobs listcommand to list all migration jobs in a given region and view their identifiers. - REGION with the identifier of the region where your connection profile is saved.
Execute the following command:
Linux, macOS, or Cloud Shell
gcloud database-migration migration-jobs \ verify MIGRATION_JOB_ID \ --region=REGION
Windows (PowerShell)
gcloud database-migration migration-jobs ` verify MIGRATION_JOB_ID ` --region=REGION
Windows (cmd.exe)
gcloud database-migration migration-jobs ^ verify MIGRATION_JOB_ID ^ --region=REGION
Result
The action is performed in an asynchronous manner. As such, this command returns an Operation entity that represents a long-running operation:
done: false metadata: '@type': type.googleapis.com/google.cloud.clouddms.v1.OperationMetadata apiVersion: v1 createTime: '2024-02-20T12:20:24.493106418Z' requestedCancellation: false target: MIGRATION_JOB_ID verb: verify name: OPERATION_ID
To see if your operation is successful, you can query the returned operation object, or check the status of the migration job:
- Use the
gcloud database-migration migration-jobs describecommand with the MIGRATION_JOB_ID to view the status of the migration job. - Use the
gcloud database-migration operations describecommand with the OPERATION_ID to see the status of the operation itself.
View migration details for a specific database
When your migration job is fully created (that is, it isn't saved in a draft state), you can use Google Cloud CLI to view details about a specific database in that migration job.
This sample uses the optional --no-async flag so that all operations
are performed synchronously. This means that some commands might take
a while to complete. You can skip the --no-async flag to run commands asynchronously.
If you do, you need to use the
gcloud database-migration operations describe command to verify if your operation
is successful.
Before using any of the command data below, make the following replacements:
- MIGRATION_JOB_ID with
your migration job identifier.
If you don't know the identifier, you can use the
gcloud database-migration migration-jobs listcommand to list all migration jobs in a given region and view their identifiers. - REGION with the identifier of the region where your connection profile is saved.
- DATABASE_NAME with the name of the database.
Execute the following command:
Linux, macOS, or Cloud Shell
gcloud database-migration objects lookup --migration-job=MIGRATION_JOB_ID \ --region=REGION --database=DATABASE_NAME
Windows (PowerShell)
gcloud database-migration objects lookup --migration-job=MIGRATION_JOB_ID ` --region=REGION --database=DATABASE_NAME
Windows (cmd.exe)
gcloud database-migration objects lookup --migration-job=MIGRATION_JOB_ID ^ --region=REGION --database=DATABASE_NAME
Result
The output is similar to the following:
createTime: '2025-03-21T17:05:19.211441641Z' name: PROJECT_ID phase: FULL_DUMP sourceObject: database: DATABASE_NAME type: DATABASE state: RUNNING
- Use the
gcloud database-migration migration-jobs describecommand to view the status of the migration job. - Use the
gcloud database-migration operations describewith the OPERATION_ID to see the status of the operation itself.
View migration details for specific databases
When your migration job is fully created (that is, it isn't saved in a draft state), you can use Google Cloud CLI to list all databases that you selected for that migration job and view details about them.
This sample uses the optional --no-async flag so that all operations
are performed synchronously. This means that some commands might take
a while to complete. You can skip the --no-async flag to run commands asynchronously.
If you do, you need to use the
gcloud database-migration operations describe command to verify if your operation
is successful.
Before using any of the command data below, make the following replacements:
- MIGRATION_JOB_ID with
your migration job identifier.
If you don't know the identifier, you can use the
gcloud database-migration migration-jobs listcommand to list all migration jobs in a given region and view their identifiers. - REGION with the identifier of the region where your connection profile is saved.
Execute the following command:
Linux, macOS, or Cloud Shell
gcloud database-migration objects list --migration-job=MIGRATION_JOB_ID \ --region=REGION
Windows (PowerShell)
gcloud database-migration objects list --migration-job=MIGRATION_JOB_ID ` --region=REGION
Windows (cmd.exe)
gcloud database-migration objects list --migration-job=MIGRATION_JOB_ID ^ --region=REGION
Result
The output is similar to the following:
Waiting for migration job MIGRATION_JOB_ID
to fetch source objects with OPERATION_ID
Waiting for operation OPERATION_ID to complete...done.
SOURCE_OBJECT STATE PHASE ERROR
{'database': 'db1', 'type': 'DATABASE'} RUNNING FULL_DUMP
{'database': 'db2', 'type': 'DATABASE'} STOPPED CDC {'code': 1, 'message': 'Internal error'}
- Use the
gcloud database-migration migration-jobs describecommand to view the status of the migration job. - Use the
gcloud database-migration operations describewith the OPERATION_ID to see the status of the operation itself.