Datenbanken erstellen und verwalten

Auf dieser Seite wird beschrieben, wie Sie eine Spanner-Datenbank verwalten, d. h., eine Datenbank erstellen, Datenbankoptionen ändern und eine Datenbank löschen. Informationen zum Aktualisieren eines Datenbankschemas finden Sie unter Schemaaktualisierungen vornehmen.

Informationen zum Erstellen einer Datenbank und zum Laden dieser Datenbank mit Beispieldaten finden Sie im Codelab zu Ihrer ersten Datenbank.

Datenbank erstellen

Die folgenden Beispiele zeigen, wie eine Datenbank in einer vorhandenen Instanz erstellt wird.

Bei GoogleSQL-Dialekt-Datenbanken können Sie das Datenbankschema entweder bei der Datenbankerstellung oder nach dem Erstellen der Datenbank definieren. Bei PostgreSQL-Dialekten müssen Sie das Schema nach der Erstellung definieren.

Schemas werden mithilfe der Database Definition Language definiert, die für GoogleSQL und PostgreSQL dokumentiert ist. Weitere Informationen zum Erstellen und Aktualisieren von Schemas finden Sie unter den folgenden Links:

Nachdem Sie die Datenbank erstellt haben, können Sie Datenbanken, die für Ihre Anwendungen und Dienste wichtig sind, schützen. Dazu aktivieren Sie den Löschschutz für die Datenbank. Weitere Informationen finden Sie unter Versehentliches Löschen von Datenbanken verhindern.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Instanzen auf.

    Instanzen

  2. Wählen Sie die Instanz aus, in der die Datenbank erstellt werden soll.

  3. Klicken Sie auf Create database (Datenbank erstellen).

  4. Geben Sie die folgenden Werte ein:

    • Ein Datenbankname, der in der Google Cloud Console angezeigt wird.
    • Der für diese Datenbank zu verwendende Dialekt.
    • Geben Sie für GoogleSQL-Dialekt-Datenbanken optional eine Reihe von DDL-Anweisungen an, die Ihr Schema definieren. Verwenden Sie DDL-Vorlagen, um gängige Elemente vorab zu füllen. Wenn die DDL-Anweisungen Fehler enthalten, gibt die Google Cloud Console beim Erstellen der Datenbank einen Fehler zurück.
    • Wählen Sie optional einen vom Kunden verwalteten Verschlüsselungsschlüssel aus, der für diese Datenbank verwendet werden soll.
  5. Klicken Sie auf Erstellen, um die Datenbank anzulegen.

gcloud

Führen Sie den Befehl gcloud spanner databases create aus.

gcloud spanner databases create DATABASE \
  --instance=INSTANCE \
  [--async] \
  [--database-dialect=DATABASE_DIALECT] \
  [--ddl=DDL] \
  [--ddl-file=DDL_FILE] \
  [--kms-key=KMS_KEY : --kms-keyring=KMS_KEYRING --kms-location=KMS_LOCATION --kms-project=KMS_PROJECT] \
  [GCLOUD_WIDE_FLAG …]

Folgende Optionen sind erforderlich:

DATABASE
ID der Datenbank oder voll qualifizierte Kennung für die Datenbank. Bei Angabe der voll qualifizierten Kennzeichnung kann das Flag --instance weggelassen werden.
--instance=INSTANCE
Die Spanner-Instanz für die Datenbank.

Folgende Optionen sind optional:

--async
Es wird sofort zurückgegeben, ohne auf den Abschluss des Vorgangs zu warten.
--database-dialect=DATABASE_DIALECT
Der SQL-Dialekt der Spanner-Datenbank. Hier muss entweder POSTGRESQL oder GOOGLE_STANDARD_SQL angegeben werden.
--ddl=DDL
Durch Semikolons getrennte DDL-Anweisungen (Data Definition Language) für die Ausführung in der neu erstellten Datenbank. Wenn eine Anweisung einen Fehler enthält, wird die Datenbank nicht erstellt. Dieses Flag wird ignoriert, wenn --ddl_file festgelegt ist. Wird von PostgreSQL-Dialekt-Datenbanken nicht unterstützt.
--ddl-file=DDL_FILE
Der Pfad einer Datei, die durch Semikolons getrennte DDL-Anweisungen (Data Definition Language) enthält, die in der neu erstellten Datenbank ausgeführt werden sollen. Wenn eine Anweisung einen Fehler enthält, wird die Datenbank nicht erstellt. Wenn --ddl_file festgelegt ist, wird --ddl ignoriert. Wird von PostgreSQL-Dialekt-Datenbanken nicht unterstützt.

Wenn Sie beim Erstellen der Datenbank einen Cloud Key Management Service-Schlüssel angeben, schließen Sie die folgenden Optionen ein:

--kms-key=KMS_KEY
ID des Schlüssels oder der voll qualifizierten Kennung für den Schlüssel.

Dieses Flag muss angegeben werden, wenn andere Argumente in dieser Gruppe angegeben sind. Die anderen Argumente können weggelassen werden, wenn die voll qualifizierte ID angegeben ist.

--kms-keyring=KMS_KEYRING
Cloud KMS-Schlüsselbund-ID des Schlüssels.
--kms-location=KMS_LOCATION
Google Cloud-Speicherort für den Schlüssel.
--kms-project=KMS_PROJECT
Google Cloud-Projekt-ID für den Schlüssel.

Client (GoogleSQL)

C++

Informationen zum Installieren und Verwenden der Clientbibliothek für Spanner finden Sie unter Spanner-Clientbibliotheken.

Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Spanner zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

void CreateDatabase(google::cloud::spanner_admin::DatabaseAdminClient client,
                    std::string const& project_id,
                    std::string const& instance_id,
                    std::string const& database_id) {
  google::cloud::spanner::Database database(project_id, instance_id,
                                            database_id);
  google::spanner::admin::database::v1::CreateDatabaseRequest request;
  request.set_parent(database.instance().FullName());
  request.set_create_statement("CREATE DATABASE `" + database.database_id() +
                               "`");
  request.add_extra_statements(R"""(
      CREATE TABLE Singers (
          SingerId   INT64 NOT NULL,
          FirstName  STRING(1024),
          LastName   STRING(1024),
          SingerInfo BYTES(MAX),
          FullName   STRING(2049)
              AS (ARRAY_TO_STRING([FirstName, LastName], " ")) STORED
      ) PRIMARY KEY (SingerId))""");
  request.add_extra_statements(R"""(
      CREATE TABLE Albums (
          SingerId     INT64 NOT NULL,
          AlbumId      INT64 NOT NULL,
          AlbumTitle   STRING(MAX)
      ) PRIMARY KEY (SingerId, AlbumId),
          INTERLEAVE IN PARENT Singers ON DELETE CASCADE)""");
  auto db = client.CreateDatabase(request).get();
  if (!db) throw std::move(db).status();
  std::cout << "Database " << db->name() << " created.\n";
}

Einfach loslegen (Go)

Informationen zum Installieren und Verwenden der Clientbibliothek für Spanner finden Sie unter Spanner-Clientbibliotheken.

Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Spanner zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

import (
	"context"
	"fmt"
	"io"
	"regexp"

	database "cloud.google.com/go/spanner/admin/database/apiv1"
	adminpb "google.golang.org/genproto/googleapis/spanner/admin/database/v1"
)

func createDatabase(ctx context.Context, w io.Writer, db string) error {
	matches := regexp.MustCompile("^(.*)/databases/(.*)$").FindStringSubmatch(db)
	if matches == nil || len(matches) != 3 {
		return fmt.Errorf("Invalid database id %s", db)
	}

	adminClient, err := database.NewDatabaseAdminClient(ctx)
	if err != nil {
		return err
	}
	defer adminClient.Close()

	op, err := adminClient.CreateDatabase(ctx, &adminpb.CreateDatabaseRequest{
		Parent:          matches[1],
		CreateStatement: "CREATE DATABASE `" + matches[2] + "`",
		ExtraStatements: []string{
			`CREATE TABLE Singers (
				SingerId   INT64 NOT NULL,
				FirstName  STRING(1024),
				LastName   STRING(1024),
				SingerInfo BYTES(MAX),
				FullName   STRING(2048) AS (
					ARRAY_TO_STRING([FirstName, LastName], " ")
				) STORED
			) PRIMARY KEY (SingerId)`,
			`CREATE TABLE Albums (
				SingerId     INT64 NOT NULL,
				AlbumId      INT64 NOT NULL,
				AlbumTitle   STRING(MAX)
			) PRIMARY KEY (SingerId, AlbumId),
			INTERLEAVE IN PARENT Singers ON DELETE CASCADE`,
		},
	})
	if err != nil {
		return err
	}
	if _, err := op.Wait(ctx); err != nil {
		return err
	}
	fmt.Fprintf(w, "Created database [%s]\n", db)
	return nil
}

Java

Informationen zum Installieren und Verwenden der Clientbibliothek für Spanner finden Sie unter Spanner-Clientbibliotheken.

Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Spanner zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.


import com.google.cloud.spanner.SpannerException;
import com.google.cloud.spanner.SpannerExceptionFactory;
import com.google.cloud.spanner.admin.database.v1.DatabaseAdminClient;
import com.google.common.collect.ImmutableList;
import com.google.spanner.admin.database.v1.CreateDatabaseRequest;
import com.google.spanner.admin.database.v1.Database;
import java.io.IOException;
import java.util.concurrent.ExecutionException;

public class CreateDatabaseWithDefaultLeaderSample {

  static void createDatabaseWithDefaultLeader() throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    final String instanceName = "projects/my-project/instances/my-instance-id";
    final String databaseId = "my-database-name";
    final String defaultLeader = "my-default-leader";
    createDatabaseWithDefaultLeader(instanceName, databaseId, defaultLeader);
  }

  static void createDatabaseWithDefaultLeader(String instanceName, String databaseId,
      String defaultLeader) throws IOException {
    try (DatabaseAdminClient databaseAdminClient = DatabaseAdminClient.create()) {
      Database createdDatabase =
          databaseAdminClient.createDatabaseAsync(
              CreateDatabaseRequest.newBuilder()
                  .setParent(instanceName)
                  .setCreateStatement("CREATE DATABASE `" + databaseId + "`")
                  .addAllExtraStatements(
                      ImmutableList.of("CREATE TABLE Singers ("
                              + "  SingerId   INT64 NOT NULL,"
                              + "  FirstName  STRING(1024),"
                              + "  LastName   STRING(1024),"
                              + "  SingerInfo BYTES(MAX)"
                              + ") PRIMARY KEY (SingerId)",
                          "CREATE TABLE Albums ("
                              + "  SingerId     INT64 NOT NULL,"
                              + "  AlbumId      INT64 NOT NULL,"
                              + "  AlbumTitle   STRING(MAX)"
                              + ") PRIMARY KEY (SingerId, AlbumId),"
                              + "  INTERLEAVE IN PARENT Singers ON DELETE CASCADE",
                          "ALTER DATABASE " + "`" + databaseId + "`"
                              + " SET OPTIONS ( default_leader = '" + defaultLeader + "' )"))
                  .build()).get();
      System.out.println("Created database [" + createdDatabase.getName() + "]");
      System.out.println("\tDefault leader: " + createdDatabase.getDefaultLeader());
    } catch (ExecutionException e) {
      // If the operation failed during execution, expose the cause.
      throw (SpannerException) e.getCause();
    } catch (InterruptedException e) {
      // Throw when a thread is waiting, sleeping, or otherwise occupied,
      // and the thread is interrupted, either before or during the activity.
      throw SpannerExceptionFactory.propagateInterrupt(e);
    }
  }
}

Node.js

Informationen zum Installieren und Verwenden der Clientbibliothek für Spanner finden Sie unter Spanner-Clientbibliotheken.

Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Spanner zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// const projectId = 'my-project-id';
// const instanceId = 'my-instance-id';
// const databaseId = 'my-database-id';
// const defaultLeader = 'my-default-leader'; example: 'asia-northeast1'

// Imports the Google Cloud client library
const {Spanner} = require('@google-cloud/spanner');

// creates a client
const spanner = new Spanner({
  projectId: projectId,
});

// Gets a reference to a Cloud Spanner Database Admin Client object
const databaseAdminClient = spanner.getDatabaseAdminClient();

async function createDatabaseWithDefaultLeader() {
  // Create a new database with an extra statement which will alter the
  // database after creation to set the default leader.
  console.log(
    `Creating database ${databaseAdminClient.databasePath(
      projectId,
      instanceId,
      databaseId
    )}.`
  );
  const createSingersTableStatement = `
    CREATE TABLE Singers (
      SingerId   INT64 NOT NULL,
      FirstName  STRING(1024),
      LastName   STRING(1024),
      SingerInfo BYTES(MAX)
    ) PRIMARY KEY (SingerId)`;
  const createAlbumsStatement = `
    CREATE TABLE Albums (
      SingerId     INT64 NOT NULL,
      AlbumId      INT64 NOT NULL,
      AlbumTitle   STRING(MAX)
    ) PRIMARY KEY (SingerId, AlbumId),
      INTERLEAVE IN PARENT Singers ON DELETE CASCADE`;

  // Default leader is one of the possible values in the leaderOptions field of the
  // instance config of the instance where the database is created.
  const setDefaultLeaderStatement = `
    ALTER DATABASE \`${databaseId}\`
    SET OPTIONS (default_leader = '${defaultLeader}')`;

  const [operation] = await databaseAdminClient.createDatabase({
    createStatement: 'CREATE DATABASE `' + databaseId + '`',
    extraStatements: [
      createSingersTableStatement,
      createAlbumsStatement,
      setDefaultLeaderStatement,
    ],
    parent: databaseAdminClient.instancePath(projectId, instanceId),
  });

  console.log(`Waiting for creation of ${databaseId} to complete...`);
  await operation.promise();
  console.log(
    `Created database ${databaseId} with default leader ${defaultLeader}.`
  );
}
createDatabaseWithDefaultLeader();

PHP

Informationen zum Installieren und Verwenden der Clientbibliothek für Spanner finden Sie unter Spanner-Clientbibliotheken.

Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Spanner zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

use Google\Cloud\Spanner\Admin\Database\V1\Client\DatabaseAdminClient;
use Google\Cloud\Spanner\Admin\Database\V1\CreateDatabaseRequest;

/**
 * Creates a database and tables for sample data.
 * Example:
 * ```
 * create_database($instanceId, $databaseId);
 * ```
 *
 * @param string $projectId The Google Cloud project ID.
 * @param string $instanceId The Spanner instance ID.
 * @param string $databaseId The Spanner database ID.
 */
function create_database(string $projectId, string $instanceId, string $databaseId): void
{
    $databaseAdminClient = new DatabaseAdminClient();
    $instance = $databaseAdminClient->instanceName($projectId, $instanceId);

    $operation = $databaseAdminClient->createDatabase(
        new CreateDatabaseRequest([
            'parent' => $instance,
            'create_statement' => sprintf('CREATE DATABASE `%s`', $databaseId),
            'extra_statements' => [
                'CREATE TABLE Singers (' .
                'SingerId     INT64 NOT NULL,' .
                'FirstName    STRING(1024),' .
                'LastName     STRING(1024),' .
                'SingerInfo   BYTES(MAX),' .
                'FullName     STRING(2048) AS' .
                '(ARRAY_TO_STRING([FirstName, LastName], " ")) STORED' .
                ') PRIMARY KEY (SingerId)',
                'CREATE TABLE Albums (' .
                    'SingerId     INT64 NOT NULL,' .
                    'AlbumId      INT64 NOT NULL,' .
                    'AlbumTitle   STRING(MAX)' .
                ') PRIMARY KEY (SingerId, AlbumId),' .
                'INTERLEAVE IN PARENT Singers ON DELETE CASCADE'
            ]
        ])
    );

    print('Waiting for operation to complete...' . PHP_EOL);
    $operation->pollUntilComplete();

    printf('Created database %s on instance %s' . PHP_EOL,
        $databaseId, $instanceId);
}

Python

Informationen zum Installieren und Verwenden der Clientbibliothek für Spanner finden Sie unter Spanner-Clientbibliotheken.

Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Spanner zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

def create_database(instance_id, database_id):
    """Creates a database and tables for sample data."""
    from google.cloud.spanner_admin_database_v1.types import \
        spanner_database_admin

    spanner_client = spanner.Client()
    database_admin_api = spanner_client.database_admin_api

    request = spanner_database_admin.CreateDatabaseRequest(
        parent=database_admin_api.instance_path(spanner_client.project, instance_id),
        create_statement=f"CREATE DATABASE `{database_id}`",
        extra_statements=[
            """CREATE TABLE Singers (
            SingerId     INT64 NOT NULL,
            FirstName    STRING(1024),
            LastName     STRING(1024),
            SingerInfo   BYTES(MAX),
            FullName   STRING(2048) AS (
                ARRAY_TO_STRING([FirstName, LastName], " ")
            ) STORED
        ) PRIMARY KEY (SingerId)""",
            """CREATE TABLE Albums (
            SingerId     INT64 NOT NULL,
            AlbumId      INT64 NOT NULL,
            AlbumTitle   STRING(MAX)
        ) PRIMARY KEY (SingerId, AlbumId),
        INTERLEAVE IN PARENT Singers ON DELETE CASCADE""",
        ],
    )

    operation = database_admin_api.create_database(request=request)

    print("Waiting for operation to complete...")
    database = operation.result(OPERATION_TIMEOUT_SECONDS)

    print(
        "Created database {} on instance {}".format(
            database.name,
            database_admin_api.instance_path(spanner_client.project, instance_id),
        )
    )

Ruby

Informationen zum Installieren und Verwenden der Clientbibliothek für Spanner finden Sie unter Spanner-Clientbibliotheken.

Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Spanner zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

# project_id  = "Your Google Cloud project ID"
# instance_id = "Your Spanner instance ID"
# database_id = "Your Spanner database ID"

require "google/cloud/spanner"
require "google/cloud/spanner/admin/database"

database_admin_client = Google::Cloud::Spanner::Admin::Database.database_admin

instance_path = database_admin_client.instance_path project: project_id, instance: instance_id

job = database_admin_client.create_database parent: instance_path,
                                            create_statement: "CREATE DATABASE `#{database_id}`",
                                            extra_statements: [
                                              "CREATE TABLE Singers (
      SingerId     INT64 NOT NULL,
      FirstName    STRING(1024),
      LastName     STRING(1024),
      SingerInfo   BYTES(MAX)
    ) PRIMARY KEY (SingerId)",

                                              "CREATE TABLE Albums (
      SingerId     INT64 NOT NULL,
      AlbumId      INT64 NOT NULL,
      AlbumTitle   STRING(MAX)
    ) PRIMARY KEY (SingerId, AlbumId),
    INTERLEAVE IN PARENT Singers ON DELETE CASCADE"
                                            ]

puts "Waiting for create database operation to complete"

job.wait_until_done!

puts "Created database #{database_id} on instance #{instance_id}"

Datenbankschema oder -optionen aktualisieren

Sie können das Datenbankschema und die Optionen mithilfe von DDL-Anweisungen aktualisieren.

Verwenden Sie beispielsweise die folgende DDL-Anweisung, um einer Tabelle eine Spalte hinzuzufügen:

GoogleSQL

ALTER TABLE Songwriters ADD COLUMN Publisher STRING(10);

PostgreSQL

ALTER TABLE Songwriters ADD COLUMN Publisher VARCHAR(10);

Verwenden Sie die folgende DDL-Anweisung, um die Version der Abfrageoptimierung zu aktualisieren:

GoogleSQL

ALTER DATABASE Music SET OPTIONS(optimizer_version=null);

PostgreSQL

ALTER DATABASE DB-NAME SET spanner.optimizer_version TO DEFAULT;

Weitere Informationen zu unterstützten Optionen finden Sie in der DDL-Referenz ALTER DATABASE für GoogleSQL oder PostgreSQL.

Informationen zu Schemaaktualisierungen finden Sie unter Schemaaktualisierungen vornehmen.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Instanzen auf.

    Instanzen

  2. Wählen Sie die Instanz mit der Datenbank aus, die geändert werden soll.

  3. Wählen Sie die Datenbank aus.

  4. Klicken Sie auf Spanner Studio.

  5. Klicken Sie auf Neuer Tab oder verwenden Sie den leeren Editor-Tab. Geben Sie dann die anzuwendenden DDL-Anweisungen ein.

  6. Klicken Sie auf Ausführen, um die Updates anzuwenden. Wenn die DDL Fehler enthält, gibt die Google Cloud Console einen Fehler zurück und die Datenbank wird nicht geändert.

gcloud

Verwenden Sie gcloud spanner databases ddl update, um eine Datenbank mit dem gcloud-Befehlszeilentool zu ändern.

gcloud spanner databases ddl update \
(DATABASE : --instance=INSTANCE) \
[--async] \
[--ddl=DDL] \
[--ddl-file=DDL_FILE] \

Weitere Informationen zu den verfügbaren Optionen finden Sie in der Referenz zu gcloud.

Übergeben Sie die Datenbankaktualisierungen an den Befehl mit dem Flag --ddl oder --ddl-file. Wenn eine DDL-Datei angegeben ist, wird das Flag --ddl ignoriert.

In der DDL-Referenz ALTER DATABASE für GoogleSQL oder PostgreSQL finden Sie die erforderlichen DDL-Anweisungen.

DDL

Weitere Informationen finden Sie in der DDL-Referenz ALTER DATABASE für GoogleSQL oder PostgreSQL.

Fortschritt von Schemaaktualisierungsvorgängen prüfen

Console

  1. Wählen Sie im Spanner-Navigationsmenü den Tab Vorgänge aus. Auf der Seite Vorgänge wird eine Liste der derzeit ausgeführten Vorgänge angezeigt.

  2. Suchen Sie in der Liste nach dem Schemavorgang. Wenn der Vorgang noch läuft, zeigt die Fortschrittsanzeige in der Spalte End time (Ende) den Prozentsatz des abgeschlossenen Vorgangs an, wie in der folgenden Abbildung dargestellt:

Screenshot der Fortschrittsanzeige mit 98%

gcloud

Verwenden Sie gcloud spanner operations describe, um den Fortschritt eines Vorgangs zu prüfen.

  1. Rufen Sie die Vorgangs-ID ab:

    gcloud spanner operations list --instance=INSTANCE-NAME \
    --database=DATABASE-NAME --type=DATABASE_UPDATE_DDL
    

    Ersetzen Sie Folgendes:

    • INSTANCE-NAME durch den Namen der Spanner-Instanz.
    • DATABASE-NAME durch den Namen der Datenbank.
  2. Führen Sie gcloud spanner operations describe aus.

    gcloud spanner operations describe OPERATION_ID\
    --instance=INSTANCE-NAME \
    --database=DATABASE-NAME
    

    Ersetzen Sie Folgendes:

    • OPERATION-ID: Die Vorgangs-ID des Vorgangs, den Sie prüfen möchten.
    • INSTANCE-NAME: Der Name der Spanner-Instanz.
    • DATABASE-NAME: Der Name der Spanner-Datenbank.

    Der Abschnitt progress in der Ausgabe zeigt den Prozentsatz des abgeschlossenen Vorgangs an. Die Ausgabe sieht dann ungefähr so aus:

    done: true
    metadata:
    ...
      progress:
      - endTime: '2022-03-01T00:28:06.691403Z'
        progressPercent: 100
        startTime: '2022-03-01T00:28:04.221401Z'
      - endTime: '2022-03-01T00:28:17.624588Z'
        startTime: '2022-03-01T00:28:06.691403Z'
        progressPercent: 100
    ...
    

REST Version 1

  1. Rufen Sie die Vorgangs-ID ab:

    gcloud spanner operations list --instance=INSTANCE-NAME \
    --database=DATABASE-NAME --type=DATABASE_UPDATE_DDL
    

    Ersetzen Sie Folgendes:

    • INSTANCE-NAME durch den Namen der Spanner-Instanz.
    • DATABASE-NAME durch den Datenbanknamen.
  2. Überprüfen Sie den Fortschritt des Vorgangs.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • project-id: die Projekt-ID
    • instance-id: Die Instanz-ID.
    • database-id: Die Datenbank-ID.
    • operation-id: Die Vorgangs-ID.

    HTTP-Methode und URL:

    GET https://spanner.googleapis.com/v1/projects/project-id/instances/instance-id/databases/database-id/operations/operation-id

    Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

    Sie sollten in etwa folgende JSON-Antwort erhalten:

    {
    ...
        "progress": [
          {
            "progressPercent": 100,
            "startTime": "2023-05-27T00:52:27.366688Z",
            "endTime": "2023-05-27T00:52:30.184845Z"
          },
          {
            "progressPercent": 100,
            "startTime": "2023-05-27T00:52:30.184845Z",
            "endTime": "2023-05-27T00:52:40.750959Z"
          }
        ],
    ...
      "done": true,
      "response": {
        "@type": "type.googleapis.com/google.protobuf.Empty"
      }
    }
    
    

Wenn der Vorgang zu lange dauert, können Sie ihn abbrechen. Weitere Informationen finden Sie unter Lang andauernden Datenbankvorgang abbrechen.

Datenbank löschen

Durch das Löschen einer Datenbank werden die Datenbank und alle zugehörigen Daten endgültig entfernt. Das Löschen der Datenbank kann nicht rückgängig gemacht werden. Wenn der Datenbanklöschschutz für eine Datenbank aktiviert ist, können Sie diese Datenbank erst löschen, wenn Sie den Löschschutz deaktivieren.

Vorhandene Sicherungen werden beim Löschen einer Datenbank nicht gelöscht. Weitere Informationen finden Sie unter Sichern und wiederherstellen.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Instanzen auf.

    Instanzen

  2. Wählen Sie die Instanz mit der zu löschenden Datenbank aus.

  3. Wählen Sie die Datenbank aus.

  4. Klicken Sie auf Datenbank löschen. Eine Bestätigung wird angezeigt.

  5. Geben Sie den Datenbanknamen ein und klicken Sie auf Löschen.

gcloud

Zum Löschen einer Datenbank mit dem gcloud-Befehlszeilentool verwenden Sie gcloud spanner databases delete.

gcloud spanner databases delete \
  (DATABASE : --instance=INSTANCE)

Folgende Optionen sind erforderlich:

DATABASE
ID der Datenbank oder voll qualifizierte Kennung für die Datenbank. Wenn die voll qualifizierte ID angegeben ist, muss das Flag --instance weggelassen werden.
--instance=INSTANCE
Die Spanner-Instanz für die Datenbank.

Weitere Informationen finden Sie in der Referenz zu gcloud.

DDL

DDL unterstützt keine Syntax zum Löschen von Datenbanken.

Nächste Schritte