En esta página, se muestra cómo administrar la capacidad de almacenamiento de una instancia de Cloud SQL
con las funciones de reducción de almacenamiento.
Antes de comenzar
Revisa las limitaciones de la función .
Si usas la gcloud CLI , asegúrate de usar la versión más reciente del
SDK de Google Cloud y de gcloud CLI.
Instala la versión más reciente de gcloud CLI
(versión 563.0.0 o posterior de gcloud CLI).
Para obtener la versión actual de gcloud CLI, ejecuta gcloud --version.
Para actualizar la versión de gcloud CLI, ejecuta gcloud components update.
Obtén los siguientes permisos de IAM:
cloudsql.instances.getDiskShrinkConfig
cloudsql.instances.performDiskShrink
Estos permisos están disponibles en cualquiera de los siguientes roles. Cuando asignes
tu rol, te recomendamos que apliques el principio de privilegio mínimo:
Administrador de Cloud SQL (roles/cloudsql.admin)
Editor de Cloud SQL (roles/cloudsql.editor)
Para obtener más información, consulta los siguientes recursos:
Prepara la instancia
Completa los siguientes requisitos antes de comenzar.
Estos pasos son los mismos para las instancias principales y las réplicas de lectura.
Si actualizas una réplica de lectura, asegúrate de reducir primero la capacidad de la instancia
principal y, luego, el tamaño de la réplica.
Obtén el ID del proyecto
que contiene la instancia que deseas administrar.
Verifica el estado actual de la instancia
para asegurarte de que se esté ejecutando. Una forma de verificarlo es usar el comando describe :
gcloud sql instances describe
Devuelve el siguiente estado:
RUNNABLE
De lo contrario, inicia la instancia .
Crea una copia de seguridad
de la instancia actual. Esto te permite restablecer la instancia
más adelante si tienes problemas durante la configuración.
Si ejecutas una instancia de PostgreSQL, establece el valor de la marca max_wal_size en menos de 5,128 MB. Si el valor de max_wal_size es demasiado
grande, es posible que la instancia tarde en iniciarse y que la operación falle.
Inhabilita todas las extensiones o funciones que habiliten conexiones salientes (o
que requieran transferencia de datos salientes).
Por ejemplo, se puede establecer una conexión saliente con una de estas
extensiones o funciones, y se debe inhabilitar antes de realizar una operación de reducción
de almacenamiento:
dblink extensión
PL/proxy extensión
pglogical extensión
Contenedores de datos externos (como postgres_fdw, oracle_fdw y tds_fdw)
Replicación lógica
en PostgreSQL 10 y versiones posteriores
Reduce la capacidad de almacenamiento de una instancia
Los siguientes pasos son los mismos para las instancias principales y las réplicas de lectura.
Verifica la capacidad de almacenamiento mínima de destino de la instancia y el tiempo de operación
estimado. Esta información puede ayudarte a planificar la operación de reducción del almacenamiento.
Nota: No puedes verificar la capacidad de almacenamiento mínima objetivo para las réplicas de lectura. Por lo general, la capacidad de almacenamiento de la réplica de lectura coincide con la de su instancia principal asociada.
gcloud Ejecuta el comando gcloud sql instances get-storage-shrink-config :
gcloud sql instances get-storage-shrink-config INSTANCE_NAME
Reemplaza lo siguiente:
INSTANCE_NAME : Es el nombre de la instancia principal.
La respuesta incluye un valor para minimalTargetSizeGb. Puedes usar este
valor para determinar el valor que deseas usar para el parámetro --storage-size
cuando ejecutas una operación de reducción de almacenamiento.
La respuesta también devuelve un mensaje con un tiempo de operación estimado,
similar al siguiente:
...
"The estimated operation time is 20 minutes".
REST v1 Usa el método GET para
ver la capacidad de almacenamiento mínima objetivo de la instancia.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_ID : Es el nombre del proyecto en el que reside la instancia principal.
INSTANCE_ID : Es el ID de la instancia principal.
Método HTTP y URL:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_ID /getDiskShrinkConfig
Para enviar tu solicitud, expande una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Nota:
Con el siguiente comando, se supone que accediste a
gcloud CLI con tu cuenta de usuario a través de la ejecución de
gcloud init
o
gcloud auth login
, o a través del uso de Cloud Shell ,
que accede de forma automática a gcloud CLI
.
Para comprobar la cuenta activa actual, ejecuta
gcloud auth list .
Ejecuta el siguiente comando:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_ID /getDiskShrinkConfig"
PowerShell (Windows)
Ejecuta el siguiente comando:
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method GET ` -Headers $headers ` -Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_ID /getDiskShrinkConfig" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
Respuesta
{
"kind": "sql#instance",
"min_target_size_gb": "1234"
"message": "The size of your instance's storage impacts IOPS, and therefore shrinking your storage
may have a negative impact on IOPS. Before shrinking your storage, please refer to our
documentation on Cloud SQL limits to understand what impact shrinking your storage might have:
https://docs.cloud.google.com/sql/docs/quotas#fixed-limits. Additionally, we recommend leaving an
appropriate buffer for operational purposes, like reindexing, etc. We recommend a buffer of at
least 100 GB or 20% more than current usage, whichever is larger. For more details, please refer
to: https://docs.cloud.google.com/sql/docs/shared-responsibility. The estimated operation time is
20 minutes."
}
La respuesta incluye un valor para min_target_size_gb. Puedes usar este
valor para determinar el valor que deseas usar para el parámetro --storage-size
cuando ejecutas una operación de reducción de almacenamiento.
La respuesta también devuelve un mensaje con un tiempo de operación estimado,
similar al siguiente:
...
"The estimated operation time is 20 minutes".
REST v1beta4 Usa el método GET para
ver la capacidad de almacenamiento mínima objetivo de la instancia.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_ID : Es el nombre del proyecto en el que reside la instancia principal.
INSTANCE_ID : Es el ID de la instancia principal.
Método HTTP y URL:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/INSTANCE_ID /getDiskShrinkConfig
Para enviar tu solicitud, expande una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Nota:
Con el siguiente comando, se supone que accediste a
gcloud CLI con tu cuenta de usuario a través de la ejecución de
gcloud init
o
gcloud auth login
, o a través del uso de Cloud Shell ,
que accede de forma automática a gcloud CLI
.
Para comprobar la cuenta activa actual, ejecuta
gcloud auth list .
Ejecuta el siguiente comando:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/INSTANCE_ID /getDiskShrinkConfig"
PowerShell (Windows)
Ejecuta el siguiente comando:
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method GET ` -Headers $headers ` -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/INSTANCE_ID /getDiskShrinkConfig" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
Respuesta
{
"kind": "sql#instance",
"min_target_size_gb": "1234"
"message": "The size of your instance's storage impacts IOPS, and therefore shrinking your storage
may have a negative impact on IOPS. Before shrinking your storage, please refer to our
documentation on Cloud SQL limits to understand what impact shrinking your storage might have:
https://docs.cloud.google.com/sql/docs/quotas#fixed-limits. Additionally, we recommend leaving an
appropriate buffer for operational purposes, like reindexing, etc. We recommend a buffer of at
least 100 GB or 20% more than current usage, whichever is larger. For more details, please refer
to: https://docs.cloud.google.com/sql/docs/shared-responsibility. The estimated operation time is
20 minutes."
}
La respuesta incluye un valor para min_target_size_gb. Puedes usar este
valor para determinar el valor que deseas usar para el parámetro --storage-size
cuando ejecutas una operación de reducción de almacenamiento.
La respuesta también devuelve un mensaje con un tiempo de operación estimado,
similar al siguiente:
...
"The estimated operation time is 20 minutes".
Reducir la capacidad de almacenamiento de la instancia
Nota: El parámetro --storage-size solo se admite para instancias principales o independientes. Para reducir el almacenamiento en una instancia de réplica, omite el parámetro --storage-size en el comando.
gcloud Ejecuta el siguiente comando para reducir el almacenamiento en la instancia:
gcloud sql instances perform-storage-shrink INSTANCE_NAME \
--storage-size= TARGET_STORAGE_SIZE
Reemplaza lo siguiente:
INSTANCE_NAME : El nombre de la instancia.
TARGET_STORAGE_SIZE : Es la capacidad de almacenamiento de destino en GB. Por ejemplo,
100 GB.
REST v1
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_ID : Es el ID del proyecto en el que reside la instancia.
INSTANCE_ID : el ID de la instancia
TARGET_STORAGE_SIZE : Es el tamaño de almacenamiento objetivo en GB.
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_ID /performDiskShrink
Cuerpo JSON de la solicitud:
{
"targetSizeGb": TARGET_STORAGE_SIZE
}
Para enviar tu solicitud, expande una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Nota:
Con el siguiente comando, se supone que accediste a
gcloud CLI con tu cuenta de usuario a través de la ejecución de
gcloud init
o
gcloud auth login
, o a través del uso de Cloud Shell ,
que accede de forma automática a gcloud CLI
.
Para comprobar la cuenta activa actual, ejecuta
gcloud auth list .
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d @request.json \ "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_ID /performDiskShrink"
PowerShell (Windows)
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -InFile request.json ` -Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_ID /performDiskShrink" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
Respuesta
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_ID ",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2019-09-25T22:19:33.735Z",
"operationType": "UPDATE",
"name": "operation-id",
"targetId": "INSTANCE_ID ",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /operations/operation-id",
"targetProject": "PROJECT_ID "
}
REST v1beta4
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_ID : Es el ID del proyecto en el que reside la instancia.
INSTANCE_ID : el ID de la instancia
TARGET_STORAGE_SIZE : Es el tamaño de almacenamiento objetivo de la instancia.
Método HTTP y URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/INSTANCE_ID /performDiskShrink
Cuerpo JSON de la solicitud:
{
"targetSizeGb": TARGET_STORAGE_SIZE
}
Para enviar tu solicitud, expande una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Nota:
Con el siguiente comando, se supone que accediste a
gcloud CLI con tu cuenta de usuario a través de la ejecución de
gcloud init
o
gcloud auth login
, o a través del uso de Cloud Shell ,
que accede de forma automática a gcloud CLI
.
Para comprobar la cuenta activa actual, ejecuta
gcloud auth list .
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d @request.json \ "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/INSTANCE_ID /performDiskShrink"
PowerShell (Windows)
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -InFile request.json ` -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/INSTANCE_ID /performDiskShrink" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
Respuesta
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/INSTANCE_ID ",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2019-09-25T22:19:33.735Z",
"operationType": "UPDATE",
"name": "operation-id",
"targetId": "INSTANCE_ID ",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /operations/operation-id",
"targetProject": "PROJECT_ID "
}
Para verificar el estado de la operación de reducción de almacenamiento, consulta Verifica el estado de una operación .
Cancela la operación de reducción de almacenamiento
Nota: Las operaciones de cancelación solo se admiten en instancias principales o independientes.
Obtén el ID de la operación de reducción de almacenamiento.
Puedes recuperar el ID de la operación ejecutando el siguiente comando
list :
gcloud sql operations list
Envía una solicitud de cancelación.
gcloud Ejecuta el siguiente comando para cancelar la solicitud:
gcloud sql operations cancel OPERATION_ID
Reemplaza lo siguiente:
OPERATION_ID : Es el ID de la operación de reducción de almacenamiento que deseas cancelar.
REST v1
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_ID : Es el ID del proyecto en el que reside la instancia.
OPERATION_ID : Es el ID de la operación de reducción de almacenamiento que deseas cancelar.
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /operations/OPERATION_ID /cancel
Para enviar tu solicitud, expande una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Nota:
Con el siguiente comando, se supone que accediste a
gcloud CLI con tu cuenta de usuario a través de la ejecución de
gcloud init
o
gcloud auth login
, o a través del uso de Cloud Shell ,
que accede de forma automática a gcloud CLI
.
Para comprobar la cuenta activa actual, ejecuta
gcloud auth list .
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://sqladmin.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://sqladmin.googleapis.com/v1/projects/PROJECT_ID /operations/OPERATION_ID /cancel" | Select-Object -Expand Content
Deberías recibir un código de estado exitoso (2xx) y una respuesta vacía.
REST v1beta4
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_ID : Es el ID del proyecto en el que reside la instancia.
OPERATION_ID : Es el ID de la operación de reducción de almacenamiento que deseas cancelar.
Método HTTP y URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /operations/OPERATION_ID /cancel
Para enviar tu solicitud, expande una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Nota:
Con el siguiente comando, se supone que accediste a
gcloud CLI con tu cuenta de usuario a través de la ejecución de
gcloud init
o
gcloud auth login
, o a través del uso de Cloud Shell ,
que accede de forma automática a gcloud CLI
.
Para comprobar la cuenta activa actual, ejecuta
gcloud auth list .
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://sqladmin.googleapis.com/sql/v1beta4/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://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /operations/OPERATION_ID /cancel" | Select-Object -Expand Content
Deberías recibir un código de estado exitoso (2xx) y una respuesta vacía.
Verifica el estado de una solicitud de cancelación o de otra operación
Para verificar el estado de una solicitud, ejecuta los siguientes comandos:
gcloud
Obtén el ID de operación de la solicitud de cancelación:
gcloud sql operations list
Verifica el estado de la operación:
gcloud sql operations describe OPERATION_ID
Reemplaza lo siguiente:
OPERATION_ID : Es el ID de la operación que deseas verificar.
REST v1
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_ID : Es el nombre del proyecto en el que reside la instancia.
OPERATION_ID : Es el ID de la operación de reducción de almacenamiento.
Método HTTP y URL:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /operations/OPERATION_ID
Para enviar tu solicitud, expande una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Nota:
Con el siguiente comando, se supone que accediste a
gcloud CLI con tu cuenta de usuario a través de la ejecución de
gcloud init
o
gcloud auth login
, o a través del uso de Cloud Shell ,
que accede de forma automática a gcloud CLI
.
Para comprobar la cuenta activa actual, ejecuta
gcloud auth list .
Ejecuta el siguiente comando:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /operations/OPERATION_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://sqladmin.googleapis.com/v1/projects/PROJECT_ID /operations/OPERATION_ID " | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
Respuesta
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_ID ",
"status": "RUNNING",
"user": "user@example.com",
"insertTime": "2023-12-18T22:43:09.849Z",
"startTime": "2023-12-18T22:43:10.373Z",
"operationType": "UPDATE",
"name": "OPERATION_ID",
"targetId": "example_instance",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /operations/OPERATION_ID ",
"targetProject": "PROJECT_ID"
}
REST v1beta4
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_ID : Es el nombre del proyecto en el que reside la instancia.
OPERATION_ID : Es el ID de la operación de reducción de almacenamiento.
Método HTTP y URL:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /operations/OPERATION_ID
Para enviar tu solicitud, expande una de estas opciones:
curl (Linux, macOS o Cloud Shell)
Nota:
Con el siguiente comando, se supone que accediste a
gcloud CLI con tu cuenta de usuario a través de la ejecución de
gcloud init
o
gcloud auth login
, o a través del uso de Cloud Shell ,
que accede de forma automática a gcloud CLI
.
Para comprobar la cuenta activa actual, ejecuta
gcloud auth list .
Ejecuta el siguiente comando:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /operations/OPERATION_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://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /operations/OPERATION_ID " | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
Respuesta
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/INSTANCE_ID ",
"status": "RUNNING",
"user": "user@example.com",
"insertTime": "2023-12-18T22:43:09.849Z",
"startTime": "2023-12-18T22:43:10.373Z",
"operationType": "UPDATE",
"name": "OPERATION_ID",
"targetId": "example_instance",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /operations/OPERATION_ID ",
"targetProject": "PROJECT_ID"
}
Soluciona problemas
Para obtener información sobre la solución de problemas, consulta Problemas para actualizar la capacidad de almacenamiento .
¿Qué sigue?