En esta página se describe cómo proteger los objetos de esquema, como tablas, índices y columnas, frente a eliminaciones accidentales.
Información sobre la seguridad de eliminación de objetos de esquema
La protección contra la eliminación de objetos de esquema de Spanner se basa en las estadísticas de acceso a objetos de esquema para determinar si se puede eliminar un objeto de forma segura. Si el sistema determina que el objeto no es seguro, rechaza la solicitud del usuario para eliminar el objeto de esquema. Si se elimina un objeto de este tipo, es posible que fallen los trabajos del cliente que sigan accediendo al objeto. Además, restaurar un objeto eliminado sin perder datos es muy difícil o imposible.
Para ello, Spanner registra estadísticas de acceso de cada objeto de esquema. Este acceso incluye inserciones, actualizaciones o eliminaciones de DML, consultas SQL, escrituras de API y lecturas de API. Con estas estadísticas de acceso, Spanner determina si un objeto de esquema aún se puede estar usando. Si se ha accedido a un objeto recientemente, es probable que aún se esté usando.
Habilitar la protección contra la eliminación de objetos de esquema
Para habilitar la protección contra caídas, asigna a la duración de inactividad de la protección contra caídas un valor distinto de cero, como "24h" o "2d". La duración mínima es "0s" y la máxima es "7d". Debe definir la duración de la inactividad en "24h" o más.
Si define la duración de inactividad en "24h", solo podrá eliminar un objeto de esquema si no se ha accedido a él en las últimas 24 horas.
GoogleSQL
Para obtener más información, consulta ALTER DATABASE.
gcloud spanner databases ddl update DATABASE_NAME \
--instance=INSTANCE_ID \
--ddl='ALTER DATABASE `DATABASE_NAME` SET OPTIONS ( schema_drop_protection_inactivity_period="DURATION" )'
Haz los cambios siguientes:
- DATABASE_NAME: el nombre de tu base de datos.
- INSTANCE_ID: el identificador de tu instancia de base de datos.
- DURATION: entre "0s" (incluido) y "7d" (incluido). Recomendado: "24h".
PostgreSQL
Para obtener más información, consulta ALTER DATABASE.
gcloud spanner databases ddl update DATABASE_NAME \
--instance=INSTANCE_ID \
--ddl='ALTER DATABASE `DATABASE_NAME" SET spanner.schema_drop_protection_inactivity_period="DURATION" '
Haz los cambios siguientes:
- DATABASE_NAME: el nombre de tu base de datos.
- INSTANCE_ID: el identificador de tu instancia de base de datos.
- DURATION: entre "0s" (incluido) y "7d" (incluido). Recomendado: "24h".
Inhabilitar la protección contra la eliminación de objetos de esquema
Para inhabilitar la protección contra caídas, asigna a la duración de inactividad el valor cero ("0s") o asigna el valor nulo a la opción.
GoogleSQL
Para obtener más información, consulta ALTER DATABASE.
gcloud spanner databases ddl update DATABASE_NAME \
--instance=INSTANCE_ID \
--ddl='ALTER DATABASE `DATABASE_NAME` SET OPTIONS ( schema_drop_protection_inactivity_period=null )'
Haz los cambios siguientes:
- DATABASE_NAME: el nombre de tu base de datos.
- INSTANCE_ID: el identificador de tu instancia de base de datos.
PostgreSQL
Para obtener más información, consulta ALTER DATABASE.
gcloud spanner databases ddl update DATABASE_NAME \
--instance=INSTANCE_ID \
--ddl='ALTER DATABASE `DATABASE_NAME` SET spanner.schema_drop_protection_inactivity_period=null'
Haz los cambios siguientes:
- DATABASE_NAME: el nombre de tu base de datos.
- INSTANCE_ID: el identificador de tu instancia de base de datos.
Advertencias
La protección contra la eliminación de objetos de esquema no se activa en los siguientes casos:
- Has creado la base de datos en la última hora.
- Has creado el objeto de esquema durante el periodo de inactividad.
- El objeto tiene accesos de lectura de baja frecuencia (menos de 10 por hora).
El umbral de acceso de lectura predeterminado es de 10 por hora, pero puedes anularlo con la siguiente opción de base de datos:
GoogleSQL
Para obtener más información, consulta ALTER DATABASE.
gcloud spanner databases ddl update DATABASE_NAME \
--instance=INSTANCE_ID \
--ddl='ALTER DATABASE `DATABASE_NAME` SET OPTIONS ( schema_drop_protection_usage_lowerbound=<threshold> )'
PostgreSQL
Para obtener más información, consulta ALTER DATABASE.
gcloud spanner databases ddl update DATABASE_NAME \
--instance=INSTANCE_ID \
--ddl='ALTER DATABASE `DATABASE_NAME` SET spanner.schema_drop_protection_usage_lowerbound=<threshold> '
No se recogen estadísticas de acceso en los siguientes casos:
- Los accesos fallidos (consultas, DML, etc.) no se tienen en cuenta para el acceso de los usuarios.
- No se contabilizan los accesos del sistema.
- Los accesos de escritura (incluidas las inserciones y actualizaciones de DML) se ignoran en los índices.
- Se ignoran los accesos de escritura de las columnas generadas almacenadas.
Solución de problemas
Si no se puede eliminar un objeto de esquema y no puedes identificar qué está accediendo a él, consulta lo siguiente:
Siguientes pasos
Consulta cómo evitar que se eliminen bases de datos.