En esta página, se describe cómo realizar una actualización de versión principal de la base de datos en su lugar de un clúster de AlloyDB para PostgreSQL. Para obtener información sobre los casos de uso, el flujo de trabajo y las copias de seguridad automáticas de la actualización de la versión principal de la base de datos, consulta Descripción general de la actualización de la versión principal de la base de datos en el lugar.
Planifica una actualización de versión principal de la base de datos
Sigue estos pasos para planificar una actualización importante de la versión de la base de datos:
Busca la versión principal actual de tu base de datos.
Console
En la consola de Google Cloud, ve a la página Clústeres.
Selecciona un clúster de la lista. Aparecerá la página Descripción general.
Busca 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 CLI de gcloud, consulta Instala la CLI de gcloud. 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: Es el ID del clúster.
- PROJECT_ID: 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, macOS o 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" \ -d @request.json \ "https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID"
PowerShell (Windows)
Ejecuta el siguiente comando:
$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
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 la fuente Versiones principales de destino compatibles POSTGRES_14 POSTGRES_15 Revisa las funciones que se ofrecen en cada versión principal de la base de datos.
Identifica las incompatibilidades que debes 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.
Antes de iniciar la actualización de versión principal en tu clúster de producción, 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 completar los pasos que requieren que te conectes a la base de datos, usa AlloyDB Studio, psql o otros métodos de conexión.
- Elimina o asciende tus réplicas entre regiones. Las actualizaciones de versiones principales sin cambios de la base de datos no admiten réplicas entre regiones. Para obtener más información, consulta Replicación entre regiones.
Asegúrate de que la configuración de codificación y configuración regional de las bases de datos
postgres
ytemplate1
sea la misma que la de la base de datostemplate0
.Ejecuta el siguiente comando:
SELECT pg_encoding_to_char(encoding), datcollate, datctype FROM pg_database WHERE datname IN ('postgres', 'template1', 'template0');
Si los valores de las bases de datos
postgres
otemplate1
son diferentes de los valores de la base de datostemplate0
, la actualización fallará. Para resolver el problema, sigue estos pasos:Vuelca la otra base de datos (sin plantilla). Para obtener más información, consulta Cómo exportar datos.
Ejecuta
DROP DATABASE <database_name>;
para descartar la base de datos.Para volver a crear la base de datos con la misma configuración de codificación y configuración regional que la base de datos
template0
, ejecuta lo siguiente:CREATE DATABASE <database_name> ENCODING = '<template0_encoding>' LC_COLLATE = '<template0_datcollate>' LC_CTYPE = '<template0_datctype>';
Vuelve a cargar tus datos. Para obtener más información, consulta Cómo importar datos.
Si tu clúster de AlloyDB es una fuente de replicación lógica, inhabilita las suscripciones descendentes y descarta todos los segmentos de replicación lógica. Puedes volver a habilitar las suscripciones y volver a crear los intervalos de replicación lógicos después de la actualización. Si la instancia de AlloyDB solo es un destino de replicación lógica, estos pasos no son necesarios. Para inhabilitar las suscripciones y descartar los espacios de replicación lógicos, sigue estos pasos:
Inhabilita cada suscripción descendente en el suscriptor o en el destino de replicación descendente. No inhabilites las suscripciones descendentes en la instancia de AlloyDB que se actualizará:
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ámetroimmediate
entrue
. De forma predeterminada, el valor esfalse
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;
Ejecuta el siguiente comando para descartar todas las ranuras de replicación lógicas en la instancia principal de AlloyDB:
SELECT pg_drop_replication_slot(slot_name) FROM pg_replication_slots WHERE slot_type = 'logical';
Administra tus extensiones de PostgreSQL. Para obtener más información, consulta Configura extensiones de bases de datos.
Las verificaciones previas a la actualización detectan incompatibilidades de extensiones y muestran esos incumplimientos 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:
- Quita las extensiones que ya no sean compatibles con la versión de destino.
Actualiza PostGIS y las extensiones relacionadas (
address_standardizer
,address_standardizer_data_us
,postgis_raster
,postgis_sfcgal
,postgis_tiger_geocoder
ypostgis_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 muestran las versiones mínimas de extensión de PostGIS compatibles para cada versión principal de PostgreSQL:Versión de PostgreSQL Versión mínima compatible de PostGIS PG14 3.1 PG15 3.2 Por ejemplo, si tu versión de PostGIS es 3.1.x y deseas actualizar de POSTGRES 14 a POSTGRES 15, usa el siguiente comando para actualizar la extensión PostGIS:
ALTER EXTENSION postgis UPDATE TO '3.2.3'; SELECT PostGIS_Version();
Para verificar que se permitan las conexiones para cada base de datos, excepto
template0
, ejecuta la siguiente consulta y verifica el campodatallowconn
de cada base de datos:SELECT datname,datallowconn from pg_database;
Un valor
t
en el campodatallowconn
significa que la conexión está permitida. Un valorf
indica que no se puede establecer una conexión. La base de datos detemplate0
no debe permitir conexiones.Para permitir conexiones a una base de datos, ejecuta el siguiente comando:
ALTER DATABASE <database> WITH ALLOW_CONNECTIONS = 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 local de versión principal, 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.
Para actualizar la versión principal de la base de datos de manera local, sigue estos pasos:
Console
En la consola de Google Cloud, ve a la página Clústeres.
Selecciona un clúster de la lista. Aparecerá la página Descripción general.
Haz clic en Actualizar para iniciar el proceso de actualización de la versión principal de la base de datos.
En el paso Elige una versión de la base de datos, selecciona una de las versiones principales de base de datos disponibles como la versión principal de destino.
Haz clic en Continuar.
En el paso Actualizar clúster, en el campo ID de clúster, ingresa el nombre del clúster.
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 versión principal de la base de datos.
gcloud
Ejecuta el siguiente comando para iniciar la actualización local de la versión principal:
gcloud alloydb beta clusters upgrade CLUSTER_ID --region=REGION --version=DATABASE_VERSION --async
El siguiente es un ejemplo de comando:
gcloud alloydb beta clusters upgrade my-cluster --region=us-central1 --version=POSTGRES_15 --async
REST v1beta
Ejecuta el siguiente comando para iniciar la actualización local de la versión principal:
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 que la versión actual.
Cuerpo JSON de la solicitud de muestra:
{
"version": "POSTGRES_15"
}
Supervisa la actualización de la versión principal del clúster
Después de que comience la actualización de versión principal de la base de datos sin interrumpir la operación, 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:
En la consola de Google Cloud, ve a la página Clústeres.
Selecciona el clúster que se está actualizando. Aparecerá la página Descripción general.
Abre la página Descripción general.
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 la CLI de gcloud:
Ejecuta el siguiente comando para obtener el ID de la operación de actualización. 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
La llamada a la CLI de gcloud que se usa para activar una actualización de versión principal.
alloydb beta clusters upgrade
, muestra el ID de la operación como una respuesta síncrona. Como alternativa, usa el comandogcloud alloydb operations list
con la marca--cluster
.El siguiente es un ejemplo de comando:
gcloud alloydb operations list --cluster=my-cluster --region=us-central1 --filter=metadata.verb:upgrade
Ejecuta el siguiente comando para supervisar el estado de la actualización:
gcloud alloydb operations describe OPERATION_ID --region=REGION https://cloud.google.com/sdk/gcloud/reference/alloydb/operations/describe
REST v1beta
Sigue estos pasos para verificar el estado de la actualización en la API de REST:
Obtén el ID de la operación de actualización.
Usa la siguiente solicitud
GET
con el métodooperations.list
para enumerar todas las operaciones de actualización y encontrar la que corresponde 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 muestra el ID de operación como una respuesta síncrona.
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: El ID del proyecto
- REGION: Es la ubicación o región del clúster.
- OPERATION_ID: El ID de la operación de actualización, que se recuperó en el paso anterior.
A continuación, se muestra un ejemplo de respuesta 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 sonSUCCESS
,FAILED
yPARTIAL_SUCCESS.
.message
: Proporciona un breve resumen del resultado de la operación de actualización.clusterUpgradeDetails
: Detalles de la actualización de los clústeres que se actualizarán. Este campo es un array. AlloyDB solo permite una actualización de clúster, por lo que debe tener una sola entrada.name
: Es el nombre completamente calificado del clúster.upgradeStatus
: Es el estado de la actualización del clúster. Los valores posibles son los siguientes:SUCCESS
,FAILED
,PARTIAL_SUCCESS
.PARTIAL_SUCCESS
significa que no se pueden actualizar una o más instancias del grupo de lectura.clusterType
: Es el tipo de clúster. AlloyDB solo te permite actualizar un solo clúster dePRIMARY
. Este tipo siempre debe serPRIMARY
.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
oFAILED
logs_url
: Es un vínculo a los registros que genera la etapa. Debe estar 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
oFAILED
instanceType
:PRIMARY
oREAD_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_15", "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
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:
-
En la consola de Google Cloud, ve a la página Explorador de registros.
Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es Logging.
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"
.Usa las siguientes etiquetas para filtrar los registros:
Etiqueta Descripción LOG_TYPE
Etapa de actualización que generó el registro. Los valores posibles son ALLOYDB_PRECHECK
,PG_UPGRADE_CHECK
yPG_UPGRADE
.OPERATION_NAME
Es el nombre completo de la operación de actualización. FILE_NAME
Solo se propaga para los registros pg_upgrade_check
ypg_upgrade
, y corresponde a los archivos de registro que genera la utilidadpg_upgrade
.
La siguiente es una consulta de muestra que muestra 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 en el lugar.
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:
Consulta los registros de verificación previa de AlloyDB de tu clúster.
logName="projects/PROJECT_ID/logs/alloydb.googleapis.com%2Fpostgres_upgrade" labels.LOG_TYPE="ALLOYDB_PRECHECK" resource.labels.cluster_id=CLUSTER_ID
Busca el
Operation_ID
de la etiqueta de registroOPERATION_NAME
.En el siguiente ejemplo,
Operation_ID
deOPERATION_NAME
esoperation-1728225968201-623cff6ed1e02-e34b7191-3cd92013
.labels.OPERATION_NAME="projects/myproject/locations/us-central1/operations/operation-1728225968201-623cff6ed1e02-e34b7191-3cd92013"
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 local de la versión principal de la base de datos
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 versión principal con la CLI de gcloud o la API de REST, necesitas el ID de 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 llegue a un punto determinado.
Cuando inicias la actualización local de la versión principal, el ID de operación se muestra 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
llameada operations.list
en el clúster de AlloyDB.
Cancela la actualización
Para cancelar una actualización de versión principal, sigue estos pasos:
Console
En la consola de Google Cloud, ve a la página Clústeres.
Selecciona un clúster de la lista. Aparecerá la página Descripción general.
Haz clic en Estado de actualización.
Haz clic en Cancelar. Si la actualización no se puede cancelar, este botón estará 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 cancellable
en UpgradeClusterStatus
es 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 muestra un error y muestra una respuesta vacía. Para obtener más información sobre el estado de la actualización, consulta Supervisa la actualización de versión principal del clúster.
REST v1beta
Ejecuta el siguiente comando:
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: El ID del proyecto.
- OPERATION_ID: 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, macOS o Cloud Shell)
Ejecuta el siguiente comando:
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 siguiente comando:
$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 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 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:
Si inhabilitaste
pglogical
anteriormente, vuelve a habilitar la replicación depglogical
. Si habilitas la replicación depglogical
, se crea automáticamente la ranura de replicación necesaria.Descarta la suscripción
pglogical
en la réplica de destino mediante 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
Para volver a crear la suscripción
pglogical
en el destino o la réplica, proporciona 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' );
Para verificar el estado de la suscripción, usa el siguiente comando:
SELECT * FROM pglogical.show_subscription_status('test_sub');
Para probar la replicación, realiza transacciones de escritura y verifica que los cambios sean visibles en el destino.
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 inexactos, lo que puede degradar el rendimiento y consumir una memoria excesiva.Ejecuta pruebas de aceptación para asegurarte de que el sistema actualizado funcione como se espera.
Verifica que la versión principal de la base de datos actualizada en su lugar 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 volver al estado anterior a la actualización. Para ello, restablece desde una copia de seguridad previa a la actualización (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 anterior a la actualización.
Para restablecer un estado anterior a la actualización, sigue estos pasos:
Identifica una copia de seguridad previa a la actualización desde la que 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.Inicia un restablecimiento desde la copia de seguridad previa a la actualización, que crea un clúster nuevo con la versión anterior de PostgreSQL. Para obtener más información, consulta Cómo restablecer un clúster a partir de una copia de seguridad almacenada.
Conecta tu aplicación. Actualiza la aplicación con detalles sobre el clúster restaurado 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 a 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.
- La actualización de las instancias que tienen más de 1,000 bases de datos de una versión a otra puede tardar mucho y agotar el tiempo de espera.
- AlloyDB no admite la actualización de clústeres que usan
pg_largeobject_metadata
. Siselect count(*) from pg_largeobject_metadata;
no es cero, la actualización falla. - Es posible que la operación de actualización de la versión principal in situ se complete antes de que se complete la copia de seguridad por actualización o las copias de seguridad posteriores a la actualización, en especial, cuando tienes una base de datos grande con menos objetos.
- Es posible que haya una breve demora entre el momento en que se reinician 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 en el lugar.
- 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 realiza el proceso de limpieza de almacenamiento en caché de las copias de seguridad. Como alternativa, puedes usar la CLI de gcloud para borrar las copias de seguridad de forma manual. Para obtener más información, consulta Restricciones para borrar copias de seguridad.
¿Qué sigue?
- Obtén más información sobre las actualizaciones de versión principal de la base de datos in situ.
- Soluciona problemas de una actualización in situ de la versión principal.
- Obtén información sobre los errores de actualización de la versión principal de la base de datos en el lugar.