Stay organized with collections Save and categorize content based on your preferences.
Before you choose to migrate your databases to Cloud SQL, make sure you consider known limitations for this migration scenario.
Note: You can also use Google Cloud Migration Center to discover possible limitations or gaps in feature support for your specific scenario. See Discover and import databases in the Migration Center documentation.Known limitations for using a PostgreSQL database as a source include:
The pglogical
extension doesn't support the replication of generated columns for PostgreSQL 12+.
Changes to table structures (DDL) aren't replicated through standard DDL commands, but only with commands executed using the pglogical
extension used for replication. This includes changes to enum
types.
For example, pglogical
provides a function pglogical.replicate_ddl_command
that allows DDL to be run on both the source database and replica at a consistent point. The user running this command on the source must already exist on the replica.
In order to replicate data for new tables, you must use the pglogical.replication_set_add_table
command to add the new tables to existing replication sets.
To learn more about DDL replication while the migration is in progress, see the section on migration fidelity.
For tables that don't have primary keys, Database Migration Service supports migration of the initial snapshot and INSERT
statements during the change data capture (CDC) phase. You should migrate UPDATE
and DELETE
statements manually.
Database Migration Service doesn't migrate data from materialized views, just the view schema. To populate the views, run the following command: REFRESH MATERIALIZED VIEW view_name
.
The SEQUENCE
states (for example, last_value
) on the new Cloud SQL destination might vary from the source SEQUENCE
states.
UNLOGGED
and TEMPORARY
tables aren't and can't be replicated.
Large Object data type isn't supported. More details in the section on migration fidelity.
Only extensions and procedural languages that Cloud SQL supports for PostgreSQL can be migrated. Database Migration Service doesn't migrate extensions that are unsupported by Cloud SQL. The presence of these extensions doesn't block the migration, but to ensure a smooth migration process verify that your objects or applications don't reference any unsupported extensions. We recommend removing these extensions and references from your source database before you proceed.
The pg_cron
extension (or any cron
settings associated with the extension) isn't migrated by Database Migration Service, but it is supported in Cloud SQL for PostgreSQL destinations. If you use the pg_cron
extension in your source databases, you can re-install it on your destination instance after the migration is complete.
Database Migration Service doesn't support migrating from read replicas that are in recovery mode.
Database Migration Service doesn't support Amazon RDS sources where the AWS SCT extension pack is applied.
If other extensions and procedural languages exist in the source database, or if their versions aren't supported, then when you test or start the migration job, it will fail.
Databases that are added after the migration job has started aren't migrated.
information_schema
).pg
, for example, pg_catalog
. For the full list of PostgreSQL catalogs that begin with pg
, see PostgreSQL system catalogs in the PostgreSQL documentation.If encrypted databases require customer-managed encryption keys to decrypt the databases, and if Database Migration Service doesn't have access to the keys, then the databases can't be migrated.
However, if customer data is encrypted by the pgcrypto
extension, then the data can be migrated with Database Migration Service (because Cloud SQL supports the extension).
Database Migration Service also supports migrating data from encrypted Amazon Aurora or Amazon RDS databases because these databases handle decryption transparently in their services. For more information, see Encrypting Amazon Aurora resources and Encrypting Amazon RDS resources.
The destination Cloud SQL database is writable during the migration to allow DDL changes to be applied if needed. Take care not to make any changes to the database configuration or table structures which might break the migration process or impact data integrity.
Trigger behavior depends on how they were configured. The default behavior is they won't trigger, but if they were configured using the ALTER EVENT TRIGGER
or ALTER TABLE
statement and the trigger state is set to either replica or always, then they will trigger on the replica during replication.
Functions with security definer will be created by cloudsqlexternalsync
in Cloud SQL replica. When it's executed by any users, it will be executed with the privileges of cloudsqlexternalsync
which has cloudsqlsuperuser
and cloudsqlreplica
roles. It's better to restrict use of a security definer function to only some users. To do that, the user should revoke the default PUBLIC privileges and then grant execute privilege selectively.
Cloud SQL does not support customized tablespaces. All the data inside customized tablespaces is migrated to the pg_default
tablespace in the Cloud SQL destination instance.
If you encounter issues due to extra data in your existing destination instance, clear the databases in your destination instance and re-try the migration job. See Clear extra data from your existing destination instance.
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-07-09 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-07-09 UTC."],[[["Database Migration Service for PostgreSQL has limitations regarding the replication of generated columns, DDL commands, and `UPDATE` and `DELETE` statements for tables without primary keys."],["Certain PostgreSQL features, such as `UNLOGGED` and `TEMPORARY` tables, large object data types, and unsupported extensions, are not supported by the Database Migration Service and cannot be migrated."],["Database Migration Service only migrates all tables and schemas in a database, and it does not migrate specific system schemas such as `information_schema` and tables beginning with `pg`."],["Migration to existing Cloud SQL instances is limited to instances that are empty or contain only system configuration data, and only one migration job is allowed per destination instance."],["The destination Cloud SQL database is writable during the migration process, but users should avoid making changes to the database configuration or table structures that might affect data integrity."]]],[]]
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4