Problemas conocidos y limitaciones con las migraciones en línea de PostgreSQL a Azure Database for PostgreSQL
Importante
Se recomienda usar el nuevo servicio de migración en Azure Database for PostgreSQL para una experiencia de migración más simplificada y eficaz. Este servicio simplifica el proceso al admitir una variedad de entornos de origen, lo que garantiza una transición sin complicaciones a Azure Database for PostgreSQL.
En este artículo se describen problemas conocidos y limitaciones asociados a las migraciones en línea de PostgreSQL a Azure Database for PostgreSQL con Azure Database Migration Service (DMS).
Configuración de la migración en línea
Las versiones de origen de PostgreSQL más bajas admitidas son 9.4 y la versión de destino más alta admitida es la 14.9.
Solo se admiten las migraciones a la misma versión o a otra superior. Por ejemplo, se admite la migración de PostgreSQL 9.5 a Azure Database for PostgreSQL 9.6 o 10. No se admite la migración de PostgreSQL 11 a PostgreSQL 9.6.
Para habilitar la replicación lógica en el archivo de origen
postgresql.conf
de PostgreSQL, establezca los parámetros siguientes:Parámetro Descripción wal_level
Establezca como lógico. max_replication_slots
Establezca al menos el número máximo de bases de datos para la migración. Si quiere migrar cuatro bases de datos, establezca el valor en 4
como mínimo.max_wal_senders
Establezca el número de bases de datos que se ejecutarán simultáneamente. 10
es el valor recomendado.Agregue la dirección IP del agente DMS al archivo
pg_hba.conf
de PostgreSQL de origen.Cuando termine de aprovisionar una instancia de Azure Database Migration Service, anote la dirección IP de DMS.
Agregue la dirección IP al archivo
pg_hba.conf
:host all 172.16.136.18/10 md5 host replication postgres 172.16.136.18/10 md5
El usuario debe tener el rol REPLICACIÓN en el servidor que hospeda la base de datos de origen.
Los esquemas de base de datos de origen y destino deben coincidir.
Limitaciones de tamaño
- Puede migrar hasta 1 TB de datos de PostgreSQL a Azure Database for PostgreSQL con un solo servicio DMS.
- DMS permite a los usuarios elegir tablas de una base de datos que quieren migrar.
En segundo plano, el comando pg_dump
se usa para tomar el volcado de memoria de las tablas seleccionadas mediante una de las opciones siguientes:
-T
para incluir los nombres de tabla seleccionados en la interfaz de usuario-t
para excluir los nombres de tabla no seleccionados por el usuario
Hay un límite máximo de 7500 caracteres que se pueden incluir como parte del comando pg_dump
tras la opción -t
o -T
. El comando pg_dump
usa el recuento de los caracteres de las tablas seleccionadas o no seleccionadas, lo que sea menor. Si el recuento de caracteres de las tablas seleccionadas y no seleccionadas es superior a 7500, se produce un error en el comando pg_dump
.
En el ejemplo anterior, el comando pg_dump
sería:
pg_dump -h hostname -u username -d databasename -T "\"public\".\"table_1\"" -T "\"public\".\"table_2\""
En el comando anterior, el número de caracteres es 55 (incluye las comillas dobles, los espacios, -T
y las barras diagonales)
Limitaciones de tipos de datos
Limitación: si no hay ninguna clave principal en las tablas, es posible que no se sincronicen los cambios en la base de datos de destino.
Solución alternativa: establecer temporalmente una clave principal para la tabla para que continúe la migración. Quite la clave principal una vez terminada la migración de datos.
Limitaciones con migración en línea desde AWS RDS PostgreSQL
Al intentar realizar una migración en línea desde Amazon Web Services (AWS) Relational Database (RDS) PostgreSQL a Azure Database for PostgreSQL, pueden producirse los siguientes errores:
Error: El valor predeterminado de la columna "{column}" de la tabla "{table}" de la base de datos "{database}" es diferente en los servidores de origen y destino. Es "{valor en origen}" en el origen y "{valor en destino}" en el destino.
Limitación: este error se produce cuando el valor predeterminado de un esquema de columna es diferente entre las bases de datos de origen y de destino.
Solución alternativa: asegúrese de que el esquema en el destino coincide con el esquema en el origen. Para obtener más información sobre cómo migrar el esquema, consulte la documentación de migración en línea de Azure Database for PostgreSQL.
Error: la base de datos de destino "{database}" tiene "{number of tables}" tablas mientras que la base de datos de origen "{database}" tiene "{number of tables}" tablas. El número de tablas en las bases de datos de origen y de destino deben coincidir.
Limitación: este error se produce cuando el número de tablas es diferente entre las bases de datos de origen y de destino.
Solución alternativa: asegúrese de que el esquema en el destino coincide con el esquema en el origen. Para obtener más información sobre cómo migrar el esquema, consulte la documentación de migración en línea de Azure Database for PostgreSQL.
Error: La base de datos de origen {database} está vacía.
Limitación: Este error se produce cuando la base de datos de origen está vacía. Probablemente seleccionó la base de datos incorrecta como origen.
Solución alternativa: Compruebe la base de datos de origen que seleccionó para la migración y vuelva a intentarlo.
Error: La base de datos de destino {database} está vacía. Migrar el esquema.
Limitación: Este error se produce cuando no hay ningún esquema en la base de datos de destino. Asegúrese de que el esquema en el destino coincide con el esquema en el origen.
Solución alternativa: asegúrese de que el esquema en el destino coincide con el esquema en el origen. Para obtener más información sobre cómo migrar el esquema, consulte la documentación de migración en línea de Azure Database for PostgreSQL.
Otras limitaciones
El nombre de la base de datos no puede incluir punto y coma (
;
).Una tabla capturada debe tener una clave principal. Si una tabla no tiene una clave principal, el resultado de las operaciones de registro DELETE y UPDATE es impredecible.
Se omitirá la actualización de un segmento de clave principal. El destino identifica la aplicación de dicha actualización como una actualización que no actualizó ninguna fila. El resultado es un registro escrito en la tabla de excepciones.
Si la tabla tiene una columna
JSON
, las operaciones DELETE o UPDATE de esta tabla pueden provocar un error en la migración.La migración de varias tablas con el mismo nombre, pero con distintas mayúsculas y minúsculas, puede provocar un comportamiento impredecible y no es compatible. Un ejemplo es el uso de table1, TABLE1 y Table1.
No se admite cambiar el procesamiento de los DDL de la tabla [CREATE | ALTER | DROP | TRUNCATE].
En Database Migration Service, una única actividad de migración solo puede alojar hasta cuatro bases de datos.
No se admite la migración de la tabla pg_largeobject.