Evita borrar una instancia

En esta página, se describe cómo proteger las instancias de Cloud SQL de la eliminación accidental.

Descripción general

La protección contra la eliminación de instancias te permite evitar la eliminación accidental de instancias existentes y nuevas. Con la protección de eliminación de instancias, puedes proteger las instancias que son importantes para tus aplicaciones y servicios.

Puedes establecer la opción de protección contra la eliminación cuando creas una instancia. Además, puedes configurar esta opción en una instancia existente. En ambos casos, la eliminación se evita a nivel de la instancia. De forma predeterminada, la opción de protección contra la eliminación está inhabilitada, a menos que uses la consola de Google Cloud o Terraform para crear una instancia.

Cuando clonas una instancia, esta recibe la opción de protección contra la eliminación (habilitada o inhabilitada) de la instancia de origen.

Planifica la protección contra la eliminación

Si planeas crear una instancia, decide si deseas proteger la instancia nueva contra la eliminación accidental. Por ejemplo, una instancia crítica debe protegerse de esta manera.

También considera si hay instancias existentes que deseas proteger contra la eliminación accidental. Si tienes varias instancias para proteger, establece la opción en cada una.

Considera la protección contra la eliminación para réplicas de lectura

Cuando creas una réplica de lectura, esa réplica de lectura no obtiene una configuración de protección contra la eliminación desde la instancia principal; esta configuración es independiente. Sin embargo, puedes habilitar la protección contra la eliminación en una réplica de lectura nueva o existente.

En las réplicas de lectura de Cloud SQL, la opción de protección contra la eliminación funciona de la misma manera que en las instancias de Cloud SQL.

Confirma los permisos o roles necesarios

Para configurar la opción de protección contra la eliminación, la cuenta de servicio de la instancia de Cloud SQL debe tener ciertos permisos o roles de IAM.

Permisos o roles para crear una instancia

Al igual que en el caso de las operaciones relacionadas, la opción de protección contra la eliminación requiere el permiso cloudsql.instances.create o el rol cloudsql.admin. Por lo tanto, cuando creas una instancia, no se necesitan permisos adicionales para habilitar la protección contra la eliminación.

Permisos o roles para editar una instancia

Al igual que en el caso de las operaciones relacionadas, los cambios en la protección contra la eliminación requieren el permiso cloudsql.instances.update o el rol cloudsql.editor. Por lo tanto, cuando editas una instancia para protegerla de la eliminación, no se necesitan permisos adicionales.

Planifica la eliminación de instancias

Si planeas borrar una instancia, primero haz lo siguiente:

  • Confirma que sea seguro borrar la instancia
  • Confirma que la protección contra la eliminación esté inhabilitada. Si es necesario, edita la instancia para inhabilitar la protección contra la eliminación

Limitaciones de la protección contra la eliminación

La protección contra la eliminación en una instancia no evita las siguientes acciones:

  • Detener la instancia
  • Reiniciar la instancia
  • Editar la instancia
  • Borra una copia de seguridad
  • Suspender la instancia debido a problemas de facturación
  • Borrar la instancia suspendida debido a problemas de facturación
  • Borrar la instancia debido a la eliminación de un proyecto

Configurar la protección contra la eliminación en una instancia nueva

Las siguientes son las formas de configurar la opción de protección contra la eliminación. De forma predeterminada, la opción de protección contra la eliminación está inhabilitada, a menos que uses la consola de Google Cloud o Terraform para crear una instancia.

Si la protección contra la eliminación está habilitada, un intento de borrar la instancia falla.

Console

  1. Sigue los pasos para comenzar a crear una instancia.
  2. En Personaliza tu instancia, haz clic en la flecha desplegable Mostrar opciones de configuración.
  3. En Protección de datos, confirma que la casilla de verificación Habilitar protección contra la eliminación esté marcada.
  4. Según sea necesario para tu instancia, selecciona otras opciones de configuración.
  5. Haga clic en Crear instancia.

gcloud

Para configurar la protección contra la eliminación durante la creación de instancias, usa un comando similar al siguiente:

gcloud sql instances create [INSTANCE_NAME] \
    --deletion-protection

REST v1

Para configurar la protección contra la eliminación durante la creación de instancias, especifica true en el campo deletionProtection.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • project-id: Es el ID del proyecto.
  • instance-id: Es el ID de instancia deseado.
  • database-version: Es la versión de la base de datos.
  • region: Es la región deseada.
  • machine-type: es el tipo de máquina deseado.

Método HTTP y URL:

POST https://sqladmin.googleapis.com/v1/projects/project-id/instances

Cuerpo JSON de la solicitud:

{
  "name": "instance-id",
  "region": "region",
  "databaseVersion": "database-version",
  "settings": {
    "tier": "machine-type",
    "deletionProtectionEnabled": true
  }
}

Para enviar tu solicitud, expande una de estas opciones:

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

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2022-05-24T15:34:10.929Z",
  "operationType": "CREATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

REST v1beta4

Para configurar la protección contra la eliminación durante la creación de instancias, especifica true en el campo deletionProtection.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • project-id: Es el ID del proyecto.
  • instance-id: Es el ID de instancia deseado.
  • database-version: Es la versión de la base de datos.
  • region: Es la región deseada.
  • machine-type: es el tipo de máquina deseado.

Método HTTP y URL:

POST https://sqladmin.googleapis.com/v1beta4/projects/project-id/instances

Cuerpo JSON de la solicitud:

{
  "name": "instance-id",
  "region": "region",
  "databaseVersion": "database-version",
  "settings": {
    "tier": "machine-type",
    "deletionProtectionEnabled": true
  }
}

Para enviar tu solicitud, expande una de estas opciones:

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

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2022-05-26T15:37:10.929Z",
  "operationType": "CREATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}
Si quieres ver cómo se crea la solicitud a la API de REST subyacente para esta tarea, consulta el Explorador de API en la página de instances:insert.

Configura o quita la protección contra la eliminación en una instancia existente

A continuación, se describen las formas de editar una instancia para protegerla contra la eliminación. Si habilitas la opción, fallará cualquier intento posterior de borrar la instancia.

Console

  1. Sigue los pasos para comenzar a editar una instancia.
  2. Después de hacer clic en Editar, busca la sección Personaliza tu instancia.
  3. En Protección de datos, marca o desmarca la casilla de verificación Habilitar protección contra la eliminación.
  4. Según sea necesario para tu instancia, edita otras opciones de configuración.
  5. Haz clic en Guardar.

gcloud

A fin de habilitar la protección contra la eliminación cuando actualizas una instancia, usa un comando similar al siguiente:

gcloud sql instances patch [INSTANCE_NAME] \
    --deletion-protection

Para inhabilitar la protección contra la eliminación cuando actualizas una instancia, usa un comando similar al siguiente:

gcloud sql instances patch [INSTANCE_NAME] \
    --no-deletion-protection

REST v1

Para configurar la protección contra la eliminación cuando actualizas una instancia, especifica true en el campo deletionProtection. Para quitar la protección contra la eliminación, especifica false en ese campo.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • project-id: Es el ID del proyecto.
  • instance-id: Es el ID de instancia deseado.

HTTP method and URL:

PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id

Cuerpo JSON de la solicitud:

{
  "settings": {
    "deletionProtectionEnabled": true
  }
}

Para enviar tu solicitud, expande una de estas opciones:

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

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2022-06-1T03:42:12.281Z",
  "operationType": "CREATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

REST v1beta4

Para configurar la protección contra la eliminación cuando actualizas una instancia, especifica true en el campo deletionProtection. Para quitar la protección contra la eliminación, especifica false en ese campo.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • project-id: Es el ID del proyecto.
  • instance-id: Es el ID de instancia deseado.

HTTP method and URL:

PATCH https://sqladmin.googleapis.com/v1beta4/projects/project-id/instances/instance-id

Cuerpo JSON de la solicitud:

{
  "settings": {
    "deletionProtectionEnabled": true
  }
}

Para enviar tu solicitud, expande una de estas opciones:

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

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2022-06-1T03:32:12.281Z",
  "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 ver cómo se realiza la solicitud subyacente de API de REST de esta tarea, consulta el Explorador de API en la página de instancias:parche.