Descripción general
Antes de 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 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 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
pglogical
que se usa para la replicación. Esto incluye cambios en los tipos deenum
.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 en 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 en 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 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
INSERT
durante la fase de captura de datos modificados (CDC). Debes migrar las declaracionesUPDATE
yDELETE
de forma manual.Database Migration Service no migra datos de vistas materializadas, solo el esquema de la vista. Para completar 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 la fuente.Las tablas
UNLOGGED
yTEMPORARY
no se replican ni se pueden replicar.No se admite el tipo de datos Large Object. Encontrarás más detalles 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 las extensiones que no son compatibles con Cloud SQL. La presencia de estas extensiones no bloquea la migración, pero, para garantizar un proceso sin problemas, verifica que tus objetos o aplicaciones no hagan referencia a extensiones no admitidas. Te recomendamos que quites estas extensiones y referencias de tu base de datos de origen antes de continuar.
Database Migration Service no migra la extensión
pg_cron
(ni ningún parámetro de configuración decron
asociado con la extensión), 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 después de que se complete la migración.
Database Migration Service no admite la migración desde réplicas de lectura que se encuentran 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.
- Las funciones definidas por el usuario escritas en C no se pueden migrar, 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 procedurales en la base de datos de origen, o si sus versiones no son compatibles, cuando pruebes o inicies el trabajo de migración, este 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 los esquemas, excepto los siguientes:
- Esquema de información (
information_schema
). - Cualquier tabla que comience con
pg
, por ejemplo,pg_catalog
. Para obtener la lista completa de los 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 ni los roles de los usuarios.
- 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 podrán migrar las bases de datos.
Sin embargo, si los datos del cliente están encriptados con la extensión
pgcrypto
, 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 el desencriptado 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 destino de Cloud SQL se puede escribir durante la migración para permitir que se apliquen cambios en el DDL si es necesario. Ten cuidado de no realizar ningún cambio en la configuración de la base de datos o 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 configuraron. El comportamiento predeterminado es que no se activarán, pero si se configuraron con la instrucción
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á funciones con definidor de seguridad en la réplica de Cloud SQL. Cuando la ejecuten los usuarios, 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 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_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 Borra los 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), 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 podría 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.