Problemas conocidos y limitaciones con las migraciones en línea de PostgreSQL a Azure Database for PostgreSQL

Los problemas conocidos y las limitaciones relacionadas con las migraciones en línea de PostgreSQL a Azure Database for PostgreSQL se describen en las siguientes secciones.

Configuración de la migración en línea

  • El servidor PostgreSQL de origen debe ejecutar las versiones 9.4, 9.5, 9.6, 10 u 11. Para más información, vea la información sobre versiones de base de datos admitidas de PostgreSQL.

  • 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 postgresql.conf, establezca los parámetros siguientes:

    • wal_level: establezca como lógico.
    • max_replication_slots: establezca al menos el máximo número de bases de datos para la migración. Si quiere migrar cuatro bases de datos, establezca el valor en 4.
    • max_wal_senders: establezca el número de bases de datos que se ejecutan simultáneamente. El valor recomendado es 10.
  • Agregue la dirección IP del agente DMS al archivo pg_hba.conf de PostgreSQL de origen.

    1. Cuando termine de aprovisionar una instancia de Azure Database Migration Service, anote la dirección IP de DMS.

    2. 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. Captura de pantalla de la pantalla DMS que muestra la opción de elegir tablas.

En segundo plano, hay un comando pg_dump que 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 del tipo 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: vuelva a comprobar la base de datos de origen que ha seleccionado para la migración y, a continuación, inténtelo de nuevo.

  • 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 será impredecible.
  • Se omitirá la actualización de un segmento de clave principal. El destino identificará 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 , cualquier operación DELETE o UPDATE de esta tabla puede 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.