Descripción general
Antes de migrar tus bases de datos a Cloud SQL, asegúrate de considerar las limitaciones conocidas de esta situación de migración.
Entre las limitaciones conocidas para usar una base de datos de PostgreSQL como fuente, se incluyen las siguientes:
La extensión
pglogical
no admite la replicación de columnas generadas para PostgreSQL 12 y versiones posteriores.Los cambios en las estructuras de tablas (DDL) no se replican a través de comandos DDL estándar, sino solo con comandos ejecutados con la extensión
pglogical
que se usa para la replicación.Por ejemplo,
pglogical
proporciona una funciónpglogical.replicate_ddl_command
que permite que el DDL se ejecute en la base de datos de origen y la réplica en un punto coherente. El usuario que ejecuta este comando en la fuente ya debe existir en la réplica.Para replicar datos de tablas nuevas, debes usar el comando
pglogical.replication_set_add_table
para agregar las tablas nuevas a los conjuntos de replicación existentes.Para obtener más información sobre la replicación de DDL mientras la migración está en proceso, consulta la sección sobre fidelidad de la migración.
En el caso de las tablas que no tienen claves primarias, Database Migration Service admite la migración de la instantánea inicial y las sentencias
INSERT
durante la fase de captura de datos modificados (CDC). Debes migrar las sentenciasUPDATE
yDELETE
de forma manual.Database Migration Service no migra datos de vistas materializadas, solo el esquema de la vista. Para propagar las vistas, ejecuta el siguiente comando:
REFRESH MATERIALIZED VIEW view_name
.Los estados
SEQUENCE
(por ejemplo,last_value
) en el nuevo destino de Cloud SQL pueden variar de los estadosSEQUENCE
de origen.Las tablas
UNLOGGED
yTEMPORARY
no se replican y no se pueden replicar.No se admite el tipo de datos de objeto grande. Obtén más información en la sección sobre la fidelidad de la migración.
Solo se pueden migrar las extensiones y los lenguajes de procedimientos que Cloud SQL admite para PostgreSQL. Database Migration Service no migra extensiones que no son compatibles con Cloud SQL. La presencia de estas extensiones no bloquea la migración, pero, para garantizar un proceso de migración sin problemas, verifica que tus objetos o aplicaciones no hagan referencia a extensiones no admitidas. Te recomendamos que quites estas extensiones y referencias de la base de datos de origen antes de continuar.
Database Migration Service no migra la extensión
pg_cron
(ni la configuración decron
asociada con ella), pero es compatible con los destinos de Cloud SQL para PostgreSQL. Si usas la extensiónpg_cron
en tus bases de datos de origen, puedes volver a instalarla en tu instancia de destino una vez que se complete la migración.
Database Migration Service no admite la migración desde réplicas de lectura que estén en modo de recuperación.
Database Migration Service no admite fuentes de Amazon RDS en las que se aplica el paquete de extensión de SCT de AWS.
- No se pueden migrar las funciones definidas por el usuario escritas en C, excepto las que se instalan en la base de datos de PostgreSQL cuando instalas extensiones compatibles con Cloud SQL.
Si existen otras extensiones y lenguajes procedimentales en la base de datos de origen, o si sus versiones no son compatibles, la prueba o el inicio del trabajo de migración fallarán.
No se migran las bases de datos que se agregan después de que se inicia el trabajo de migración.
No puedes seleccionar objetos de base de datos específicos (como bases de datos, tablas o esquemas) cuando realizas la migración con Database Migration Service. Todas las tablas de todas las bases de datos y esquemas se migran como parte de la migración de bases de datos, excepto los siguientes esquemas:
- El esquema de información (
information_schema
) - Cualquier esquema que comience con
pg
(por ejemplo,pg_catalog
, que contiene las tablas del sistema y todos los tipos de datos, funciones y operadores integrados, y existe automáticamente en todas las bases de datos) Como resultado, no se migra la información sobre los usuarios y sus roles. Consulta la lista completa de esquemas que comienzan conpg
.
- El esquema de información (
Si las bases de datos encriptadas requieren claves de encriptación administradas por el cliente para desencriptarlas y si Database Migration Service no tiene acceso a las claves, no se pueden migrar las bases de datos.
Sin embargo, si la extensión
pgcrypto
encripta los datos del cliente, estos se pueden migrar con Database Migration Service (porque Cloud SQL admite la extensión).Database Migration Service también admite la migración de datos desde bases de datos encriptadas de Amazon Aurora o Amazon RDS, ya que estas bases de datos manejan la desencriptación de forma transparente en sus servicios. Para obtener más información, consulta Cómo encriptar recursos de Amazon Aurora y Cómo encriptar recursos de Amazon RDS.
La base de datos de Cloud SQL de destino se puede escribir durante la migración para permitir que se apliquen los cambios de DDL si es necesario. Ten cuidado de no realizar cambios en la configuración de la base de datos ni en las estructuras de las tablas que puedan interrumpir el proceso de migración o afectar la integridad de los datos.
El comportamiento de los activadores depende de cómo se hayan configurado. El comportamiento predeterminado es que no se activarán, pero si se configuraron con la sentencia
ALTER EVENT TRIGGER
oALTER TABLE
, y el estado del activador se establece en réplica o siempre, se activarán en la réplica durante la replicación.cloudsqlexternalsync
creará las funciones con el definidor de seguridad en la réplica de Cloud SQL. Cuando cualquier usuario lo ejecute, se ejecutará con los privilegios decloudsqlexternalsync
, que tiene los rolescloudsqlsuperuser
ycloudsqlreplica
. Es mejor restringir el uso de una función de definidor de seguridad solo a algunos usuarios. Para ello, el usuario debe revocar los privilegios PÚBLICOS predeterminados y, luego, otorgar el privilegio de ejecución de forma selectiva.Cloud SQL no admite espacios de tabla personalizados. Todos los datos dentro de los espacios de tabla personalizados se migran al espacio de tabla
pg_default
en la instancia de destino de Cloud SQL.
Limitaciones para las migraciones a instancias de destino existentes
- Tu instancia de destino existente debe estar vacía o contener solo datos de configuración del sistema. No se admite la migración a instancias de destino existentes que contengan datos del usuario (como tablas).
Si tienes problemas debido a datos adicionales en tu instancia de destino existente, borra las bases de datos de tu instancia de destino y vuelve a intentar el trabajo de migración. Consulta Cómo borrar datos adicionales de tu instancia de destino existente.
- Solo puedes configurar un trabajo de migración por instancia de destino.
- Solo puedes migrar a instancias de Cloud SQL independientes. No se admite la migración a réplicas de servidores externos.
- No se admite la migración de datos a una instancia de Cloud SQL que tenga habilitado Private Service Connect.
- Después de ascender una instancia, debes activar la recuperación de un momento determinado.
- Si tu instancia tiene una configuración de copia de seguridad personalizada (por ejemplo, una ubicación de copia de seguridad personalizada), después de ascender la instancia, debes volver a personalizar la configuración de tu copia de seguridad. Durante el proceso de promoción, Cloud SQL restablece la configuración de tu copia de seguridad a los valores predeterminados.
- Para usuarios de Terraform: Database Migration Service modifica la configuración de copia de seguridad y recuperación de tu instancia de destino. Esto puede hacer que la configuración de la instancia de destino sea diferente de la configuración de Terraform que usaste para el aprovisionamiento. Si tienes este problema, sigue las instrucciones que se indican en Cómo diagnosticar problemas.
Cuotas
- Pueden existir hasta 2,000 perfiles de conexión y 1,000 trabajos de migración en un momento determinado. Para liberar espacio, se pueden borrar trabajos de migración (incluso los que están completos) y perfiles de conexión.