Schutz vor dem Ablegen von Schemaobjekten

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:

  1. Sie haben die Datenbank in der letzten Stunde erstellt.
  2. Sie haben das Schemaobjekt innerhalb des Inaktivitätszeitraums erstellt.
  3. 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:

  1. Fehlgeschlagene Zugriffe (Abfragen, DML usw.) werden nicht auf den Nutzerzugriff angerechnet.
  2. Systemzugriffe werden nicht gezählt.
  3. Schreibzugriffe (einschließlich DML-Einfügungen und -Aktualisierungen) werden für Indexe ignoriert.
  4. 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