Migrate to a new destination instance

This page describes how to migrate your databases to a new Cloud SQL for PostgreSQL instance that Database Migration Service creates on your behalf when you configure the migration job. If your migration has different requirements, consider following a different migration flow. For more information, see Guide: Migrate to an existing Cloud SQL instance.

At a high level, the migration follows these steps:

  1. Configure the source database to allow Database Migration Service to move your data to the new databases.
  2. Create the source connection profile and the migration job.
  3. Depending on your connectivity configuration, you might need to adjust the firewall settings.
  4. Start and monitor the migration job.
  5. Promote the migration job and move your application to use the new databases.

Costs

In this document, you use the following billable components of Google Cloud:

To generate a cost estimate based on your projected usage, use the pricing calculator.

Before you begin

  1. Verify if this migration path can fully support your scenario. See the following pages:
    • Supported sources and destinations on the Scenario overview page lists all supported source and destination versions.
    • Known limitations describes supported data types, database sizes, and other limitations.
    • Different network connectivity methods are available for different source databases. Consider and plan your network connectivity before you begin the migration procedures. For more information, see Networking overview.

      Migrating to a new destination instance doesn't support Private Service Connect interfaces connectivity. If you want to use Private Service Connect interfaces connectivity, consider pre-creating your destination instance directly in Cloud SQL. See Guide: Migrate to an existing Cloud SQL instance.

  2. Consider in which region you want to create the destination database. Database Migration Service is a fully-regional product, meaning all entities related to your migration (source and destination connection profiles, migration jobs, destination databases, conversion workspaces) must be saved in a single region.
  3. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  4. Enable the Database Migration Service and Cloud SQL Admin APIs.

    Enable the APIs

Required roles

To get the permissions that you need to perform homogeneous PostgreSQL migrations with Database Migration Service, ask your administrator to grant you the required IAM roles on your project:

For more information about granting roles, see Manage access in the Identity and Access Management documentation.

These predefined roles contain the permissions required to perform homogeneous PostgreSQL migrations with Database Migration Service. To see the exact permissions that are required, expand the Required permissions section:

Required permissions

The following permissions are required to perform homogeneous PostgreSQL migrations with Database Migration Service:

  • datamigration.*
  • cloudsql.instances.create
  • cloudsql.instances.get
  • cloudsql.instances.list
  • cloudsql.instances.update
  • cloudsql.instances.delete
  • cloudsql.operations.get
  • cloudsql.users.list
  • cloudsql.users.get
  • cloudsql.users.create
  • cloudsql.users.update
  • cloudsql.users.delete

You might also be able to get these permissions with custom roles or other predefined roles.

Prepare your source database

To prepare your source data for migration, follow these steps:

  1. Choose and configure your source network connectivity method.

    For public IP allowlist connectivity: At a later point, after Database Migration Service creates the destination instance, you might need to add the Cloud SQL public IP address to your firewall allowlist. Consult your network administrator on how to best schedule such configuration changes.

  2. Configure your source database instance. At a high level, this includes the following steps:
    1. Install the pglogical PostgreSQL extension (version 2.2.1 or later) on the source database and on all databases to be migrated.
    2. Configure PostgreSQL parameters: set wal_level = logical, and ensure adequate values for max_replication_slots, max_wal_senders, and max_worker_processes.
    3. Grant replication privileges to your migration user, and configure pg_hba.conf to permit connections from the destination Cloud SQL instance.

    For detailed instructions, see Configure your source database.

  3. Create the source connection profile.

Create and run the migration job

To configure and run your migration, perform the following steps:

  1. Optional: If you want to manage your own encryption keys for the destination instance, prepare Customer-Managed Encryption Keys (CMEK).
  2. Create and run the migration job.

    You can monitor the migration progress, as well as your destination instance health with Database Migration Service observability features. See Migration job metrics.

Finalize the migration

When you decide to switch your application to the new Cloud SQL for PostgreSQL instance, finalize the migration by following these steps:

  1. Optional: Set up cascading read replicas. If you want to use cascading read replicas, you can configure them when the migration job enters the CDC phase.
  2. Stop all write operations on your source database. You can switch them to read-only mode to retain operational functionality.
  3. Promote the migration job.
  4. Optional: Verify migration data for completeness.

What's next

Learn more about Google Cloud features for Cloud SQL for PostgreSQL. See Cloud SQL for PostgreSQL features.