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.
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.txty 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.
-
En cada base de datos, identifique las tablas externas:
SELECT COUNT(*) AS count, relkind FROM pg_class WHERE relkind IN ('f') GROUP BY relkind; -
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.
-
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'; -
Configure
REPLICA IDENTITY FULLen la tabla (si agregar una clave no es viable):ALTER TABLE name REPLICA IDENTITY FULL; -
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.
-
En cada base de datos, identifique las vistas materializadas:
SELECT COUNT(*) AS count, relkind FROM pg_class WHERE relkind IN ('m') GROUP BY relkind; -
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.
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.
-
En cada base de datos, cuente los objetos grandes:
SELECT COUNT(*) AS count FROM pg_largeobject_metadata; -
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.
-
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'); -
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.