Todos los productos
Search
Centro de documentos

ApsaraDB RDS:Upgrade a major version using zero-downtime mode

Última actualización: Sep 03, 2026

Utilice el modo sin tiempo de inactividad para actualizar la versión principal del motor de una instancia de ApsaraDB RDS for PostgreSQL y mantener la base de datos completamente operativa. La instancia acepta operaciones de lectura y escritura durante todo el proceso. Durante el cambio final, la instancia entra en modo de solo lectura por unos pocos segundos; la duración exacta depende de la cantidad de secuencias y del volumen de escrituras de transacciones grandes.

Para conocer otros métodos de actualización, consulte Introduction to major version upgrade solutions.

Funcionamiento

El modo sin tiempo de inactividad ejecuta pg_upgrade para actualizar una instantánea de su instancia a la versión destino y luego utiliza la replicación lógica nativa para sincronizar los cambios incrementales desde el origen. Usted debe verificar la instancia de destino antes de iniciar el cambio. Al comenzar el cambio, la instancia pasa brevemente a solo lectura mientras se sincronizan las secuencias y, posteriormente, el tráfico se redirige a la nueva versión.

Facturación

Sin costo adicional.

Requisitos previos

Antes de empezar, asegúrese de que:

  • La instancia ejecute ApsaraDB RDS for PostgreSQL 16 o una versión anterior.

  • El tipo de almacenamiento sea disco en la nube. Las instancias con discos locales de alto rendimiento solo pueden usar blue-green deployment mode.

  • El método de facturación sea pay-as-you-go o suscripción. Las instancias serverless solo pueden usar blue-green deployment mode.

  • La instancia no sea una read-only instance ni una dedicated cluster instance.

  • El parámetro wal_level esté establecido en logical. Las actualizaciones sin tiempo de inactividad dependen de la replicación lógica, por lo que si wal_level está en replica o minimal, la comprobación previa a la actualización fallará. De lo contrario, modify the instance parameters antes de continuar.

  • Babelfish no esté habilitado. El número de versión menor del motor no debe terminar con babelfish.

Notas de uso

Revise la siguiente información antes de iniciar la actualización.

Impacto en el negocio

Las operaciones DDL (Lenguaje de Definición de Datos) están prohibidas desde el momento en que comienza la actualización hasta que se completa el cambio. El tiempo de inactividad de la instancia de origen se mide en segundos y depende de la cantidad de secuencias y del volumen de escrituras de transacciones grandes.

Slots de replicación

  • Si la instancia de origen tiene una publicación (extremo publicador de un slot de replicación), dicho slot se pierde después de la actualización.

  • Si la instancia de origen tiene un suscriptor (extremo suscriptor de un slot de replicación), la actualización puede causar problemas de sincronización de datos debido a la apropiación del slot de replicación. Consulte la sección de preguntas frecuentes para obtener más detalles.

Cambios de parámetros

  • Los parámetros no compatibles con la versión de destino se eliminan automáticamente.

  • Los parámetros cuyos valores caen fuera del rango válido para la versión de destino se restablecen a los valores predeterminados de la plantilla de parámetros de dicha versión.

  • statement_timeout se establece temporalmente en 0 durante la actualización y se restaura a su valor original al finalizar.

Tareas de DTS

Si la instancia es origen o destino de Data Transmission Service (DTS), recreate the DTS task después de la actualización.

Compatibilidad de plugins

La actualización lleva la instancia automáticamente a la última versión menor del motor, lo cual puede causar problemas de compatibilidad con los plugins.

Copias de seguridad

Se realiza una copia de seguridad completa tanto antes como después de la actualización para permitir la recuperación basada en clonación.

Impacto en las distintas etapas de la actualización

Etapa de la actualización

Impacto

Inicio de la actualización de versión principal

Se prohíben las operaciones DDL.

Creación de slots de replicación y publicaciones

Se prohíben las operaciones DDL. Los registros WAL comienzan a acumularse.

Inicio del suscriptor y establecimiento de la relación de replicación lógica

Se prohíben las operaciones DDL. Los registros WAL comienzan a consumirse y dejan de acumularse. La replicación lógica genera cierta carga de recursos, la cual está estrechamente relacionada con la cantidad de bases de datos y el tráfico.

Inicio del cambio

Se prohíben las operaciones DDL. La replicación lógica genera cierta carga de recursos, la cual está estrechamente relacionada con la cantidad de bases de datos y el tráfico. La instancia pasa a solo lectura; la duración de este estado depende de la cantidad de secuencias.

Finalización del cambio (actualización completada)

Se elimina el slot de replicación lógica y se elimina la carga de recursos generada por dicha replicación. La instancia reanuda las operaciones normales de lectura y escritura.

Una vez iniciada la tarea de actualización, vaya a la pestaña Upgrade History. En la columna Upgrade Log de la tarea de actualización correspondiente, haga clic en View Information para consultar el proceso detallado de la actualización.

Paso 1: Ejecutar una comprobación previa a la actualización

  1. Inicie sesión en la consola de ApsaraDB RDS. En la barra de navegación superior, seleccione la región donde reside la instancia, localícela y haga clic en su ID.

  2. En el panel de navegación izquierdo, haga clic en Major Version Upgrade.

    Si Major Version Upgrade no aparece, compruebe la versión y la configuración de su instancia. Para más detalles, consulte Prerequisites .
  3. En la pestaña Upgrade Check, haga clic en Create upgrade check report.

  4. Seleccione la versión de destino, establezca Upgrade Mode en Zero Downtime y haga clic en OK. El estado de la instancia cambia a Maintaining Instance. Una vez completada la comprobación, el estado vuelve a Running.

  5. Revise el resultado de la comprobación: Para ayuda sobre cómo interpretar los resultados, consulte Interpret an ApsaraDB RDS for PostgreSQL major version upgrade check report.

    • Success o Warning: continúe con el Paso 2.

    • Failed: haga clic en View Information, corrija los problemas reportados y vuelva a ejecutar la comprobación.

    Importante
    • Si el resultado es Warning, corrija todos los problemas reportados y vuelva a ejecutar la comprobación hasta que el resultado sea Success. - Si crea un plugin en la instancia principal después de una comprobación exitosa, ejecute la comprobación nuevamente antes de actualizar.

Paso 2: Iniciar la actualización

Antes de realizar este paso, asegúrese de haber completado el Paso 1: Ejecutar una comprobación previa a la actualización: en la pestaña Upgrade Check, cree un informe de comprobación de actualización y confirme que el resultado sea Success o Warning antes de crear la tarea de actualización.

  1. Haga clic en la pestaña Upgrade Instance, lea las advertencias, seleccione una versión en Select The Destination Version y haga clic en Create Upgrade Task.

  2. En el cuadro de diálogo, lea el mensaje y haga clic en OK.

  3. En la sección Create Major Engine Version Upgrade Task, establezca Upgrade Mode en Zero Downtime y haga clic en Create.

Cuando el estado de la instancia cambie a Migrating, la tarea de actualización habrá comenzado.

El tiempo requerido depende de la cantidad de objetos de base de datos en la instancia: a mayor cantidad de objetos, mayor será la duración. Puede seguir el progreso en Task Hub.

Importante
  • Las tareas de actualización no se pueden modificar ni eliminar después de su creación.

  • Mientras la instancia esté en estado Migrating, no se admiten tareas de O&M (operaciones y mantenimiento) como modificar parámetros, reiniciar o liberar la instancia.

Paso 3: Verificar y realizar el cambio

Verificar la instancia de destino

Cuando el estado de la instancia cambia de Migrating a Migrating Data Out, se establece la replicación lógica y la instancia de destino queda lista para su verificación.

Vaya a la pestaña Upgrade History y utilice la Later Version Verification URL del registro de actualización para conectarse a la instancia de destino y verificar los datos.

La instancia de destino se encuentra en modo de solo lectura durante esta fase. No se admiten operaciones de escritura.

Cambiar a la nueva versión

  1. Después de confirmar que los datos cumplen con sus expectativas y que el Upgrade Result muestra Synchronizing, haga clic en Switchover en la columna Upgrade Log.

    - Si Upgrade Result muestra un estado diferente, consulte Upgrade result descriptions . - Para abandonar la actualización, haga clic en Cancel en la columna Upgrade Log . Esto elimina el slot de replicación lógica, quita la sobrecarga de replicación de la instancia de origen y rehabilita las operaciones DDL.
  2. En el cuadro de diálogo Switchover, establezca Write Downtime Tolerance (en segundos) y haga clic en OK. Esta configuración indica al sistema que espere a que se despeje el retraso de replicación antes de completar el cambio, lo cual garantiza la consistencia de los datos. Durante esta espera, Upgrade Result muestra Read-only. Si se excede el período de tolerancia, el sistema vuelve a Synchronizing y elimina la restricción de solo lectura. Cuando Upgrade Result cambia a Read-only, el cambio está en curso y el estado de la instancia es Migrating. Para cancelar un cambio ya iniciado, haga clic en Interrupted en la columna Upgrade Log.

  3. Cuando Upgrade Result cambia a Succeeded, el cambio ha finalizado y el estado de la instancia es Running. Compruebe la versión actual en la página Basic Information de la instancia.

    Para ver la duración exacta del modo de solo lectura después de la actualización, vaya a la pestaña Upgrade History y haga clic en View Information en la columna Upgrade Log . El tiempo de solo lectura corresponde al intervalo entre Switching time y Switching completion time , y no incluye el tiempo en que la instancia no es accesible debido a la propagación de la caché DNS.

Descripción de los resultados de actualización

La columna Upgrade Result en la pestaña Upgrade History muestra uno de los siguientes valores durante la actualización.

Resultado de la actualización

Estado de la instancia

Descripción

Acciones disponibles

Running

Migrating

La tarea de actualización se está ejecutando.

Ninguna.

Synchronizing

Migrating Data Out

La replicación lógica funciona correctamente.

Cambiar a la nueva versión o cancelar la actualización.

Replication Interrupted

Migrating Data Out

La replicación lógica presenta anomalías.

Consultar el registro de actualización para determinar la causa o cancelar la actualización.

Read-only

Migrating

El cambio está en curso. La instancia se encuentra en modo de solo lectura mientras se sincronizan las secuencias.

Interrumpir: cancelar el cambio.

Switchover

Migrating

La sincronización de secuencias ha finalizado; se está completando el cambio.

Ninguna.

Cancel

Running

La tarea de actualización fue cancelada.

Ninguna.

Succeeded

Running

La tarea de actualización se completó correctamente.

Ninguna.

Referencia de API

Operación de API

Descripción

UpgradeDBInstanceMajorVersionPrecheck

Ejecuta una comprobación previa para una actualización de versión principal.

DescribeUpgradeMajorVersionPrecheckTask

Consulta el informe de comprobación previa a la actualización.

UpgradeDBInstanceMajorVersion

Actualiza la versión principal del motor.

DescribeUpgradeMajorVersionTask

Consulta el historial de tareas de actualización de versión principal.

Preguntas frecuentes

¿Puedo modificar la instancia durante una actualización de versión principal?

No. No se admiten modificaciones en la instancia, incluido el cambio de tipo de instancia, durante una actualización. Realice otras operaciones únicamente después de que finalice la actualización.

¿Se admiten actualizaciones automáticas de versión principal?

No. No se admiten las actualizaciones automáticas a versiones principales del motor.

¿Se admiten reducciones de versión principal?

No. No se admite volver a una versión principal anterior después de una actualización. Para ejecutar una versión inferior, adquiera una nueva instancia con dicha versión y utilice DTS para migrar los datos.

Después de una actualización de versión principal, aparece un conflicto de raster_overviews al crear una vista raster_overviews en la instancia de destino. ¿Cómo lo soluciono?

Este conflicto puede ocurrir cuando la versión de PostGIS es anterior a 2.5.2, la instancia de origen ejecuta PostgreSQL 10 u 11, y usted actualiza a PostgreSQL 12.

Paso 1: Actualizar el plugin PostGIS en la instancia de origen.

Ejecute el siguiente comando dos veces para asegurarse de que se complete correctamente.

SELECT PostGIS_Extensions_Upgrade();
SELECT PostGIS_Extensions_Upgrade();

Paso 2: Elegir la solución según si utiliza el plugin PostGIS Raster.

Si el plugin PostGIS Raster está en uso:

  1. Ejecute lo siguiente en la instancia de origen para desvincular la vista raster_overviews de la extensión:

    ALTER EXTENSION PostGIS_Raster DROP VIEW raster_overviews;
    CREATE OR REPLACE VIEW raster_overviews AS SELECT 1;
  2. Actualice la instancia de PostgreSQL a PostgreSQL 12 como mínimo.

  3. Después de la actualización, vuelva a crear la vista en la instancia de destino:

    CREATE OR REPLACE VIEW raster_overviews AS
    SELECT
      current_database() AS o_table_catalog,
      n.nspname AS o_table_schema,
      c.relname AS o_table_name,
      a.attname AS o_raster_column,
      current_database() AS r_table_catalog,
      split_part(split_part(s.consrc, '''::name', 1), '''', 2)::name AS r_table_schema,
      split_part(split_part(s.consrc, '''::name', 2), '''', 2)::name AS r_table_name,
      split_part(split_part(s.consrc, '''::name', 3), '''', 2)::name AS r_raster_column,
      trim(both from split_part(s.consrc, ',', 2))::integer AS overview_factor
    FROM
      pg_class c,
      pg_attribute a,
      pg_type t,
      pg_namespace n,
      (SELECT connamespace, conrelid, conkey, pg_get_constraintdef(oid) AS consrc FROM pg_constraint) AS s
    WHERE
      t.typname = 'raster'::name
      AND a.attisdropped = false
      AND a.atttypid = t.oid
      AND a.attrelid = c.oid
      AND c.relnamespace = n.oid
      AND c.relkind = ANY(ARRAY['r'::char, 'v'::char, 'm'::char, 'f'::char])
      AND s.connamespace = n.oid
      AND s.conrelid = c.oid
      AND s.consrc LIKE '%_overview_constraint(%'
      AND NOT pg_is_other_temp_schema(c.relnamespace)
      AND has_table_privilege(c.oid, 'SELECT'::text);
    ALTER EXTENSION PostGIS_Raster ADD VIEW raster_overviews;

Si el plugin PostGIS Raster no está en uso:

  1. Elimine el plugin en la instancia de origen:

    DROP EXTENSION PostGIS_Raster;
  2. Actualice la instancia de PostgreSQL a PostgreSQL 12 como mínimo.

¿Cómo evito problemas de sincronización de datos causados por la apropiación de slots de replicación?

Para conservar los datos de suscripción en la instancia de origen: asegúrese de que la instancia de origen no se caiga debido a una carga excesiva durante la actualización. Si se cae, la instancia de destino podría apropiarse del slot de replicación, lo que causaría inconsistencia en los datos. Una vez completada la actualización, deshabilite la suscripción en la base de datos de destino:

\c your_database
ALTER SUBSCRIPTION your_subscription_name DISABLE;

Para conservar los datos de suscripción en la instancia de destino: deshabilite la suscripción en la instancia de origen antes de la actualización y vuelva a habilitarla en la instancia de destino una vez que esta finalice.

  • En la instancia de origen (antes de la actualización):

    \c your_database
    ALTER SUBSCRIPTION your_subscription_name DISABLE;
  • En la instancia de destino (después de la actualización):

    \c your_database
    ALTER SUBSCRIPTION your_subscription_name ENABLE;
Para obtener más información sobre el uso de slots de replicación para la suscripción de datos, consulte Logical subscription y Change tracking . Si los datos de suscripción ya son inconsistentes, consulte la siguiente pregunta frecuente.

¿Cómo manejo la inconsistencia de datos de suscripción después de una actualización?

Después de que la actualización se complete correctamente, elimine los datos de la tabla en la instancia de destino (que ejecuta la versión superior) y vuelva a crear la suscripción con copy_data=true. Para más detalles, consulte ALTER SUBSCRIPTION.

Alternativamente, utilice la cláusula ON CONFLICT para fusionar los datos consumidos por la instancia de origen en la de destino. El siguiente ejemplo muestra cómo manejar conflictos por marca de tiempo:

CREATE TABLE my_tbl(id INT PRIMARY KEY, t TIMESTAMP, val TEXT);

INSERT INTO my_tbl VALUES (1, CURRENT_TIMESTAMP, 'a');
INSERT INTO my_tbl VALUES (2, CURRENT_TIMESTAMP, 'b');
INSERT INTO my_tbl VALUES (3, CURRENT_TIMESTAMP, 'c');

-- Update if the incoming row has a newer timestamp
INSERT INTO my_tbl VALUES (1, CURRENT_TIMESTAMP, 'd')
ON CONFLICT(id) DO UPDATE
  SET t = excluded.t, val = excluded.val
  WHERE my_tbl.t < excluded.t;

-- Skip if the incoming row has an older timestamp
INSERT INTO my_tbl VALUES (2, CURRENT_TIMESTAMP - '10 hours'::interval, 'e')
ON CONFLICT(id) DO UPDATE
  SET t = excluded.t, val = excluded.val
  WHERE my_tbl.t < excluded.t;

-- Insert new rows normally
INSERT INTO my_tbl VALUES (5, CURRENT_TIMESTAMP - '10 hours'::interval, 'f')
ON CONFLICT(id) DO UPDATE
  SET t = excluded.t, val = excluded.val
  WHERE my_tbl.t < excluded.t;

¿Por qué la fase de migración de datos tarda más de lo esperado?

La fase de migración de datos (mientras el estado de la instancia es Migrating) requiere un tiempo que depende del volumen de datos, la cantidad de objetos de base de datos, las especificaciones de la instancia y el ancho de banda de la red. Si está tardando más de lo esperado, compruebe lo siguiente:

  • La carga de CPU y E/S de la instancia en CloudMonitor.

  • El retraso de replicación en la vista pg_stat_replication.

  • Si el ancho de banda de la red ha alcanzado su límite.

Pasos siguientes