Todos los productos
Search
Centro de documentos

ApsaraDB RDS:Introduction to the check report of a major engine version upgrade for an ApsaraDB RDS for PostgreSQL instance

Última actualización: Sep 24, 2026

Antes de iniciar una actualización de versión principal del motor, ApsaraDB RDS for PostgreSQL ejecuta una comprobación y genera un informe. El resultado determina si la actualización puede continuar:

  • Los errores bloquean la actualización. Resuelva todos los errores antes de volver a ejecutarla.

  • Las advertencias no bloquean la actualización, pero pueden prolongar el tiempo en modo de solo lectura o provocar que el proceso termine con errores si los recursos son insuficientes.

Para consultar el informe de comprobación, vaya a la página Major Version Upgrade en la consola, haga clic en la pestaña Upgrade Check y luego haga clic en View Information junto al informe correspondiente.

A continuación se presenta una tabla que resume todos los módulos de comprobación y su impacto en la viabilidad de la actualización.

Módulo de comprobación

Alcance

Impacto si se activa

Advertencias

Todos los modos de actualización

No bloquea el proceso; puede prolongar el tiempo en modo de solo lectura o causar un fallo por limitaciones de recursos

Errores

Todos los modos de actualización

Bloquea la actualización; deben resolverse antes de reintentar

Registro de errores de pg_upgrade

Todos los modos de actualización

Se incluye cuando se detectan errores; enumera las extensiones y palabras clave incompatibles

Incompatibilidades de replicación lógica

Solo modo sin tiempo de inactividad

Bloquea este modo si existen objetos incompatibles

Temas relacionados

Advertencias

Las advertencias señalan restricciones de recursos o condiciones que podrían prolongar el tiempo en modo de solo lectura o provocar que la actualización termine con errores. Este tipo de alertas no bloquea el proceso, pero se recomienda atenderlas antes de comenzar.

Contenido de la comprobación

La cantidad de objetos de base de datos influye en el tiempo que la instancia permanece en modo de solo lectura durante la actualización. También determina la memoria y el almacenamiento necesarios. Cuando la comprobación detecta una posible falta de recursos, muestra la capacidad de memoria recomendada, la capacidad mínima de memoria recomendada y el tamaño de disco recomendado en la pestaña Upgrade Check.

En las actualizaciones sin tiempo de inactividad, la comprobación también cuenta las secuencias. La replicación lógica no sincroniza las secuencias automáticamente, por lo que requieren un breve cambio de rol al finalizar el proceso.

Capacidad de memoria recomendada: cuando la memoria de la instancia alcanza o supera este valor, el sistema actualiza todas las bases de datos de forma simultánea para minimizar el tiempo en modo de solo lectura.

Capacidad mínima de memoria recomendada: cuando la memoria de la instancia alcanza o supera este valor, la actualización no termina con errores por falta de memoria. Sin embargo, el sistema actualiza las bases de datos de forma secuencial, lo cual prolonga el tiempo en modo de solo lectura.

Tamaño de disco recomendado: durante la actualización, el sistema duplica temporalmente todas las definiciones de objetos, lo que casi duplica el consumo de inodos. Si el almacenamiento disponible es inferior a este valor, el proceso puede terminar con errores.

Comprobación del número de tablas de secuencias (solo en el modo sin tiempo de inactividad): la replicación lógica no sincroniza las secuencias. Entre más secuencias tenga la instancia, más tiempo tomará el cambio de rol al final de una actualización sin tiempo de inactividad.

Advertencias y soluciones

Advertencia de disco

Formato de la advertencia: Total disk space: {*} GB; Used disk: {*} GB; Used inodes: {*}; bytes-per-nodes: {*}; Minimum disk space required for upgrade: {*} GB

Causa: la instancia tiene demasiados objetos y el almacenamiento actual es insuficiente para la actualización.

Solución:

  • Modo de despliegue azul-verde: establezca la capacidad de almacenamiento de la nueva instancia en un valor mayor o igual al espacio mínimo de disco requerido para la actualización.

  • Modo de actualización local: amplíe la capacidad de almacenamiento de la instancia a un valor mayor o igual al espacio mínimo de disco requerido antes de iniciar la actualización. Para obtener más información, consulte Change the configuration.

Advertencia de memoria

Formato de la advertencia: Current memory: {*} GB; Recommended memory: {*} GB; Minimum memory: {*} GB

Causa: la instancia tiene demasiados objetos y la memoria actual es insuficiente para minimizar el tiempo en modo de solo lectura durante la actualización.

Solución:

  • Modo de despliegue azul-verde: configure la especificación de la nueva instancia para que su memoria cumpla o supere el requisito mínimo.

  • Modo de actualización local: actualice la especificación de la instancia si la memoria actual es menor que la capacidad recomendada. Para obtener más información, consulte Change the configuration.

Advertencia de suscripción

Formato de la advertencia: The instance has replication slot subscribers. To prevent subscription data inconsistency, see the Alibaba Cloud documentation

Causa: la instancia tiene suscriptores de ranuras de replicación. Ejecute la siguiente consulta para comprobarlo:

SELECT * FROM pg_subscription;

Solución: siga los pasos del tema Upgrade the database major version para gestionar los suscriptores de ranuras de replicación.

Advertencia de secuencias (solo en el modo sin tiempo de inactividad)

Formato de la advertencia: Total Sequence tables: {0}. Too many Sequence tables will extend the switchover time for logical replication major version upgrade.

Causa: la instancia contiene secuencias. Ejecute la siguiente consulta para enumerarlas:

SELECT * FROM pg_sequences;

Solución: si la instancia tiene muchas secuencias, clone la instancia y ejecute una actualización de prueba para medir el tiempo real del cambio de rol antes de actualizar el entorno de producción.

Errores

Los errores bloquean la actualización. Resuélvalos todos antes de volver a ejecutar la comprobación.

Contenido de la comprobación

El sistema comprueba las siguientes condiciones:

  • Cuentas de superusuario innecesarias o métodos de cifrado no válidos configurados en cuentas estándar

  • Extensiones o palabras clave incompatibles con la versión principal del motor de destino (registradas en el registro de errores de pg_upgrade)

  • La extensión pgcrypto instalada en el esquema pg_catalog

  • (Solo en el modo sin tiempo de inactividad) Versión secundaria del motor anterior a 20250228

  • (Solo en el modo sin tiempo de inactividad) Objetos de base de datos incompatibles con la replicación lógica

Errores y soluciones

Error de cuenta

Formato del error: Invalid superuser account: {*}; Invalid account: {*}; Please see the Alibaba Cloud documentation

Causa: la instancia tiene cuentas de superusuario redundantes o cuentas estándar con configuraciones de cifrado no válidas.

Solución:

  • Cuentas de superusuario redundantes: envíe un ticket para solicitar su eliminación.

  • Cuentas estándar no válidas: restablezca las contraseñas de las cuentas afectadas.

Error de comprobación previa

Formato del error: pg_upgrade pre-check task failed, need to check [pg_upgrade error log] and [pg_upgrade-related files and errors]

Causa: la comprobación previa de pg_upgrade terminó con errores.

Solución: revise la sección del registro de errores de pg_upgrade en el informe de comprobación para identificar y resolver el problema específico.

Error de la extensión pgcrypto

Formato del error: The pg_crypto extension is installed in schema: pg_catalog in database: {*}, please see the Alibaba Cloud documentation

Causa: la extensión pgcrypto crea funciones en pg_catalog que solo existen en versiones posteriores de PostgreSQL. Esto provoca que la actualización de la versión principal del motor termine con errores.

Solución: en cada base de datos afectada, elimine la extensión pgcrypto y vuelva a crearla en un esquema distinto de pg_catalog.

Error de versión secundaria (solo en el modo sin tiempo de inactividad)

Formato del error: Zero-downtime major version upgrade requires minimum minor version 20250228

Causa: la versión secundaria del motor de la instancia es anterior a 20250228.

Solución: Upgrade the minor engine version a la versión 20250228 o posterior.

Registro de errores de pg_upgrade

Contenido de la comprobación

El registro de errores de pg_upgrade documenta las extensiones y palabras clave SQL incompatibles con la versión principal del motor de destino.

Errores comunes

loadable_libraries.txt: extensiones incompatibles

El archivo loadable_libraries.txt enumera los archivos de biblioteca que la versión de PostgreSQL de destino no puede cargar. Cada biblioteca suele corresponder a una extensión.

Causa: una o más extensiones instaladas son incompatibles con la versión principal del motor de destino.

Solución: revise las extensiones listadas en loadable_libraries.txt. Compruebe si su aplicación depende de cada una y decida si debe eliminarla antes de la actualización. Para consultar la lista de extensiones compatibles con cada versión, consulte Supported extensions.

En las siguientes secciones se describen las extensiones incompatibles más comunes.

pgrouting

Causa: la extensión pgrouting es incompatible con la versión principal del motor de destino.

Solución: elimine la extensión antes de la actualización si su aplicación ya no la requiere. Compruebe que la instancia funcione correctamente sin pgrouting antes de continuar.

Importante

Si pgrouting, PostGIS o postgis_topology están instalados, aplican los siguientes límites de actualización de versión:

  • PostgreSQL 9.4 solo se puede actualizar a PostgreSQL 10 o PostgreSQL 11.

  • PostgreSQL 10 solo se puede actualizar a PostgreSQL 11.

  • No es posible actualizar PostgreSQL 11, 12 ni 13.

jsonbx

Causa: la extensión jsonbx se introdujo en PostgreSQL 9.4 para ofrecer operaciones con el tipo de datos JSON que no estaban disponibles en esa versión. PostgreSQL 10 y versiones posteriores admiten estas operaciones de forma nativa, por lo que la extensión ya no es necesaria.

Solución: identifique qué funciones de jsonbx utiliza su aplicación y compruebe cómo se comportan en la versión de destino. Si las diferencias de comportamiento son aceptables, elimine la extensión antes de la actualización.

La siguiente tabla muestra las diferencias de comportamiento de las funciones de jsonbx entre PostgreSQL 9.4 y PostgreSQL 10 o superior:

Uso de la función

Resultado en PostgreSQL 9.4

Resultado en PostgreSQL 10+

select '{"a":1, "b":2, "c":3}'::jsonb - 2;

{"a": 1, "b": 2}

ERROR: cannot delete from object using integer index

select jsonb_delete('{"a":1, "b":2, "c":3}'::jsonb, '{b}'::text[]);

{"a": 1, "c": 3}

ERROR: function jsonb_delete(jsonb, text[]) does not exist

select '{"a":{"c":1, "d":2}, "b":3}'::jsonb - '{a, c}'::text[];

{"a": {"d": 2}, "b": 3}

{"b": 3}

PostGIS y postgis_topology

Causa: la versión de PostGIS instalada es incompatible con las dependencias de biblioteca de la versión principal del motor de destino.

Importante

El comportamiento de análisis del formato WKT (well-known text) de PostGIS varía entre versiones principales. Antes de actualizar la extensión en producción, clone la instancia y pruebe la compatibilidad en la copia. Para conocer los pasos de clonación, consulte Back up PostgreSQL data y Restore PostgreSQL data.

Solución:

  1. Upgrade the minor engine version.

  2. Actualice la extensión PostGIS. Para obtener más información, consulte PostGIS extension upgrade.

  3. Compruebe que la versión de PostGIS sea como mínimo la 3.3.2:

    \dx
  4. Vuelva a ejecutar la comprobación de actualización.

Importante

Si PostGIS, postgis_topology o pgrouting están instalados, aplican límites de actualización de versión. Consulte la sección pgrouting para obtener más detalles.

tables_with_oids.txt: tablas con OID

El archivo tables_with_oids.txt enumera las tablas creadas con la declaración WITH OIDS. PostgreSQL 12 y versiones posteriores no admiten WITH OIDS.

Causa: una o más tablas usan la declaración WITH OIDS, la cual no es compatible con la versión de destino.

Solución:

  • Opción 1 (recomendada): actualice a PostgreSQL 11, que todavía admite WITH OIDS.

  • Opción 2: revise las tablas listadas en tables_with_oids.txt y confirme que su aplicación no depende de los valores OID. Luego, ejecute la siguiente instrucción para cada tabla afectada:

    ALTER TABLE {table_name} SET WITHOUT OIDS;

Incompatibilidades de replicación lógica (solo en el modo sin tiempo de inactividad)

Las actualizaciones de versión principal del motor sin tiempo de inactividad utilizan replicación lógica para sincronizar los datos de la instancia de origen a la de destino. Algunos objetos de base de datos no son compatibles con este mecanismo. Si la comprobación detecta alguno de los elementos descritos a continuación, la instancia no podrá usar el modo sin tiempo de inactividad.

Contenido de la comprobación

El sistema comprueba lo siguiente:

  • Tablas externas

  • Tablas sin clave primaria ni clave única

  • Vistas materializadas

  • Objetos grandes

  • Extensiones cuyo uso está prohibido con la replicación lógica

  • Valores de parámetros que no cumplen los requisitos de la replicación lógica

Incompatibilidades y soluciones

Tablas externas

Formato del error: Foreign tables in database: {0}. Total databases: {1}

Causa: la instancia contiene tablas externas, las cuales no se pueden replicar mediante replicación lógica.

Solución: elimine todas las tablas externas.

  1. En cada base de datos, identifique las tablas externas:

    SELECT COUNT(*) AS count, relkind
    FROM pg_class
    WHERE relkind IN ('f')
    GROUP BY relkind;
  2. Elimine las tablas externas:

    DROP FOREIGN TABLE [ IF EXISTS ] name [ CASCADE | RESTRICT ];

Para obtener más información, consulte la documentación de PostgreSQL sobre DROP FOREIGN TABLE.

Tablas sin clave primaria ni clave única

Formato del error: Tables without primary key or unique key in database: {0}. Total databases: {1}

Causa: la replicación lógica requiere que cada tabla tenga una clave primaria, una clave única o REPLICA IDENTITY FULL para identificar las filas durante la replicación.

Solución: agregue una clave primaria o única a cada tabla afectada, o bien configure REPLICA IDENTITY FULL.

  1. En cada base de datos, identifique las tablas sin clave primaria ni clave única:

    SELECT COUNT(*) AS count
    FROM information_schema.tables t
    LEFT JOIN information_schema.table_constraints tc
        ON t.table_name = tc.table_name
        AND t.table_schema = tc.table_schema
        AND (tc.constraint_type = 'PRIMARY KEY' OR tc.constraint_type = 'UNIQUE')
    JOIN pg_class c
        ON t.table_name = c.relname
    JOIN pg_namespace ns
        ON c.relnamespace = ns.oid
        AND ns.nspname = t.table_schema
    WHERE t.table_type = 'BASE TABLE'
        AND tc.constraint_type IS NULL
        AND t.table_schema NOT IN ('pg_catalog', 'information_schema')
        AND c.relreplident != 'f';
  2. Configure REPLICA IDENTITY FULL en la tabla (si agregar una clave no es viable):

    ALTER TABLE name REPLICA IDENTITY FULL;
  3. O bien, agregue una clave primaria o única:

    -- Primary key
    ALTER TABLE name
        ADD CONSTRAINT constraint_name PRIMARY KEY (column_name);
    
    -- Unique key
    ALTER TABLE name
        ADD CONSTRAINT constraint_name UNIQUE (column_name);

Para obtener más información, consulte la documentación de PostgreSQL sobre restricciones únicas.

Vistas materializadas

Formato del error: Materialized views in database: {0}. Total databases: {1}

Causa: la replicación lógica no puede replicar vistas materializadas.

Solución: elimine todas las vistas materializadas.

  1. En cada base de datos, identifique las vistas materializadas:

    SELECT COUNT(*) AS count, relkind
    FROM pg_class
    WHERE relkind IN ('m')
    GROUP BY relkind;
  2. Elimine las vistas materializadas:

    DROP MATERIALIZED VIEW IF EXISTS name;

Objetos grandes

Formato del error: Large objects in database: {0}. Total databases: {1}

Causa: la replicación lógica no puede replicar los objetos grandes almacenados en pg_largeobject.

Solución: elimine los objetos grandes.

Aviso

La eliminación de objetos grandes es irreversible. Antes de ejecutar la instrucción de eliminación, compruebe que ninguna aplicación haga referencia a estos objetos. Ejecute esta operación durante una ventana de mantenimiento y pruébela primero en una instancia que no sea de producción.

  1. En cada base de datos, cuente los objetos grandes:

    SELECT COUNT(*) AS count
    FROM pg_largeobject_metadata;
  2. Elimine cada objeto grande:

    SELECT lo_unlink(largeobject_oid);

Extensiones prohibidas

Formato del error: Logical replication prohibited extensions in database: {0}. Total databases: {1}

Causa: las siguientes extensiones son incompatibles con la replicación lógica y no pueden estar presentes durante una actualización sin tiempo de inactividad: pg_partman, pg_cron, pg_active y pglogical.

Solución: elimine temporalmente las extensiones incompatibles.

  1. En cada base de datos, compruebe si hay extensiones prohibidas instaladas:

    SELECT COUNT(*) AS count
    FROM pg_extension
    WHERE extname IN ('pg_partman', 'pg_cron', 'pg_active', 'pglogical');
  2. Elimine cada extensión prohibida:

    DROP EXTENSION extension_name;

Requisitos de parámetros no cumplidos

Formato del error: Logical replication requires wal_level to be logical, max_wal_sender and max_replication_slots to be at least {0}, instance wal_level is: {1}, max_wal_sender is: {2}, max_replication_slots is: {3}

Causa: uno o más de los siguientes parámetros no cumplen los requisitos de la replicación lógica: wal_level, max_wal_sender o max_replication_slots.

Solución: actualice los valores de los parámetros. Algunos cambios requieren reiniciar la instancia para surtir efecto. Para obtener más información, consulte Set the parameters of an instance.