Realiza una actualización in situ de la versión principal de la base de datos

Para actualizar un clúster de AlloyDB para PostgreSQL a una versión principal de PostgreSQL superior y, al mismo tiempo, conservar los nombres de las instancias, las direcciones IP y las cadenas de conexión existentes, puedes planificar, validar y ejecutar una actualización de versión principal in situ. Para obtener información sobre los casos de uso de la actualización de la versión principal local, las etapas del flujo de trabajo y las copias de seguridad automáticas, consulta Descripción general de la actualización de la versión principal local de la base de datos.

Planifica una actualización de la versión principal de la base de datos

Sigue estos pasos para planificar una actualización de la versión principal de la base de datos:

  1. Busca la versión principal actual de tu base de datos.

    Console

    1. En la consola de Google Cloud , ve a la página Clústeres.

      Ir a los clústeres

    2. Selecciona un clúster de la lista. Aparecerá la página Descripción general.

    3. Ubica la versión principal de la base de datos en el campo Versión.

    gcloud

    Para obtener información sobre cómo instalar y comenzar a usar la gcloud CLI, consulta Instala gcloud CLI. Para obtener información sobre cómo iniciar Cloud Shell, consulta Usa Cloud Shell.

    Ejecuta el siguiente comando para obtener los detalles del clúster, incluida la versión principal actual:

    gcloud alloydb clusters describe CLUSTER_ID --region=REGION

    Realiza los siguientes reemplazos:

    • CLUSTER_ID: Es el ID del clúster.
    • REGION: Es la ubicación o región del clúster.

    REST v1beta

    Ejecuta la siguiente solicitud para obtener los detalles del clúster, incluida la versión principal actual:

    GET https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID

    Realiza los siguientes reemplazos:

    • CLUSTER_ID: el ID del clúster
    • PROJECT_ID: Es el ID del proyecto.
    • REGION: Es la ubicación o región del clúster.

    Para enviar tu solicitud, usa una de las siguientes opciones:

    curl (Linux, macOSo Cloud Shell)

    Ejecuta el siguiente comando:

       curl -X GET \
             -H "Authorization: Bearer $(gcloud auth print-access-token)" \
             -H "Content-Type: application/json; charset=utf-8" \
             "https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID"
       

    PowerShell (Windows)

    Ejecuta el comando siguiente:

       $cred = gcloud auth print-access-token
       $headers = @{ "Authorization" = "Bearer $cred" }
    
       Invoke-WebRequest `
         -Method GET `
         -Headers $headers `
         -Uri "https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID| Select-Object -Expand Content
       
  2. Identifica una versión principal de la base de datos de destino en la siguiente tabla. Para obtener una lista completa de las versiones de bases de datos compatibles con AlloyDB, consulta Versiones de bases de datos y políticas de versiones.

    Versión principal de origen Versiones principales de destino compatibles
    POSTGRES_14
    • POSTGRES_15
    • POSTGRES_16
    • POSTGRES_17
    • POSTGRES_18
    POSTGRES_15
    • POSTGRES_16
    • POSTGRES_17
    • POSTGRES_18
    POSTGRES_16
    • POSTGRES_17
    • POSTGRES_18
    POSTGRES_17
    • POSTGRES_18
  3. Revisa las funciones que se ofrecen en cada versión principal de la base de datos.

  4. Identifica las incompatibilidades que debas abordar. Las nuevas versiones principales pueden agregar cambios incompatibles que pueden requerir que modifiques el código de la aplicación, el esquema o la configuración de la base de datos.

  5. Antes de iniciar la actualización de la versión principal en tu clúster de producción, te recomendamos que clones tu clúster y pruebes la actualización de la versión principal en el clúster clonado.

    Además de verificar que la actualización se complete correctamente, ejecuta pruebas para asegurarte de que la aplicación se comporte como se espera en el clúster actualizado.

Prepara el clúster para una actualización de versión principal

Para conectarte a la base de datos, usa una de las siguientes opciones:

1. Descarta o asciende tus réplicas entre regiones. Las actualizaciones de la versión principal de la base de datos in situ no admiten réplicas entre regiones. Para obtener más información, consulta Replicación entre regiones.
  1. Si tu clúster de AlloyDB es una fuente de replicación lógica, inhabilita las suscripciones descendentes y descarta todas las ranuras de replicación lógica. Puedes volver a habilitar las suscripciones y recrear las ranuras de replicación lógica después de la actualización. Si la instancia de AlloyDB es solo un destino de replicación lógica, estos pasos no son necesarios. Para inhabilitar las suscripciones y descartar las ranuras de replicación lógica, sigue estos pasos:

    1. Inhabilita cada suscripción descendente en el suscriptor o el destino de replicación descendente. No inhabilites las suscripciones descendentes en la instancia de AlloyDB que se está actualizando:

      • Si usas pglogical, ejecuta el siguiente comando:

        SELECT * FROM
        pglogical.alter_subscription_disable(SUBSCRIPTION_NAME, immediate);
        

        Reemplaza SUBSCRIPTION_NAME en la consulta por el nombre de la suscripción existente. Si la suscripción debe inhabilitarse de inmediato, establece el valor del parámetro immediate en true. Según la configuración predeterminada, el valor es false y la suscripción se inhabilita solo después de que finaliza la transacción actual.

        Por ejemplo:

        postgres=> SELECT * FROM pglogical.alter_subscription_disable('test_sub',true);
        alter_subscription_disable
        ----------------------------
        t
        (1 row)
        
      • Si usas una extensión que no sea pglogical, ejecuta el siguiente comando:

        ALTER SUBSCRIPTION SUBSCRIPTION_NAME DISABLE;
        
    2. Descarta todas las ranuras de replicación lógica en la instancia principal de AlloyDB ejecutando el siguiente comando:

      SELECT pg_drop_replication_slot(REPLICATION_SLOT_NAME) FROM pg_replication_slots WHERE slot_type = 'logical';
      

      Reemplaza REPLICATION_SLOT_NAME en la consulta por el nombre de la ranura de replicación.

  2. Administra tus extensiones de PostgreSQL. Para obtener más información, consulta Configura extensiones de base de datos.

    Las verificaciones previas a la actualización detectan incompatibilidades de extensiones y muestran esas infracciones en los registros, junto con las acciones sugeridas. Para obtener más información, consulta Visualiza las fallas de la verificación previa a la actualización.

    Es posible que debas hacer lo siguiente:

    1. Quita las extensiones que ya no sean compatibles con la versión de destino.
    2. Actualiza PostGIS y las extensiones relacionadas (address_standardizer, address_standardizer_data_us, postgis_raster, postgis_sfcgal, postgis_tiger_geocoder y postgis_topology) a una versión compatible en la versión de PostgreSQL de destino. Para obtener más información, consulta Extensiones de PostGIS. En la siguiente tabla, se enumeran las versiones mínimas compatibles de la extensión de PostGIS para cada versión principal de PostgreSQL:

      Versión de PostgreSQL Versión mínima compatible de PostGIS
      PG14 3.1
      PG15 3.2
      PG16 3.4
      PG17 3.5
      PG18 3.6

      Por ejemplo, si tu versión de PostGIS es 3.1.x y deseas actualizar de POSTGRES 14 a POSTGRES 16, usa el siguiente comando para actualizar la extensión de PostGIS:

      ALTER EXTENSION postgis UPDATE TO '3.4.0';
      SELECT PostGIS_Version();
      
  3. Verifica que tus clústeres no contengan membresías de roles huérfanas. Las actualizaciones de versiones principales in situ no conservan las membresías de roles en las que el otorgante original ya no existe. Si algún clúster contiene membresías huérfanas en el catálogo pg_auth_members, estas membresías de rol se perderán después de la actualización.

    Para detectar membresías huérfanas, ejecuta la siguiente consulta:

    SELECT roleid::regrole, member::regrole, grantor::regrole
    FROM pg_auth_members
    WHERE grantor::regrole::text ~ '^[0-9]+$';
    

    Si la consulta devuelve filas, vuelve a crear las membresías de rol antes de actualizar el clúster. Para cada membresía huérfana, revoca el privilegio y vuelve a otorgarlo de inmediato. Esto asocia la membresía con un otorgante actual y válido (como alloydbadmin).

    Ejecuta el siguiente bloque de transacciones para cada membresía huérfana:

    BEGIN;
    REVOKE ROLE_NAME FROM MEMBER_NAME;
    GRANT ROLE_NAME TO MEMBER_NAME;
    COMMIT;
    

    Reemplaza ROLE_NAME y MEMBER_NAME por los roles de los resultados de la consulta.

  4. Ejecuta la siguiente consulta y verifica el campo datallowconn de cada base de datos para comprobar que se permitan las conexiones en todas las bases de datos, excepto en template0:

    SELECT datname,datallowconn from pg_database;
    

    Un valor t en el campo datallowconn significa que se permite la conexión. Un valor f indica que no se puede establecer una conexión. La base de datos template0 no debe permitir conexiones.

    Para permitir conexiones a una base de datos, ejecuta el siguiente comando:

    ALTER DATABASE DATABASE_NAME WITH ALLOW_CONNECTIONS = true;
    
  5. Ejecuta el siguiente comando para verificar que template1 sea una base de datos de plantilla:

    SELECT datname, datistemplate FROM pg_database WHERE datname = 'template1';
    

    Si datistemplate es f, configúralo como true ejecutando el siguiente comando:

    ALTER DATABASE template1 WITH IS_TEMPLATE true;
    

Actualiza la versión principal del clúster de manera local

La actualización de la versión principal de la base de datos en el lugar puede tardar entre 40 minutos y 48 horas en completarse, según factores como el tamaño de la base de datos, el tamaño del esquema y la cantidad de instancias de grupos de lectura en el clúster. El tiempo de inactividad de la instancia principal suele ser de 20 minutos a una hora y depende, principalmente, del esquema de la base de datos.

Cuando envías una solicitud de actualización de versión principal local, AlloyDB primero realiza verificaciones previas a la actualización. Si AlloyDB determina que tu clúster no está listo para una actualización de versión principal, la solicitud fallará. Para obtener más información, consulta Soluciona problemas de una actualización de versión principal local.

Para actualizar la versión principal de la base de datos de manera local, sigue estos pasos:

Console

  1. En la consola de Google Cloud , ve a la página Clústeres.

    Ir a los clústeres

  2. Selecciona un clúster de la lista. Aparecerá la página Descripción general.

  3. Haz clic en Actualizar para iniciar el proceso de actualización de la versión principal de la base de datos.

  4. En el paso Elige una versión para la base de datos, selecciona una de las versiones principales de base de datos disponibles como la versión principal de destino.

  5. Haz clic en Continuar.

  6. En el paso Actualizar clúster, en el campo ID del clúster, ingresa el nombre del clúster.

  7. Haz clic en Iniciar actualización. Se te dirigirá al paso Estado de la actualización, en el que podrás verificar el estado de la actualización. Para obtener más información, consulta Supervisa la actualización de la versión principal de la base de datos.

gcloud

Inicia la actualización local de la versión principal ejecutando el siguiente comando:

gcloud alloydb clusters upgrade CLUSTER_ID --region=REGION --version=DATABASE_VERSION --async

A continuación, se muestra un comando de ejemplo:

gcloud alloydb clusters upgrade my-cluster --region=us-central1 --version=POSTGRES_16 --async

REST v1beta

Inicia la actualización local de la versión principal ejecutando el siguiente comando:

PATCH https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID:upgrade

Cuerpo JSON de la solicitud:

{
  "version": "DATABASE_VERSION"
}

Reemplaza por la enumeración de la versión principal de la base de datos de destino, que debe ser posterior a la versión actual.

Ejemplo de cuerpo JSON de la solicitud:

{
"version": "POSTGRES_16"
}
* { Terraform }





To upgrade an instance within your database cluster to a PostgreSQL version, use a [Terraform resource](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/alloydb_instance) and set the `database_version` to a [supported target major version](/alloydb/docs/upgrade-db-inplace-major-version#plan-upgrade).

```none
resource "google_alloydb_instance" "default" {
cluster       = google_alloydb_cluster.default.name
instance_id   = "alloydb-instance"
instance_type = "PRIMARY"

machine_config {
  cpu_count = 2
}

depends_on = [google_service_networking_connection.vpc_connection]
}

resource "google_alloydb_cluster" "default" {
  cluster_id = "alloydb-cluster"
  location   = "us-central1"
  network_config {
    network = google_compute_network.default.id
  }
  database_version = "POSTGRES_16"

  initial_user {
    password = "alloydb-cluster"
  }
}

data "google_project" "project" {}

resource "google_compute_network" "default" {
  name = "alloydb-network"
}

resource "google_compute_global_address" "private_ip_alloc" {
  name          =  "alloydb-cluster"
  address_type  = "INTERNAL"
  purpose       = "VPC_PEERING"
  prefix_length = 16
  network       = google_compute_network.default.id
}

resource "google_service_networking_connection" "vpc_connection" {
  network                 = google_compute_network.default.id
  service                 = "servicenetworking.googleapis.com"
  reserved_peering_ranges = [google_compute_global_address.private_ip_alloc.name]
}
```

To learn how to apply or remove a Terraform configuration, see [Basic Terraform commands](/docs/terraform/basic-commands).

Supervisa la actualización de la versión principal del clúster

Después de que comience la actualización de la versión principal de la base de datos, puedes supervisar el estado de la actualización con la consola de Google Cloud , gcloud CLI o la API de REST.

Console

Sigue estos pasos para verificar el estado de la actualización en la consola de Google Cloud :

  1. En la consola de Google Cloud , ve a la página Clústeres.

    Ir a los clústeres

  2. Selecciona el clúster que se está actualizando. Aparecerá la página Descripción general.

  3. Abre la página Descripción general.

  4. Haz clic en Estado de la actualización. Aparecerá la página Estado de la actualización, en la que puedes verificar el estado de la actualización.

gcloud

Sigue estos pasos para verificar el estado de la actualización en gcloud CLI:

  1. Obtén el ID de la operación de actualización ejecutando el siguiente comando. Antes de ejecutar el comando, reemplaza la variable CLUSTER_ID por el nombre del clúster:

    gcloud alloydb operations list --cluster=CLUSTER_ID --region=REGION_ID --filter=metadata.verb:upgrade

    Es la llamada de gcloud CLI que se usa para activar una actualización de versión principal. alloydb beta clusters upgrade, devuelve el ID de la operación como una respuesta síncrona. Como alternativa, usa el comando gcloud alloydb operations list con la marca --cluster.

    A continuación, se muestra un comando de ejemplo:

    gcloud alloydb operations list --cluster=my-cluster --region=us-central1 --filter=metadata.verb:upgrade
  2. Para supervisar el estado de la actualización, ejecuta el comando gcloud alloydb operations describe:

    gcloud alloydb operations describe OPERATION_ID
    --region=REGION

REST v1beta

Sigue estos pasos para verificar el estado de la actualización en la API de REST:

  1. Obtén el ID de la operación de actualización.

    Usa la siguiente solicitud GET con el método operations.list para enumerar todas las operaciones de actualización y encontrar la que corresponda al clúster de destino:

    GET https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/operations/filter=metadata.verb:upgrade

    La llamada a la API de REST devuelve el ID de la operación como una respuesta síncrona.

  2. Supervisa el estado de la actualización.

    Usa una solicitud GET con el método operations.get:

      GET https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID

    Realiza los siguientes reemplazos:

    • PROJECT_ID: Es el ID del proyecto.
    • REGION: Es la ubicación o región del clúster.
    • OPERATION_ID: Es el ID de la operación de actualización, que se recuperó en el paso anterior.

    A continuación, se muestra una respuesta de ejemplo cuando la operación está en curso:

    {
    "name": "projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID",
    "metadata": {
    "@type": "type.googleapis.com/google.cloud.alloydb.v1.OperationMetadata",
    "createTime": "2024-09-16T23:17:39.727319438Z",
    "target": "projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID",
    "verb": "upgrade",
    "requestedCancellation": false,
    "apiVersion": "v1",
    "upgradeClusterStatus": {
       "state": "IN_PROGRESS",
       "cancellable": true,
       "stages": [
        {
          "stage": "ALLOYDB_PRECHECK",
          "state": "IN_PROGRESS"
        },
        {
          "stage": "PG_UPGRADE_CHECK",
          "state": "IN_PROGRESS"
        },
        {
          "stage": "PREPARE_FOR_UPGRADE",
          "state": "NOT_STARTED"
        },
        {
          "stage": "PRIMARY_INSTANCE_UPGRADE",
          "state": "NOT_STARTED"
        },
        {
          "stage": "CLEANUP",
          "state": "NOT_STARTED"
        }
       ]
     }
    },
    "done":false
    }
    

    A continuación, se muestra una respuesta de ejemplo cuando se completa la operación:

    {
    "operations": [
    {
     "metadata": {
     "@type": "type.googleapis.com/google.cloud.alloydb.v1betaalpha.OperationMetadata",
     "createTime": "2024-09-16T21:52:17.303861317Z",
     "endTime": "2024-09-16T22:29:13.947527949Z",
     "target": "projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID",
     "verb": "upgrade",
     "requestedCancellation": false,
     "apiVersion": "v1beta",
     "upgradeClusterStatus": {
      "state": "SUCCESS",
      "stages": [
        {
          "stage": "ALLOYDB_PRECHECK",
          "state": "SUCCESS"
        },
        {
          "stage": "PG_UPGRADE_CHECK",
          "state": "SUCCESS"
        },
        {
          "stage": "PREPARE_FOR_UPGRADE",
          "state": "SUCCESS"
        },
        {
          "stage": "PRIMARY_INSTANCE_UPGRADE",
          "state": "SUCCESS"
        },
        {
          "stage": "CLEANUP",
          "state": SUCCESS"
        }
       ]
     }
    },
    "response": {
         …
    },
    "name":  "projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID",
    "done": true
    }
    ]
    }
    

    Para obtener más información sobre la estructura response, consulta Respuesta de la operación de actualización.

Respuesta de la operación de actualización

La respuesta de la operación UpgradeCluster incluye lo siguiente:

  • status: Es el estado de la operación de actualización general. Los valores posibles son SUCCESS, FAILED y PARTIAL_SUCCESS..
  • message: Proporciona un breve resumen del resultado de la operación de actualización.
  • clusterUpgradeDetails: Son los detalles de la actualización de los clústeres que se están actualizando. Este campo es un array. AlloyDB solo permite una actualización de clúster, por lo que incluye solo una entrada.
    • name: Es el nombre completamente calificado del clúster.
    • upgradeStatus: el estado de la actualización del clúster. Los valores posibles son SUCCESS, FAILED y PARTIAL_SUCCESS. PARTIAL_SUCCESS significa que no se pueden actualizar una o más instancias de grupo de lectura.
    • clusterType: Es el tipo de clúster. AlloyDB solo te permite actualizar un clúster de PRIMARY. Este tipo siempre debe ser PRIMARY.
    • databaseVersion: la versión actual de la base de datos del clúster.
    • stageInfo: información sobre las etapas de actualización principales.
      • status: SUCCESS o FAILED
      • logs_url: vínculo a los registros que generó la etapa. Vacío para las etapas que no generan registros.
    • instanceUpgradeDetails: Es la información de actualización de todas las instancias del clúster.
      • name: Es el nombre completamente calificado de la instancia.
      • upgradeStatus: SUCCESS o FAILED
      • instanceType: PRIMARY o READ_POOL

A continuación, se muestra una respuesta de ejemplo de la operación de actualización:

"response": {
  "@type": "type.googleapis.com/google.cloud.alloydb.v1alpha.UpgradeClusterResponse",
  "status": "SUCCESS",
  "message": "Cluster upgraded successfully.",
  "clusterUpgradeDetails": [
    {
      "name": "projects/1234/locations/us-central1/clusters/abc",
      "upgradeStatus": "SUCCESS",
      "clusterType": "PRIMARY",
      "databaseVersion": "POSTGRES_16",
      "stageInfo": [
        {
          "stage": "ALLOYDB_PRECHECK",
          "status": "SUCCESS",
          "logsUrl": "https://console.cloud.google.com/logs/query..."
        },
        {
          "stage": "PG_UPGRADE_CHECK",
          "status": "SUCCESS",
          "logsUrl": "https://console.cloud.google.com/logs/query..."
        },
        {
          "stage": "PRIMARY_INSTANCE_UPGRADE",
          "status": "SUCCESS",
          "logsUrl": "https://console.cloud.google.com/logs/query..."
        },
        {
          "stage": "READ_POOL_INSTANCES_UPGRADE",
          "status": "SUCCESS",
        }
      ],
      "instanceUpgradeDetails": [
        {
          "name": "projects/1234/locations/us-central1/clusters/abc/instances/primary",
          "upgradeStatus": "SUCCESS",
          "instanceType": "PRIMARY",
        },
        {
          "name": "projects/1234/locations/us-central1/clusters/abc/instances/read1",
          "upgradeStatus": "SUCCESS",
          "instanceType": "READ_POOL",
        },
        {
          "name": "projects/1234/locations/us-central1/clusters/abc/instances/read2",
          "upgradeStatus": "SUCCESS",
          "instanceType": "READ_POOL",
        }
      ]
    }
  ]
}

Visualiza los registros de actualización de AlloyDB

AlloyDB publica todos los registros de actualización en el nombre de registro postgres_upgrade.

Para ver los registros relacionados con la actualización, sigue estos pasos:

  1. En la consola de Google Cloud , ve a la página Explorador de registros del :

    Ir al Explorador de registros

    Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es Logging.

  2. Selecciona alloydb.googleapis.com/postgres_upgrade como el nombre del registro. Esto se traduce en la consulta "logName="projects/PROJECT_ID/logs/alloydb.googleapis.com%2Fpostgres_upgrade".

  3. Usa las siguientes etiquetas para filtrar los registros:

    Etiqueta Descripción

    LOG_TYPE

    Es la etapa de actualización que generó el registro. Los valores posibles son ALLOYDB_PRECHECK, PG_UPGRADE_CHECK y PG_UPGRADE.

    OPERATION_NAME

    Es el nombre completo de la operación de actualización.

    FILE_NAME

    Se propaga solo para los registros pg_upgrade_check y pg_upgrade, y corresponde a los archivos de registro generados por la utilidad pg_upgrade.

A continuación, se muestra una consulta de ejemplo que devuelve los registros de actualización de la verificación previa de AlloyDB para una operación determinada:

logName="projects/project1234/logs/alloydb.googleapis.com%2Fpostgres_upgrade"
labels.LOG_TYPE="ALLOYDB_PRECHECK"
labels.OPERATION_NAME="projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID"

Para obtener más información sobre las verificaciones de actualización, consulta Descripción general de la actualización de la versión principal de la base de datos in situ.

Visualiza los registros de actualización de un clúster

Para ver los registros de actualización de un clúster cuando no conoces el ID de la operación y esta venció, sigue estos pasos:

  1. En la consola de Google Cloud , ve a la página Explorador de registros del :

    Ir al Explorador de registros

    Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es Logging.

  2. Consulta los registros de verificación previa de AlloyDB para tu clúster.

    logName="projects/PROJECT_ID/logs/alloydb.googleapis.com%2Fpostgres_upgrade"
    labels.LOG_TYPE="ALLOYDB_PRECHECK"
    resource.labels.cluster_id=CLUSTER_ID
    
  3. Busca el Operation_ID en la etiqueta de registro OPERATION_NAME.

    En el siguiente ejemplo, el Operation_ID de OPERATION_NAME es operation-1728225968201-623cff6ed1e02-e34b7191-3cd92013.

    labels.OPERATION_NAME="projects/myproject/locations/us-central1/operations/operation-1728225968201-623cff6ed1e02-e34b7191-3cd92013"
    
  4. Consulta todos los registros de postgres_upgrade de una operación específica.

    logName="projects/production-1/logs/alloydb.googleapis.com%2Fpostgres_upgrade"
    labels.OPERATION_NAME="operation-1728225968201-623cff6ed1e02-e34b7191-3cd92013"
    

Cancela la actualización de la versión principal de la base de datos de manera local

Puedes cancelar una operación de actualización de versión principal en curso desde la consola de Google Cloud , gcloud CLI o la API de REST.

Busca el ID de la operación

Para cancelar la operación de actualización de la versión principal con gcloud CLI o la API de REST, necesitas el ID de la operación. Debes especificar este ID en el comando de gcloud CLI o de la API de REST para que AlloyDB sepa qué operación cancelar.

No puedes cancelar la actualización después de que la actualización de la instancia principal alcance un punto determinado.

Cuando inicias la actualización local de la versión principal, el ID de operación se devuelve en el campo name de la respuesta. Consulta el ejemplo de respuesta.

También puedes encontrar el ID de la operación si realizas una llamada operations.list en el clúster de AlloyDB.

Cancela la actualización

Para cancelar una actualización de versión principal en el lugar, sigue estos pasos:

Console

  1. En la consola de Google Cloud , ve a la página Clústeres.

    Ir a los clústeres

  2. Selecciona un clúster de la lista. Aparecerá la página Descripción general.

  3. Haz clic en Upgrade status.

  4. Haz clic en Cancelar actualización. Si la actualización no se puede cancelar, este botón aparecerá inhabilitado.

gcloud

Usa el comando gcloud alloydb operations cancel para cancelar la operación:

gcloud alloydb operations cancel OPERATION_ID

Reemplaza la variable OPERATION_ID por el ID de la operación.

Si el UpgradeClusterStatus muestra cancellable como false en el resultado del comando gcloud alloydb operations cancel, AlloyDB ignora la solicitud de cancelación y continúa con la actualización. En este caso, la API no arroja un error y devuelve una respuesta vacía. Para obtener más información sobre el estado de la actualización, consulta Supervisa la actualización de la versión principal del clúster.

REST v1beta

Ejecuta el comando siguiente:

POST https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/operations/OPERATION_ID:cancel

Antes de usar cualquiera de los datos de solicitud, realiza los siguientes reemplazos:

  • PROJECT_ID: Es el ID del proyecto.
  • OPERATION_ID: Es el ID de la operación de importación o exportación.

Si cancellable en UpgradeClusterStatus es false, no puedes cancelar la actualización.

Para enviar tu solicitud, usa una de las siguientes opciones:

curl (Linux, macOSo Cloud Shell)

Ejecuta el comando siguiente:

       curl -X POST \
             -H "Authorization: Bearer $(gcloud auth print-access-token)" \
             -H "Content-Type: application/json; charset=utf-8" \
             -d "" \
            "https://alloydb.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID:cancel"
  

PowerShell (Windows)

Ejecuta el comando siguiente:

       $cred = gcloud auth print-access-token
       $headers = @{ "Authorization" = "Bearer $cred" }

       Invoke-WebRequest `
         -Method POST `
         -Headers $headers `
         -Uri "https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/operations/OPERATION_ID:cancel"| Select-Object -Expand Content
    

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

Respuesta

Esta llamada a la API de REST no muestra ninguna respuesta.

Completa la actualización local de la versión principal

Para completar la actualización de la versión principal, conéctate a una instancia de AlloyDB con AlloyDB Studio, psql o otros métodos de conexión.

Si usas un sistema que no es de AlloyDB, consulta la documentación del sistema para obtener instrucciones de conexión.

Después de actualizar el clúster, sigue estos pasos para completar la actualización:

  1. Si inhabilitaste pglogical antes, vuelve a habilitar la replicación de pglogical. Cuando habilitas la replicación de pglogical, se crea automáticamente la ranura de replicación necesaria.

    1. Descarta la suscripción pglogical en la réplica de destino con el siguiente comando:

        select pglogical.drop_subscription(subscription_name name);
      

      Reemplaza name por el nombre de la suscripción existente. Por ejemplo:

      postgres=> select pglogical.drop_subscription(subscription_name:= 'test_sub');
      -[ RECORD 1 ]-----+--
      drop_subscription |1
      
    2. Vuelve a crear la suscripción pglogical en el destino o la réplica proporcionando la siguiente información de conexión a la instancia principal de AlloyDB:

        SELECT pglogical.create_subscription(
        subscription_name :='test_sub',<br>
        provider_dsn := 'host=primary-ip port=5432 dbname=postgres user=replication_user password=replicapassword'
        );
      
    3. Para verificar el estado de la suscripción, usa el siguiente comando:

        SELECT * FROM pglogical.show_subscription_status('test_sub');
      
    4. Para probar la replicación, realiza transacciones de escritura y verifica que los cambios sean visibles en el destino.

  2. Actualiza manualmente las extensiones de base de datos en tus bases de datos actualizadas.

    Aunque las actualizaciones de versiones principales instalan automáticamente los objetos binarios de extensión más recientes en el software subyacente de tu instancia, no actualizan automáticamente el catálogo de la base de datos de la extensión. Eres responsable de actualizar manualmente tus extensiones para asegurarte de que usen las versiones compatibles más recientes. Para obtener instrucciones, consulta Actualiza una extensión.

  3. Actualiza las estadísticas de la base de datos.

    Una vez que se complete la actualización, ejecuta ANALYZE en tu clúster principal para actualizar las estadísticas del sistema. Las estadísticas precisas garantizan que el planificador de consultas de PostgreSQL procese las consultas de manera óptima. Las estadísticas faltantes pueden generar planes de consultas incorrectos, lo que puede degradar el rendimiento y consumir una memoria excesiva.

  4. Ejecuta pruebas de aceptación para asegurarte de que el sistema actualizado funcione como se espera.

  5. Verifica que la versión principal de la base de datos actualizada de forma local aparezca en la página Descripción general del clúster en la consola de Google Cloud .

Restablece a la versión principal anterior

Si el sistema de la base de datos actualizada no funciona como se espera, es posible que debas revertir al estado anterior a la actualización. Para lograrlo, puedes restablecer desde una copia de seguridad previa a la actualización, ya sea la que AlloyDB crea automáticamente durante el proceso de actualización o una copia de seguridad previa a la actualización existente, para crear un clúster nuevo con el estado previo a la actualización.

Para restablecer el estado anterior a la actualización, sigue estos pasos:

  1. Identifica una copia de seguridad previa a la actualización desde la que se restablecerá. Durante el proceso de actualización, AlloyDB crea automáticamente una copia de seguridad previa a la actualización con el prefijo pre-upgrade-bkp. Para obtener más información, consulta Visualiza una lista de copias de seguridad.

  2. Inicia un restablecimiento desde la copia de seguridad previa a la actualización, lo que crea un clúster nuevo con la versión anterior de PostgreSQL. Para obtener más información, consulta Restablece un clúster a partir de una copia de seguridad almacenada.

  3. Conecta tu aplicación. Actualiza tu aplicación con detalles sobre el clúster restablecido y sus réplicas de lectura. Puedes reanudar la entrega de tráfico en el clúster restablecido.

También puedes realizar una recuperación de un momento determinado a un momento anterior a la actualización. Para obtener más información, consulta Usa la recuperación de un momento determinado (PITR).

Limitaciones

Las siguientes limitaciones afectan las actualizaciones locales de las versiones principales de AlloyDB:

- No puedes realizar una actualización local de versión principal en un clúster secundario. - Cuando realices una actualización de versión principal in situ, ten en cuenta que actualizar instancias con más de 1,000 bases de datos o 1 millón de objetos (como tablas y vistas) lleva mucho tiempo, y es posible que se agote el tiempo de espera de la actualización. Esta limitación es independiente del tamaño real de los datos. - AlloyDB no admite la actualización de clústeres que usan pg_largeobject_metadata. Si select count(*) from pg_largeobject_metadata; no es cero, la actualización falla. - AlloyDB no conserva las membresías de roles en las que el otorgante original ya no existe. Si tu base de datos contiene estas membresías huérfanas, resuélvelas antes de actualizar. Para obtener más información, consulta Prepara el clúster. - La operación de actualización de la versión principal in situ puede completarse antes de que se complete la copia de seguridad previa a la actualización o antes de que se completen las copias de seguridad posteriores a la actualización, en especial cuando tienes una base de datos grande con menos objetos de esquema. - Es posible que haya una breve demora entre el momento en que se vuelven a iniciar las operaciones de escritura en la instancia actualizada y el momento en que se crea la copia de seguridad posterior a la actualización. Esto significa que el contenido de la copia de seguridad posterior a la actualización podría no coincidir con el contenido de la base de datos anterior a la actualización de la versión principal. - Es posible que se sigan creando copias de seguridad previas a la actualización cuando falle una actualización de versión principal local. - Debido a que las copias de seguridad de actualización automática son continuas, no puedes borrarlas hasta que alcancen la retención máxima de copias de seguridad y recuperación continuas. Cuando se alcanza la retención máxima, se recopilan las copias de seguridad como elementos no utilizados. Como alternativa, puedes usar gcloud CLI para borrar las copias de seguridad de forma manual. Para obtener más información, consulta Restricciones para borrar copias de seguridad.

¿Qué sigue?