En esta página, se describe cómo proteger los objetos de esquema, como tablas, índices y columnas, de la eliminación accidental.
Información sobre la seguridad de caída de los objetos del esquema
La protección contra la eliminación de objetos de esquema de Spanner se basa en estadísticas de acceso a objetos de esquema para determinar si es seguro eliminar un objeto. Si el sistema determina que el objeto no es seguro, rechaza la solicitud del usuario para descartar el objeto de esquema. Si se quita un objeto de este tipo, es posible que fallen los trabajos del cliente que aún acceden a él. Además, restablecer un objeto descartado sin perder datos es muy difícil o imposible.
Para ello, Spanner hace un seguimiento de las estadísticas de acceso para cada objeto de esquema. Este acceso incluye inserciones, actualizaciones o eliminaciones de DML, consultas de SQL, escrituras de API y lecturas de API. Con estas estadísticas de acceso, Spanner determina si un objeto de esquema aún podría estar en uso. Si se accedió a un objeto recientemente, es probable que aún esté en uso.
Habilita la protección contra la eliminación de objetos de esquema
Para habilitar la protección contra caídas, establece la duración de inactividad para la protección contra caídas en un valor de duración distinto de cero, como "24h" o "2d". La duración mínima es "0s" y la máxima es "7d". Debes establecer la duración de inactividad en "24 h" o más.
Si configuras la duración de inactividad en "24 h", solo podrás descartar un objeto de esquema si no se accedió 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" )'
Reemplaza lo siguiente:
- DATABASE_NAME: el nombre de tu base de datos.
- INSTANCE_ID: Es el identificador de tu instancia de base de datos.
- DURATION: Entre "0s" (inclusive) y "7d" (inclusive). Se recomienda "24 h".
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" '
Reemplaza lo siguiente:
- DATABASE_NAME: el nombre de tu base de datos.
- INSTANCE_ID: Es el identificador de tu instancia de base de datos.
- DURATION: Entre "0s" (inclusive) y "7d" (inclusive). Se recomienda "24 h".
Inhabilita la protección contra la eliminación de objetos de esquema
Para inhabilitar la protección contra caídas, establece la duración de inactividad en un valor de duración cero, "0s", o establece el valor de la opción en nulo.
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 )'
Reemplaza lo siguiente:
- DATABASE_NAME: el nombre de tu base de datos.
- INSTANCE_ID: Es 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'
Reemplaza lo siguiente:
- DATABASE_NAME: el nombre de tu base de datos.
- INSTANCE_ID: Es el identificador de tu instancia de base de datos.
Advertencias
La protección contra la eliminación de objetos del esquema no se activa en los siguientes casos:
- Creaste la base de datos en la última hora.
- Creaste el objeto de esquema dentro del período 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 anular el valor predeterminado con la siguiente opción de la 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 recopilan estadísticas de acceso en los siguientes casos:
- Los accesos fallidos (consultas, DML, etc.) no se incluyen en el acceso del usuario.
- No se contabilizan los accesos del sistema.
- Se ignoran los accesos de escritura (incluidas las inserciones y actualizaciones de DML) para los índices.
- Se ignoran los accesos de escritura para las columnas generadas almacenadas.
Soluciona problemas
Si no se puede quitar un objeto de esquema y no puedes identificar qué lo está accediendo, consulta lo siguiente:
¿Qué sigue?
Obtén más información para evitar que se borre la base de datos.