Auf dieser Seite wird beschrieben, wie Sie Schemaobjekte wie Tabellen, Indexe und Spalten vor versehentlichem Löschen schützen.
Sicherheit beim Löschen von Schemaobjekten
Der Schutz vor dem Löschen von Schemaobjekten in Spanner basiert auf Zugriffsstatistiken für Schemaobjekte, um zu ermitteln, ob ein Objekt sicher gelöscht werden kann. Wenn das System feststellt, dass das Objekt nicht sicher ist, wird die Anfrage des Nutzers zum Löschen des Schemaobjekts abgelehnt. Wenn Sie ein solches Objekt löschen, können Client-Jobs, die noch darauf zugreifen, fehlschlagen. Außerdem ist es sehr schwierig oder unmöglich, ein gelöschtes Objekt wiederherzustellen, ohne dass Daten verloren gehen.
Dazu erfasst Spanner Zugriffsstatistiken für jedes Schemaobjekt. Dieser Zugriff umfasst DML-Einfügungen, ‑Aktualisierungen oder ‑Löschungen, SQL-Abfragen, API-Schreibvorgänge und API-Lesevorgänge. Anhand dieser Zugriffsstatistiken ermittelt Spanner, ob ein Schemaobjekt möglicherweise noch verwendet wird. Wenn auf ein Objekt vor Kurzem zugegriffen wurde, wird es wahrscheinlich noch verwendet.
Löschschutz für Schemaobjekte aktivieren
Um den Schutz vor dem Herunterfallen zu aktivieren, legen Sie für die Inaktivitätsdauer für den Schutz vor dem Herunterfallen einen Wert ungleich null fest, z. B. „24h“ oder „2d“. Die Mindestdauer beträgt „0s“ und die maximale Dauer „7d“. Sie sollten die Inaktivitätsdauer auf „24 Stunden“ oder länger festlegen.
Wenn Sie die Inaktivitätsdauer auf „24 h“ festlegen, können Sie ein Schemaobjekt nur löschen, wenn in den letzten 24 Stunden nicht darauf zugegriffen wurde.
GoogleSQL
Weitere Informationen finden Sie unter 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" )'
Ersetzen Sie Folgendes:
- DATABASE_NAME: der Name Ihrer Datenbank
- INSTANCE_ID: die ID Ihrer Datenbankinstanz.
- DURATION: zwischen „0s“ (einschließlich) und „7d“ (einschließlich). Empfohlen: „24h“.
PostgreSQL
Weitere Informationen finden Sie unter 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" '
Ersetzen Sie Folgendes:
- DATABASE_NAME: der Name Ihrer Datenbank
- INSTANCE_ID: die ID Ihrer Datenbankinstanz.
- DURATION: zwischen „0s“ (einschließlich) und „7d“ (einschließlich). Empfohlen: „24h“.
Löschschutz für Schemaobjekte deaktivieren
Wenn Sie den Schutz vor dem Herunterfallen deaktivieren möchten, legen Sie die Inaktivitätsdauer auf den Wert „0s“ fest oder setzen Sie den Optionswert auf „null“.
GoogleSQL
Weitere Informationen finden Sie unter 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 )'
Ersetzen Sie Folgendes:
- DATABASE_NAME: der Name Ihrer Datenbank
- INSTANCE_ID: die ID Ihrer Datenbankinstanz.
PostgreSQL
Weitere Informationen finden Sie unter 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'
Ersetzen Sie Folgendes:
- DATABASE_NAME: der Name Ihrer Datenbank
- INSTANCE_ID: die ID Ihrer Datenbankinstanz.
Vorsichtsmaßnahmen
Der Schutz vor dem Löschen von Schemaobjekten ist in den folgenden Fällen nicht aktiviert:
- Sie haben die Datenbank in der letzten Stunde erstellt.
- Sie haben das Schemaobjekt innerhalb des Inaktivitätszeitraums erstellt.
- Auf das Objekt wird nur selten zugegriffen (weniger als 10 Lesevorgänge pro Stunde).
Der Standard-Schwellenwert für den Lesezugriff liegt bei 10 Zugriffen pro Stunde. Sie können den Standardwert jedoch mit der folgenden Datenbankoption überschreiben:
GoogleSQL
Weitere Informationen finden Sie unter 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
Weitere Informationen finden Sie unter 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> '
In den folgenden Fällen werden keine Zugriffsstatistiken erhoben:
- Fehlgeschlagene Zugriffe (Abfragen, DML usw.) werden nicht auf den Nutzerzugriff angerechnet.
- Systemzugriffe werden nicht gezählt.
- Schreibzugriffe (einschließlich DML-Einfügungen und -Aktualisierungen) werden für Indexe ignoriert.
- Schreibzugriffe werden für gespeicherte generierte Spalten ignoriert.
Fehlerbehebung
Wenn ein Schemaobjekt nicht gelöscht werden kann und Sie nicht ermitteln können, wer darauf zugreift, gehen Sie so vor:
Nächste Schritte
Informationen zum Verhindern des Löschens von Datenbanken