Antes de elegir migrar tus bases de datos a Cloud SQL, ten en cuenta las limitaciones conocidas para 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
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 comandos de DDL estándar, sino solo con comandos ejecutados con la extensión
pglogicalque se usa para la replicación. Esto incluye cambios en los tipos deenum.- Por ejemplo,
pglogicalproporciona la funciónpglogical.replicate_ddl_commandque permite que el DDL se ejecute tanto en la base de datos de origen como en la réplica en un punto coherente. - Para replicar datos de tablas recién creadas, debes usar el comando
pglogical.replication_set_add_tablepara agregar 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 Fidelidad de la migración.
- Por ejemplo,
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). La migración de las declaracionesUPDATEyDELETEes diferente para lo siguiente:- Migraciones estándar: Las declaraciones
UPDATEyDELETEno se migran para las tablas sin claves primarias. Debes agregar claves primarias para tus columnas antes de migrar o migrar las sentenciasUPDATEyDELETEde forma manual. - Migraciones de inicio rápido: Con las migraciones de inicio rápido, no se requieren claves primarias para replicar las operaciones
UPDATEyDELETEsi configuras la identidad de la réplica comoINDEXoFULL. ConfigurarREPLICA IDENTITY FULLaumenta el volumen del registro de escritura anticipada (WAL) y la sobrecarga de recursos. Se recomienda agregar una clave primaria cuando sea posible. Para obtener más información, consulta la documentación de Replica Identity de PostgreSQL y la guía de migración de inicio rápido.
- Migraciones estándar: Las declaraciones
Database Migration Service no migra datos de vistas materializadas, solo el esquema de la vista. Para propagar las vistas en la base de datos de destino, ejecuta lo siguiente:
REFRESH MATERIALIZED VIEW view_name.Los estados de
SEQUENCE(por ejemplo,last_value) en el destino pueden variar con respecto al origen durante la CDC en curso. Los valores de secuencia se sincronizan durante el paso final de la promoción.Las tablas
UNLOGGEDyTEMPORARYno se replican ni se pueden replicar.La decodificación lógica de PostgreSQL no admite el tipo de datos de objeto grande (
oidque hace referencia apg_largeobject).Solo se pueden migrar las extensiones 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 una migración sin problemas, verifica que tus aplicaciones no hagan referencia a extensiones no compatibles. Para obtener la lista de extensiones compatibles, consulta Extensiones de PostgreSQL en la documentación de Cloud SQL.
Database Migration Service no migra la extensión
pg_cron(ni ningún trabajo cron configurado dentro de la extensión), pero es compatible con los destinos de Cloud SQL para PostgreSQL. Si usaspg_cronen tus bases de datos de origen, reinstala la extensión y configura tus trabajos cron en la 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 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.
Las funciones definidas por el usuario escritas en C no se pueden migrar, excepto las que se instalan cuando se crean extensiones compatibles con Cloud SQL.
Si existen otras extensiones en la base de datos de origen y Cloud SQL no admite sus versiones, la prueba o el inicio del trabajo de migración fallarán.
Las bases de datos que se agregan a la instancia de origen después de que se inicia el trabajo de migración no se migran.
Puedes seleccionar bases de datos específicas cuando migras con Database Migration Service. Se migran todas las tablas y los esquemas de las bases de datos seleccionadas, excepto los siguientes:
- El esquema de información (
information_schema). - Cualquier esquema que comience con
pg_(por ejemplo,pg_catalog,pg_toast,pgtemp*). 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. - Credenciales de acceso y roles de los usuarios
- El esquema de información (
Si las bases de datos encriptadas requieren claves de encriptación administradas por el cliente (CMEK) para desencriptar los datos y Database Migration Service no tiene acceso a las claves, las bases de datos no se pueden migrar. Sin embargo, los datos encriptados con la extensión
pgcryptose pueden migrar porque Cloud SQL admitepgcrypto. Database Migration Service también admite la migración desde bases de datos encriptadas de Amazon Aurora o Amazon RDS, ya que AWS controla la desencriptación de forma transparente. Para obtener más información, consulta Encripta recursos de Amazon Aurora y Encripta recursos de Amazon RDS.Comportamiento operativo de la base de datos de destino durante la migración:
Base de datos de destino con permisos de escritura: Cloud SQL para PostgreSQL no ejecuta la base de datos de destino en modo de solo lectura durante la migración. La instancia de destino no se desciende de nivel cuando la crea Database Migration Service.
Evita las operaciones de escritura en los datos que se migran: No realices operaciones de escritura (como
INSERT,UPDATE,DELETEo cambios en el esquema de DDL) en las tablas o bases de datos que participan en la migración. Ejecutar operaciones de escritura en los datos que se migran puede generar conflictos de replicación con el flujo de captura de datos modificados (CDC) entrante.Administra usuarios de la base de datos: Puedes crear y administrar usuarios de la base de datos en cualquier momento con comandos estándar de
psqlo a través de Cloud SQL en la consola de Google Cloud . Para obtener más información, consulta Administra usuarios en la documentación de Cloud SQL.Funciones suspendidas: Las copias de seguridad automáticas y la recuperación de un momento determinado (PITR) se suspenden durante la replicación continua. Además, no puedes crear réplicas de lectura de Cloud SQL desde la instancia de destino hasta que se ascienda el trabajo de migración.
El comportamiento del activador depende de su configuración. De forma predeterminada, los activadores no se activan en la réplica durante la replicación, a menos que se configuren con
ALTER EVENT TRIGGERoALTER TABLE ... ENABLE ALWAYS TRIGGER.Las funciones definidas con
SECURITY DEFINERlas creacloudsqlexternalsyncen la instancia de Cloud SQL de destino, que tiene privilegios elevados. Restringe los privilegios de ejecución en las funciones sensibles deSECURITY DEFINERrevocando los permisos públicos y otorgando acceso de forma selectiva.Cloud SQL no admite espacios de tabla personalizados. Todos los objetos dentro de los espacios de tabla personalizados se migran al espacio de tabla predeterminado
pg_defaulten Cloud SQL.El método de conectividad de interfaces de Private Service Connect solo se admite para migrar a instancias de destino existentes. Si quieres 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
- Descenso de nivel de la instancia de destino para las migraciones estándar:
En el caso de las migraciones estándar a instancias de Cloud SQL existentes, Database Migration Service
descenderá de nivel la instancia independiente para configurarla como una réplica externa de la
base de datos de origen.
- Descender de nivel la instancia no coloca el motor de PostgreSQL en modo de solo lectura, pero debes evitar las operaciones de escritura en las tablas que se migran para evitar conflictos de replicación.
- Si desciendes de nivel la instancia, se suspenderán las copias de seguridad automáticas y la recuperación de un momento determinado (PITR), y se impedirá agregar réplicas de lectura de Cloud SQL hasta que se ascienda de nivel.
- Debes confirmar el descenso de nivel cuando crees el trabajo de migración en
la consola de Google Cloud ingresando el ID de la instancia de destino (o
ejecutando
gcloud database-migration migration-jobs demote-destination). -
Las migraciones de inicio rápido usan la replicación lógica de PostgreSQL
pgnativey no requieren ni realizan el descenso de nivel de la instancia de destino.
- 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 contengan datos del usuario.
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 independientes de Cloud SQL. 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 restablecer la configuración de la copia de seguridad después de la promoción. Durante el proceso de ascenso, Cloud SQL restablece la configuración de la copia de seguridad a sus 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 difiera de la configuración de Terraform que se usó para el aprovisionamiento. Si experimentas este problema, consulta la guía 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 crear espacio para más, borra los trabajos de migración y los perfiles de conexión que no se usen.
Compatibilidad de versiones de extensiones de PostgreSQL durante las actualizaciones de versiones principales
Cuando migras a una versión principal de PostgreSQL más reciente,
Database Migration Service usa la utilidad pg_restore, que instala la versión de extensión predeterminada
de la versión principal de PostgreSQL de destino. No puedes
especificar una versión exacta de la extensión para la utilidad pg_restore.
Si tu base de datos de origen usa una versión de extensión que no es compatible con el esquema de la versión predeterminada instalada en la versión principal de PostgreSQL de destino, la migración podría fallar debido a una discrepancia de esquema o a errores internos.
Para evitar fallas en la migración, verifica la compatibilidad del esquema. Antes de migrar, actualiza las extensiones de tu base de datos de origen a una versión compatible con la versión principal de PostgreSQL de destino.