Descripción general
Antes de decidir migrar tus bases de datos a Cloud SQL, asegúrate de tener en cuenta las limitaciones conocidas para este caso de migración.
Entre las limitaciones conocidas por usar una base de datos de PostgreSQL como origen, se incluyen las siguientes:
La extensión
pglogicalno admite la replicación de columnas generadas para PostgreSQL 12 y versiones posteriores.Los cambios en las estructuras de las tablas (DDL) no se replican a través de los comandos DDL estándar, sino solo con los comandos ejecutados con la extensión
pglogicalque se usa para la replicación. Esto incluye cambios en los tiposenum.Por ejemplo,
pglogicalproporciona una funciónpglogical.replicate_ddl_commandque permite que DDL se ejecute en la base de datos de origen y en la réplica en un punto coherente. El usuario que ejecuta este comando en el origen ya debe existir en la réplica.Para replicar datos de tablas nuevas, debes usar el comando
pglogical.replication_set_add_tablepara 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 curso, consulta la sección sobre la fidelidad de la migración.
Para las tablas que no tienen claves primarias, Database Migration Service admite la migración de la instantánea inicial y las sentencias
INSERTdurante la fase de captura de datos modificados (CDC). Debes migrar las sentenciasUPDATEyDELETEde 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 estadosSEQUENCEde origen.Las tablas
UNLOGGEDyTEMPORARYno se replican ni se pueden replicar.No se admite el tipo de datos de objetos grandes. Obtén más detalles en la sección sobre la fidelidad de la migración.
Solo se pueden migrar las extensiones y los lenguajes de procedimiento que Cloud SQL admite para PostgreSQL. Database Migration Service no migra las 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 ninguna extensión no admitida. Te recomendamos que quites estas extensiones y referencias de tu base de datos de origen antes de continuar.
Database Migration Service no migra la
pg_cronextensión (ni ninguna configuracióncronasociada con la extensión) , pero sí es compatible con los destinos de Cloud SQL para PostgreSQL. Si usas la extensiónpg_cronen 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 AWS SCT.
- No se pueden migrar las funciones definidas por el usuario escritas en C, excepto las funciones que se instalan en la base de datos de PostgreSQL cuando instalas extensiones compatibles con Cloud SQL.
Si existen otras extensiones y lenguajes de procedimiento en la base de datos de origen, o si no se admiten sus versiones, cuando pruebes o inicies el trabajo de migración, fallará.
No se migran las bases de datos que se agregan después de que se inicia el trabajo de migración.
- No puedes seleccionar tablas o esquemas específicos cuando migras con Database Migration Service.
Database Migration Service migra todas las tablas y esquemas, excepto los siguientes:
- El esquema de información (
information_schema). - Cualquier tabla que comience con
pg, por ejemplo,pg_catalog. Para obtener la lista completa de catálogos de PostgreSQL que comienzan conpg, consulta Catálogos del sistema de PostgreSQL en la documentación de PostgreSQL. - No se migra la información sobre los usuarios y los roles de los usuarios.
- 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 los datos del cliente están encriptados por la extensión
pgcrypto, los datos 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 controlan la desencriptación de forma transparente en sus servicios. Para obtener más información, consulta Encripta recursos de Amazon Aurora y Encripta 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 ningún cambio 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 del activador depende de cómo se configuraron. El comportamiento predeterminado es que no se activarán, pero si se configuraron con la sentencia
ALTER EVENT TRIGGERoALTER TABLEy el estado del activador se establece en réplica o siempre, se activarán en la réplica durante la replicación.cloudsqlexternalsynccreará funciones con definidor de seguridad en la réplica de Cloud SQL. Cuando cualquier usuario lo ejecute, se ejecutará con los privilegios decloudsqlexternalsync, que tiene los rolescloudsqlsuperuserycloudsqlreplica. 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 PUBLIC 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_defaulten la instancia de destino de Cloud SQL.El método de conectividad de las interfaces de Private Service Connect solo se admite para la migración a instancias de destino existentes. Si deseas usar la conectividad de IP privada y migrar a una instancia de destino nueva, usa el intercambio de tráfico entre VPC.
Limitaciones para las migraciones a instancias de destino existentes
- Tu instancia de destino existente solo puede contener bases de datos del sistema predeterminadas
que se configuran automáticamente cuando creas la instancia de destino.
No se admite la migración a instancias de destino existentes
que contienen datos del usuario (como tablas en esquemas del sistema o bases de datos)
.
Si tienes problemas debido a datos adicionales en tu instancia de destino existente borra las bases de datos en tu instancia de destino y vuelve a intentar el trabajo de migración. Consulta Borra 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.
- 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), debes volver a personalizar la configuración de tu copia de seguridad después de ascender la instancia. Durante el proceso de promoción, Cloud SQL restablece la configuración de tu copia de seguridad a los valores predeterminados.
- Para los 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 en Diagnostica 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.
- Tu instancia de destino existente solo puede contener bases de datos del sistema predeterminadas
que se configuran automáticamente cuando creas la instancia de destino.
No se admite la migración a instancias de destino existentes
que contienen datos del usuario (como tablas en esquemas del sistema o bases de datos)
.