Creazione e gestione delle istanze

Questa pagina descrive come creare, elencare, modificare ed eliminare le istanze Spanner.

Creazione di un'istanza

Puoi creare un'istanza con la console Google Cloud, Google Cloud CLI o le librerie client. Puoi anche creare un'istanza con una configurazione dell'istanza personalizzata aggiungendo repliche di sola lettura facoltative.

Console

  1. Vai alla pagina Crea un'istanza nella console Google Cloud.

    Crea un'istanza

  2. Inserisci un Nome istanza da visualizzare nella console Google Cloud. Il nome dell'istanza deve essere univoco all'interno del progetto Google Cloud.

  3. Inserisci un ID istanza per identificare in modo permanente l'istanza. Inoltre, l'ID istanza deve essere univoco all'interno del progetto Google Cloud. Non puoi modificare l'ID istanza in un secondo momento.

  4. Nella sezione Scegli una configurazione, fai clic su A livello di regione o Più regioni. In alternativa, se vuoi confrontare le specifiche tra due aree geografiche, fai clic su Confronta configurazioni regioni.

  5. Seleziona una configurazione dal menu a discesa.

  6. (Facoltativo) Aggiungi repliche di sola lettura per scalare le letture e supportare le letture inattive a bassa latenza. Quando crei e aggiungi una replica di sola lettura alla configurazione di un'istanza utilizzando la console Google Cloud, la configurazione personalizzata dell'istanza viene creata automaticamente. Per aggiungere una replica di sola lettura:

    1. Espandi Configura repliche di sola lettura.

    2. Fai clic su Aggiungi replica di sola lettura.

    3. Seleziona una regione e un numero.

  7. Nella sezione Configura capacità di calcolo, in Seleziona unità, fai clic su una delle seguenti opzioni:

    • Unità di elaborazione per istanze di piccole dimensioni.
    • Nodi per istanze di grandi dimensioni. Un nodo equivale a 1000 unità di elaborazione.

    Per ulteriori informazioni, consulta Capacità di calcolo, nodi e unità di elaborazione.

  8. In Scegli una modalità di scalabilità, fai clic su una delle seguenti opzioni:

    • Allocazione manuale se vuoi impostare manualmente la capacità di calcolo per risorse e costi di calcolo fissi.

      • Quantità indica il numero di unità o nodi di elaborazione da utilizzare per questa istanza.
    • Scalabilità automatica (anteprima), per consentire a Spanner di aggiungere e rimuovere automaticamente capacità di calcolo. Per ulteriori informazioni sul gestore della scalabilità automatica gestito, consulta Gestore della scalabilità automatica per Spanner. Configura le seguenti opzioni del gestore della scalabilità automatica gestito:

  9. Fai clic sul pulsante Crea per creare l'istanza.

gcloud

Utilizza il comando gcloud spanner instances create per creare un'istanza. Specifica la capacità di calcolo come il numero di nodi o unità di elaborazione che vuoi per l'istanza.

gcloud spanner instances create INSTANCE-ID \
--config=INSTANCE-CONFIG \
--description=INSTANCE-DESCRIPTION \
--nodes=NODE-COUNT

o

gcloud spanner instances create INSTANCE-ID \
--config=INSTANCE-CONFIG \
--description=INSTANCE-DESCRIPTION \
--processing-units=PROCESSING-UNIT-COUNT

Sostituisci quanto segue:

  • INSTANCE-ID: un identificatore permanente univoco all'interno del progetto Google Cloud. Non puoi modificare l'ID istanza in un secondo momento.
  • INSTANCE-CONFIG: un identificatore permanente della configurazione dell'istanza, che definisce la posizione geografica dell'istanza e influisce sul modo in cui i dati vengono replicati. Per le configurazioni di istanze personalizzate, inizia con custom-. Per maggiori informazioni, consulta la pagina relativa alle configurazioni delle istanze.
  • INSTANCE-DESCRIPTION: il nome da visualizzare per l'istanza nella console Google Cloud. Il nome dell'istanza deve essere univoco all'interno del progetto Google Cloud.
  • NODE-COUNT: la capacità di calcolo dell'istanza, espressa come numero di nodi. Ogni nodo equivale a 1000 unità di elaborazione.

  • PROCESSING-UNIT-COUNT: la capacità di calcolo dell'istanza, espressa come numero di unità di elaborazione. Inserisci quantità fino a 1000 in multipli di 100 (100, 200, 300 e così via) e inserisci le quantità maggiori in multipli di 1000 (1000, 2000, 3000 e così via). Nota: non utilizzare questo parametro se stai creando un'istanza che intendi abilitare in seguito con il gestore della scalabilità automatica gestito.

Aggiungi scalabilità automatica gestita (anteprima)

Puoi anche configurare nuove istanze in modo da utilizzare la scalabilità automatica gestita con il comando gcloud beta spanner instances create. Per maggiori informazioni, consulta Gestore della scalabilità automatica gestito per Spanner.

Utilizza il comando seguente per creare un'istanza con il gestore della scalabilità automatica gestito.

  gcloud beta spanner instances create INSTANCE-ID \
    --config=INSTANCE-CONFIG \
    --description=INSTANCE-DESCRIPTION \
    --autoscaling-min-processing-units=MINIMUM_PROCESSING_UNITS \
    --autoscaling-max-processing-units=MAXIMUM_PROCESSING_UNITS \
    --autoscaling-high-priority-cpu-target=CPU_PERCENTAGE \
    --autoscaling-storage-target=STORAGE_PERCENTAGE

o

  gcloud beta spanner instances create INSTANCE-ID \
    --config=INSTANCE-CONFIG \
    --description=INSTANCE-DESCRIPTION \
    --autoscaling-min-nodes=MINIMUM_NODES \
    --autoscaling-max-nodes=MAXIMUM_NODES \
    --autoscaling-high-priority-cpu-target=CPU_PERCENTAGE \
    --autoscaling-storage-target=STORAGE_PERCENTAGE

Sostituisci quanto segue:

  • INSTANCE-ID: un identificatore permanente univoco all'interno del tuo progetto Google Cloud. Non puoi modificare l'ID istanza in un secondo momento.
  • INSTANCE-CONFIG: un identificatore permanente della configurazione dell'istanza, che definisce la posizione geografica dell'istanza e influisce sul modo in cui i dati vengono replicati. Per le configurazioni di istanze personalizzate, inizia con custom-. Per maggiori informazioni, consulta la pagina relativa alle configurazioni delle istanze.
  • INSTANCE-DESCRIPTION: il nome da visualizzare per l'istanza nella console Google Cloud. Il nome dell'istanza deve essere univoco all'interno del progetto Google Cloud.
  • MINIMUM_PROCESSING_UNITS, MINIMUM_NODES: il numero minimo di unità o nodi di elaborazione durante lo scale down. Per ulteriori informazioni, consulta Determinare il limite minimo.
  • MAXIMUM_PROCESSING_UNITS, MAXIMUM_NODES: il numero massimo di unità o nodi di elaborazione durante lo scale up. Per scoprire di più, consulta Determinare il limite massimo.
  • CPU_PERCENTAGE: la percentuale target di CPU ad alta priorità da utilizzare, dal 10 al 90%. Se ottimizzi per i costi, utilizza una percentuale più elevata. Per maggiori informazioni, consulta Determinare il target di utilizzo della CPU.
  • STORAGE_PERCENTAGE: percentuale target di spazio di archiviazione da utilizzare, dal 10 al 99%. Per maggiori informazioni, consulta Determinare il target di utilizzo dello spazio di archiviazione.

Esempi di utilizzo di configurazioni personalizzate

Per creare un'istanza test-instance nella configurazione dell'istanza regionale di base us-central1, esegui:

gcloud spanner instances create test-instance --config=regional-us-central1 \
  --description="Test Instance" --nodes=1

Per creare un'istanza custom-eur6-instance nella configurazione dell'istanza multiregionale personalizzata custom-eur6, devi prima creare una configurazione dell'istanza personalizzata.

Dopodiché, esegui:

  gcloud spanner instances create custom-eur6-instance --config=custom-eur6 \
      --description="Instance with custom read-only" --nodes=1

Dopo aver eseguito uno dei comandi precedenti, dovresti visualizzare un messaggio simile al seguente:

Creating instance...done.

C++

Per scoprire come installare e utilizzare la libreria client per Spanner, consulta librerie client di Spanner.

Per eseguire l'autenticazione su Spanner, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

void CreateInstance(google::cloud::spanner_admin::InstanceAdminClient client,
                    std::string const& project_id,
                    std::string const& instance_id,
                    std::string const& display_name,
                    std::string const& config_id) {
  namespace spanner = ::google::cloud::spanner;
  spanner::Instance in(project_id, instance_id);

  auto project = google::cloud::Project(project_id);
  std::string config_name =
      project.FullName() + "/instanceConfigs/" + config_id;
  auto instance =
      client
          .CreateInstance(spanner::CreateInstanceRequestBuilder(in, config_name)
                              .SetDisplayName(display_name)
                              .SetNodeCount(1)
                              .SetLabels({{"cloud_spanner_samples", "true"}})
                              .Build())
          .get();
  if (!instance) throw std::move(instance).status();
  std::cout << "Created instance [" << in << "]:\n" << instance->DebugString();
}

C#

Per scoprire come installare e utilizzare la libreria client per Spanner, consulta librerie client di Spanner.

Per eseguire l'autenticazione su Spanner, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.


using Google.Api.Gax.ResourceNames;
using Google.Cloud.Spanner.Admin.Instance.V1;
using Google.Cloud.Spanner.Common.V1;
using Google.LongRunning;
using System;

public class CreateInstanceSample
{
    public Instance CreateInstance(string projectId, string instanceId)
    {
        // Create the InstanceAdminClient instance.
        InstanceAdminClient instanceAdminClient = InstanceAdminClient.Create();

        // Initialize request parameters.
        Instance instance = new Instance
        {
            InstanceName = InstanceName.FromProjectInstance(projectId, instanceId),
            ConfigAsInstanceConfigName = InstanceConfigName.FromProjectInstanceConfig(projectId, "regional-us-central1"),
            DisplayName = "This is a display name.",
            NodeCount = 1,
            Labels =
            {
                { "cloud_spanner_samples", "true" },
            }
        };
        ProjectName projectName = ProjectName.FromProject(projectId);

        // Make the CreateInstance request.
        Operation<Instance, CreateInstanceMetadata> response = instanceAdminClient.CreateInstance(projectName, instanceId, instance);

        Console.WriteLine("Waiting for the operation to finish.");

        // Poll until the returned long-running operation is complete.
        Operation<Instance, CreateInstanceMetadata> completedResponse = response.PollUntilCompleted();

        if (completedResponse.IsFaulted)
        {
            Console.WriteLine($"Error while creating instance: {completedResponse.Exception}");
            throw completedResponse.Exception;
        }

        Console.WriteLine($"Instance created successfully.");

        return completedResponse.Result;
    }
}

Go

Per scoprire come installare e utilizzare la libreria client per Spanner, consulta librerie client di Spanner.

Per eseguire l'autenticazione su Spanner, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

import (
	"context"
	"fmt"
	"io"

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

func createInstance(w io.Writer, projectID, instanceID string) error {
	// projectID := "my-project-id"
	// instanceID := "my-instance"
	ctx := context.Background()
	instanceAdmin, err := instance.NewInstanceAdminClient(ctx)
	if err != nil {
		return err
	}
	defer instanceAdmin.Close()

	op, err := instanceAdmin.CreateInstance(ctx, &instancepb.CreateInstanceRequest{
		Parent:     fmt.Sprintf("projects/%s", projectID),
		InstanceId: instanceID,
		Instance: &instancepb.Instance{
			Config:      fmt.Sprintf("projects/%s/instanceConfigs/%s", projectID, "regional-us-central1"),
			DisplayName: instanceID,
			NodeCount:   1,
			Labels:      map[string]string{"cloud_spanner_samples": "true"},
		},
	})
	if err != nil {
		return fmt.Errorf("could not create instance %s: %w", fmt.Sprintf("projects/%s/instances/%s", projectID, instanceID), err)
	}
	// Wait for the instance creation to finish.
	i, err := op.Wait(ctx)
	if err != nil {
		return fmt.Errorf("waiting for instance creation to finish failed: %w", err)
	}
	// The instance may not be ready to serve yet.
	if i.State != instancepb.Instance_READY {
		fmt.Fprintf(w, "instance state is not READY yet. Got state %v\n", i.State)
	}
	fmt.Fprintf(w, "Created instance [%s]\n", instanceID)
	return nil
}

Crea un'istanza con scalabilità automatica gestita utilizzando Go (anteprima)

import (
	"context"
	"fmt"
	"io"

	instance "cloud.google.com/go/spanner/admin/instance/apiv1"
	"cloud.google.com/go/spanner/admin/instance/apiv1/instancepb"
	"google.golang.org/genproto/protobuf/field_mask"
)

// Example of creating an autoscaling instance with Go.
// projectID is the ID of the project that the new instance will be in.
// instanceID is the ID of the new instance to be created.
func createInstanceWithAutoscalingConfig(w io.Writer, projectID, instanceID string) error {
	// projectID := "my-project-id"
	// instanceID := "my-instance"
	ctx := context.Background()
	instanceAdmin, err := instance.NewInstanceAdminClient(ctx)
	if err != nil {
		return fmt.Errorf("could not create instance admin client for project %s: %w", projectID, err)
	}
	defer instanceAdmin.Close()

	instanceName := fmt.Sprintf("projects/%s/instances/%s", projectID, instanceID)
	fmt.Fprintf(w, "Creating instance %s.", instanceName)

	op, err := instanceAdmin.CreateInstance(ctx, &instancepb.CreateInstanceRequest{
		Parent:     fmt.Sprintf("projects/%s", projectID),
		InstanceId: instanceID,
		Instance: &instancepb.Instance{
			Config:      fmt.Sprintf("projects/%s/instanceConfigs/%s", projectID, "regional-us-central1"),
			DisplayName: "Create instance example",
			AutoscalingConfig: &instancepb.AutoscalingConfig{
				AutoscalingLimits: &instancepb.AutoscalingConfig_AutoscalingLimits{
					MinLimit: &instancepb.AutoscalingConfig_AutoscalingLimits_MinNodes{
						MinNodes: 1,
					},
					MaxLimit: &instancepb.AutoscalingConfig_AutoscalingLimits_MaxNodes{
						MaxNodes: 2,
					},
				},
				AutoscalingTargets: &instancepb.AutoscalingConfig_AutoscalingTargets{
					HighPriorityCpuUtilizationPercent: 65,
					StorageUtilizationPercent:         95,
				},
			},
			Labels: map[string]string{"cloud_spanner_samples": "true"},
		},
	})
	if err != nil {
		return fmt.Errorf("could not create instance %s: %w", instanceName, err)
	}
	fmt.Fprintf(w, "Waiting for operation on %s to complete...", instanceID)
	// Wait for the instance creation to finish.
	i, err := op.Wait(ctx)
	if err != nil {
		return fmt.Errorf("waiting for instance creation to finish failed: %w", err)
	}
	// The instance may not be ready to serve yet.
	if i.State != instancepb.Instance_READY {
		fmt.Fprintf(w, "instance state is not READY yet. Got state %v\n", i.State)
	}
	fmt.Fprintf(w, "Created instance [%s].\n", instanceID)

	instance, err := instanceAdmin.GetInstance(ctx, &instancepb.GetInstanceRequest{
		Name: instanceName,
		// Get the autoscaling_config field from the newly created instance.
		FieldMask: &field_mask.FieldMask{Paths: []string{"autoscaling_config"}},
	})
	if err != nil {
		return fmt.Errorf("failed to get instance [%s]: %w", instanceName, err)
	}
	fmt.Fprintf(w, "Instance %s has autoscaling_config: %s.", instanceID, instance.AutoscalingConfig)
	return nil
}

Java

Per scoprire come installare e utilizzare la libreria client per Spanner, consulta librerie client di Spanner.

Per eseguire l'autenticazione su Spanner, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.


import com.google.cloud.spanner.Spanner;
import com.google.cloud.spanner.SpannerOptions;
import com.google.cloud.spanner.admin.instance.v1.InstanceAdminClient;
import com.google.spanner.admin.instance.v1.CreateInstanceRequest;
import com.google.spanner.admin.instance.v1.Instance;
import com.google.spanner.admin.instance.v1.InstanceConfigName;
import com.google.spanner.admin.instance.v1.ProjectName;
import java.util.concurrent.ExecutionException;

class CreateInstanceExample {

  static void createInstance() {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "my-project";
    String instanceId = "my-instance";
    createInstance(projectId, instanceId);
  }

  static void createInstance(String projectId, String instanceId) {
    // Set Instance configuration.
    int nodeCount = 2;
    String displayName = "Descriptive name";

    // Create an Instance object that will be used to create the instance.
    Instance instance =
        Instance.newBuilder()
            .setDisplayName(displayName)
            .setNodeCount(nodeCount)
            .setConfig(
                InstanceConfigName.of(projectId, "regional-us-central1").toString())
            .build();

    try (Spanner spanner =
        SpannerOptions.newBuilder()
            .setProjectId(projectId)
            .build()
            .getService();
        InstanceAdminClient instanceAdminClient = spanner.createInstanceAdminClient()) {

      // Wait for the createInstance operation to finish.
      Instance createdInstance = instanceAdminClient.createInstanceAsync(
          CreateInstanceRequest.newBuilder()
              .setParent(ProjectName.of(projectId).toString())
              .setInstanceId(instanceId)
              .setInstance(instance)
              .build()).get();
      System.out.printf("Instance %s was successfully created%n", createdInstance.getName());
    } catch (ExecutionException e) {
      System.out.printf(
          "Error: Creating instance %s failed with error message %s%n",
          instance.getName(), e.getMessage());
    } catch (InterruptedException e) {
      System.out.println("Error: Waiting for createInstance operation to finish was interrupted");
    }
  }
}

Crea un'istanza con scalabilità automatica gestita utilizzando Java (anteprima)


import com.google.cloud.spanner.Spanner;
import com.google.cloud.spanner.SpannerOptions;
import com.google.cloud.spanner.admin.instance.v1.InstanceAdminClient;
import com.google.spanner.admin.instance.v1.AutoscalingConfig;
import com.google.spanner.admin.instance.v1.CreateInstanceRequest;
import com.google.spanner.admin.instance.v1.Instance;
import com.google.spanner.admin.instance.v1.InstanceConfigName;
import com.google.spanner.admin.instance.v1.ProjectName;
import java.util.concurrent.ExecutionException;

class CreateInstanceWithAutoscalingConfigExample {

  static void createInstance() {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "my-project";
    String instanceId = "my-instance";
    createInstance(projectId, instanceId);
  }

  static void createInstance(String projectId, String instanceId) {
    try (Spanner spanner =
        SpannerOptions.newBuilder()
            .setProjectId(projectId)
            .build()
            .getService();
        InstanceAdminClient instanceAdminClient = spanner.createInstanceAdminClient()) {
      // Set Instance configuration.
      String configId = "regional-us-central1";
      String displayName = "Descriptive name";

      // Create an autoscaling config.
      // When autoscaling_config is enabled, node_count and processing_units fields
      // need not be specified.
      AutoscalingConfig autoscalingConfig =
          AutoscalingConfig.newBuilder()
              .setAutoscalingLimits(
                  AutoscalingConfig.AutoscalingLimits.newBuilder().setMinNodes(1).setMaxNodes(2))
              .setAutoscalingTargets(
                  AutoscalingConfig.AutoscalingTargets.newBuilder()
                      .setHighPriorityCpuUtilizationPercent(65)
                      .setStorageUtilizationPercent(95))
              .build();
      Instance instance =
          Instance.newBuilder()
              .setAutoscalingConfig(autoscalingConfig)
              .setDisplayName(displayName)
              .setConfig(
                  InstanceConfigName.of(projectId, configId).toString())
              .build();

      // Creates a new instance
      System.out.printf("Creating instance %s.%n", instanceId);
      try {
        // Wait for the createInstance operation to finish.
        Instance instanceResult = instanceAdminClient.createInstanceAsync(
            CreateInstanceRequest.newBuilder()
                .setParent(ProjectName.of(projectId).toString())
                .setInstanceId(instanceId)
                .setInstance(instance)
                .build()).get();
        System.out.printf("Autoscaler instance %s was successfully created%n",
            instanceResult.getName());
      } catch (ExecutionException e) {
        System.out.printf(
            "Error: Creating instance %s failed with error message %s%n",
            instance.getName(), e.getMessage());
      } catch (InterruptedException e) {
        System.out.println("Error: Waiting for createInstance operation to finish was interrupted");
      }
    }
  }
}

Node.js

Per scoprire come installare e utilizzare la libreria client per Spanner, consulta librerie client di Spanner.

Per eseguire l'autenticazione su Spanner, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.


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

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

const instanceAdminClient = await spanner.getInstanceAdminClient();
/**
 * TODO(developer): Uncomment the following lines before running the sample.
 **/
// const projectId = 'my-project-id';
// const instanceId = 'my-instance';

// Creates a new instance
try {
  console.log(
    `Creating instance ${instanceAdminClient.instancePath(
      projectId,
      instanceId
    )}.`
  );
  const [operation] = await instanceAdminClient.createInstance({
    instanceId: instanceId,
    parent: instanceAdminClient.projectPath(projectId),
    instance: {
      config: instanceAdminClient.instanceConfigPath(
        projectId,
        'regional-us-central1'
      ),
      nodeCount: 1,
      displayName: 'Display name for the instance.',
      labels: {
        cloud_spanner_samples: 'true',
        created: Math.round(Date.now() / 1000).toString(), // current time
      },
    },
  });

  console.log(`Waiting for operation on ${instanceId} to complete...`);
  await operation.promise();

  console.log(`Created instance ${instanceId}.`);
} catch (err) {
  console.error('ERROR:', err);
}

PHP

Per scoprire come installare e utilizzare la libreria client per Spanner, consulta librerie client di Spanner.

Per eseguire l'autenticazione su Spanner, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

use Google\Cloud\Spanner\Admin\Instance\V1\Client\InstanceAdminClient;
use Google\Cloud\Spanner\Admin\Instance\V1\CreateInstanceRequest;
use Google\Cloud\Spanner\Admin\Instance\V1\Instance;

/**
 * Creates an instance.
 * Example:
 * ```
 * create_instance($projectId, $instanceId);
 * ```
 *
 * @param string $projectId  The Spanner project ID.
 * @param string $instanceId The Spanner instance ID.
 */
function create_instance(string $projectId, string $instanceId): void
{
    $instanceAdminClient = new InstanceAdminClient();
    $parent = InstanceAdminClient::projectName($projectId);
    $instanceName = InstanceAdminClient::instanceName($projectId, $instanceId);
    $configName = $instanceAdminClient->instanceConfigName($projectId, 'regional-us-central1');
    $instance = (new Instance())
        ->setName($instanceName)
        ->setConfig($configName)
        ->setDisplayName('dispName')
        ->setNodeCount(1);

    $operation = $instanceAdminClient->createInstance(
        (new CreateInstanceRequest())
        ->setParent($parent)
        ->setInstanceId($instanceId)
        ->setInstance($instance)
    );

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

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

Python

Per scoprire come installare e utilizzare la libreria client per Spanner, consulta librerie client di Spanner.

Per eseguire l'autenticazione su Spanner, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

def create_instance(instance_id):
    """Creates an instance."""
    from google.cloud.spanner_admin_instance_v1.types import \
        spanner_instance_admin

    spanner_client = spanner.Client()

    config_name = "{}/instanceConfigs/regional-us-central1".format(
        spanner_client.project_name
    )

    operation = spanner_client.instance_admin_api.create_instance(
        parent=spanner_client.project_name,
        instance_id=instance_id,
        instance=spanner_instance_admin.Instance(
            config=config_name,
            display_name="This is a display name.",
            node_count=1,
            labels={
                "cloud_spanner_samples": "true",
                "sample_name": "snippets-create_instance-explicit",
                "created": str(int(time.time())),
            },
        ),
    )

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

    print("Created instance {}".format(instance_id))

Ruby

Per scoprire come installare e utilizzare la libreria client per Spanner, consulta librerie client di Spanner.

Per eseguire l'autenticazione su Spanner, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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

require "google/cloud/spanner"
require "google/cloud/spanner/admin/instance"

instance_admin_client = Google::Cloud::Spanner::Admin::Instance.instance_admin

project_path = instance_admin_client.project_path project: project_id
instance_path = instance_admin_client.instance_path project: project_id, instance: instance_id
instance_config_path = instance_admin_client.instance_config_path project: project_id, instance_config: "regional-us-central1"

job = instance_admin_client.create_instance parent: project_path,
                                            instance_id: instance_id,
                                            instance: { name: instance_path,
                                                        config: instance_config_path,
                                                        display_name: instance_id,
                                                        node_count: 2,
                                                        labels: { cloud_spanner_samples: "true" } }

puts "Waiting for create instance operation to complete"

job.wait_until_done!

if job.error?
  puts job.error
else
  puts "Created instance #{instance_id}"
end

Elenca istanze

Puoi mostrare un elenco delle tue istanze Spanner.

Console

Vai alla pagina Istanze Spanner nella console Google Cloud.

Vai alla pagina Istanze

La console Google Cloud mostra un elenco delle tue istanze Spanner, insieme all'ID, al nome visualizzato, alla configurazione e alla capacità di calcolo di ogni istanza, espresse sia nelle unità di elaborazione che nei nodi.

gcloud

Utilizza il comando gcloud spanner instances list:

gcloud spanner instances list

L'interfaccia a riga di comando gcloud stampa un elenco delle istanze Spanner, insieme a ID, nome visualizzato, configurazione e capacità di calcolo di ogni istanza.

Modifica un'istanza

Le seguenti sezioni spiegano come modificare il nome visualizzato e la capacità di calcolo di un'istanza. Non puoi modificare l'ID istanza o la configurazione dell'istanza.

Modificare il nome visualizzato

Console

  1. Vai alla pagina Istanze Spanner nella console Google Cloud.

    Vai alla pagina Istanze

  2. Fai clic sul nome dell'istanza che vuoi rinominare.

  3. Fai clic su Modifica istanza.

  4. Inserisci un nuovo nome istanza. Questo nome deve essere univoco all'interno del progetto Google Cloud.

  5. Fai clic su Salva.

gcloud

Utilizza il comando gcloud spanner instances update:

gcloud spanner instances update INSTANCE-ID --description=INSTANCE-NAME

Sostituisci quanto segue:

  • INSTANCE-ID: l'identificatore permanente dell'istanza.
  • INSTANCE-NAME: il nome da visualizzare per l'istanza nella console Google Cloud. Il nome dell'istanza deve essere univoco all'interno del progetto Google Cloud.

Modifica la capacità di calcolo

Devi eseguire il provisioning di capacità di calcolo sufficiente per mantenere l'utilizzo della CPU e l'utilizzo dello spazio di archiviazione al di sotto dei valori massimi consigliati. Per ulteriori informazioni, consulta Quote e limiti per Spanner.

In alcuni casi non è possibile ridurre la capacità di calcolo di un'istanza esistente:

  • Per rimuovere la capacità di calcolo, l'istanza potrebbe archiviare più di 4 TB di dati per 1000 unità di elaborazione (1 nodo).
  • In base ai tuoi pattern di utilizzo storici, Spanner ha creato un numero elevato di sezioni per i dati dell'istanza e, in alcuni rari casi, Spanner non sarebbe in grado di gestire le suddivisioni dopo aver rimosso la capacità di calcolo.

Nel secondo caso, potresti provare a ridurre la capacità di calcolo di quantità progressivamente ridotte fino a trovare la capacità minima necessaria a Spanner per gestire tutte le suddivisioni dell'istanza. Se l'istanza non richiede più così tante suddivisioni a causa di una modifica nei pattern di utilizzo, Spanner potrebbe alla fine unire alcune suddivisioni e consentirti di provare a ridurre ulteriormente la capacità di calcolo dell'istanza dopo una o due settimane.

Quando rimuovi la capacità di calcolo, monitora l'utilizzo della CPU e le latenze delle richieste in Cloud Monitoring per assicurarti che l'utilizzo della CPU rimanga al di sotto del 65% per le istanze a livello di regione e del 45% per ogni regione nelle istanze multiregionali. Potresti riscontrare un aumento temporaneo della latenza delle richieste durante la rimozione della capacità di calcolo.

Se vuoi aumentare la capacità di calcolo di un'istanza, il progetto Google Cloud deve avere una quota sufficiente per aggiungere la capacità di calcolo.

Console

  1. Vai alla pagina Istanze Spanner nella console Google Cloud.

    Vai alla pagina Istanze

  2. Fai clic sul nome dell'istanza che vuoi modificare.

  3. Fai clic su Modifica istanza.

  4. Modifica la capacità di calcolo scegliendo le unità di misura (unità di elaborazione o nodi) e inserendo una quantità. Quando utilizzi le unità di elaborazione, inserisci quantità fino a 1000 in multipli di 100 (100, 200, 300 e così via) e inserisci quantità maggiori in multipli di 1000 (1000, 2000, 3000 e così via). Ogni nodo equivale a 1000 unità di elaborazione.

  5. Fai clic su Salva.

Se viene visualizzata una finestra di dialogo che indica che la quota non è sufficiente per aggiungere capacità di calcolo in questa località, segui le istruzioni per richiedere una quota più alta.

gcloud

Utilizza il comando gcloud spanner instances update. Quando utilizzi questo comando, specifica la capacità di calcolo come numero di nodi o unità di elaborazione.

gcloud spanner instances update INSTANCE-ID --nodes=NODE-COUNT

o

gcloud spanner instances update INSTANCE-ID
--processing-units=PROCESSING-UNIT-COUNT

Sostituisci quanto segue:

  • INSTANCE-ID: l'identificatore permanente dell'istanza.
  • NODE-COUNT: la capacità di calcolo dell'istanza, espressa come numero di nodi. Ogni nodo equivale a 1000 unità di elaborazione.
  • PROCESSING-UNIT-COUNT: la capacità di calcolo dell'istanza, espressa come numero di unità di elaborazione. Inserisci quantità fino a 1000 in multipli di 100 (100, 200, 300 e così via) e inserisci le quantità maggiori in multipli di 1000 (1000, 2000, 3000 e così via).

Abilita o modifica il gestore della scalabilità automatica gestito su un'istanza

Quando aggiungi o modifichi la funzionalità di scalabilità automatica gestita su un'istanza esistente, si applicano le seguenti limitazioni:

  • Non puoi abilitare il gestore della scalabilità automatica su un'istanza che stai spostando.
  • Non puoi spostare un'istanza mentre è abilitato il gestore della scalabilità automatica.

Console

  1. Vai alla pagina Istanze Spanner nella console Google Cloud.

    Vai alla pagina Istanze

  2. Fai clic sul nome dell'istanza per cui vuoi abilitare il gestore della scalabilità automatica.

  3. Fai clic su Modifica istanza.

  4. In Configura capacità di calcolo, fai clic su Scalabilità automatica.

  5. Per Minimo, seleziona il limite minimo da utilizzare per lo scale down. Per maggiori informazioni, consulta Stabilire il limite minimo.

  6. Per Massimo, seleziona il limite massimo da utilizzare per lo scale up. Per saperne di più, consulta Stabilire il limite massimo.

  7. Per Target di utilizzo della CPU ad alta priorità, seleziona la percentuale di CPU ad alta priorità da utilizzare. Per maggiori informazioni, consulta Determinare il target di utilizzo della CPU.

  8. In Target di utilizzo dello spazio di archiviazione, seleziona la percentuale di spazio di archiviazione da utilizzare. Per maggiori informazioni, consulta Determinare il target di utilizzo dello spazio di archiviazione.

  9. Fai clic su Salva.

gcloud

Utilizza il comando gcloud beta spanner instances update per aggiungere il gestore della scalabilità automatica gestito a un'istanza. Per ulteriori informazioni e limitazioni, consulta la pagina relativa ai flag e limitazioni di Google Cloud CLI.

Puoi aggiungere il gestore della scalabilità automatica con il seguente comando:

  gcloud beta spanner instances update \
    --autoscaling-min-processing-units=MINIMUM_PROCESSING_UNITS \
    --autoscaling-max-processing-units=MAXIMUM_PROCESSING_UNITS \
    --autoscaling-high-priority-cpu-target=CPU_PERCENTAGE \
    --autoscaling-storage-target=STORAGE_PERCENTAGE

o

  gcloud beta spanner instances update \
    --autoscaling-min-processing-units=MINIMUM_NODES \
    --autoscaling-max-processing-units=MAXIMUM_NODES \
    --autoscaling-high-priority-cpu-target=CPU_PERCENTAGE \
    --autoscaling-storage-target=STORAGE_PERCENTAGE

Sostituisci quanto segue:

  • MINIMUM_PROCESSING_UNITS, MINIMUM_NODES: il numero minimo di unità di elaborazione o nodi di elaborazione da utilizzare durante lo scale down. Per maggiori informazioni, consulta Stabilire il limite minimo.
  • MAXIMUM_PROCESSING_UNITS, MAXIMUM_NODES: il numero massimo di unità di elaborazione o nodi da utilizzare per lo scale up. Per ulteriori informazioni, consulta Stabilire il limite massimo.
  • CPU_PERCENTAGE: la percentuale target di CPU ad alta priorità da utilizzare, dal 10% al 90%. Se ottimizzi per i costi e non hai bisogno di una bassa latenza per tutte le richieste, utilizza una percentuale più alta. Per saperne di più, consulta Determinare il target di utilizzo della CPU.
  • STORAGE_PERCENTAGE: percentuale target di spazio di archiviazione da utilizzare, dal 10% al 99%. Per maggiori informazioni, consulta Determinare il target di utilizzo dello spazio di archiviazione.

Dopo aver aggiunto il gestore della scalabilità automatica gestito a un'istanza, puoi anche modificare le impostazioni del gestore della scalabilità automatica. Ad esempio, se vuoi aumentare il numero massimo di unità di elaborazione a 10.000, esegui questo comando:

gcloud beta spanner instances update \
     --autoscaling-max-processing-units=10000

Modifica un'istanza dall'utilizzo del gestore della scalabilità automatica alla scalabilità manuale

Console

  1. Vai alla pagina Istanze Spanner nella console Google Cloud.

    Vai alla pagina Istanze

  2. Fai clic sul nome dell'istanza in cui vuoi disabilitare il gestore della scalabilità automatica.

  3. In Scegli una modalità di scalabilità, fai clic su Allocazione manuale.

  4. Fai clic su Salva.

gcloud

Utilizza il comando gcloud beta spanner instances update per aggiornare l'istanza.

Utilizza il seguente comando per modificare un'istanza dall'utilizzo del gestore della scalabilità automatica gestito alla scalabilità manuale:

  gcloud beta spanner instances update \
  --processing-units=PROCESSING-UNITS-COUNT

o

  gcloud beta spanner instances update \
  --nodes=NODE-COUNT

Sostituisci PROCESSING-UNIT-COUNT o NODE-COUNT con il numero di unità o nodi di elaborazione che vuoi utilizzare nell'istanza.

Etichetta un'istanza

Le etichette consentono di organizzare le risorse.

Console

  1. Vai alla pagina Istanze Spanner nella console Google Cloud.

    Vai alla pagina Istanze

  2. Seleziona la casella di controllo per l'istanza. Il riquadro Informazioni viene visualizzato sul lato destro della pagina.

  3. Fai clic sulla scheda Etichette nel riquadro Informazioni. Puoi quindi aggiungere, eliminare o aggiornare le etichette per l'istanza Spanner.

Sposta un'istanza

Per istruzioni su come spostare l'istanza da qualsiasi configurazione dell'istanza a qualsiasi altra configurazione dell'istanza, anche tra configurazioni a livello di una o più regioni, consulta Spostare un'istanza.

Elimina un'istanza

Puoi eliminare un'istanza con la console Google Cloud o con Google Cloud CLI.

Se vuoi eliminare un'istanza in cui sono presenti uno o più database con la protezione da eliminazione abilitata, devi prima disabilitare la protezione da eliminazione su tutti i database dell'istanza prima di poter eliminare l'istanza.

Console

  1. Vai alla pagina Istanze Spanner nella console Google Cloud.

    Vai alla pagina Istanze

  2. Fai clic sul nome dell'istanza che vuoi eliminare.

  3. Fai clic su Elimina istanza.

  4. Segui le istruzioni per confermare che vuoi eliminare l'istanza.

  5. Fai clic su Elimina.

gcloud

Utilizza il comando gcloud spanner instances delete, sostituendo INSTANCE-ID con l'ID istanza:

gcloud spanner instances delete INSTANCE-ID

Arresta o riavvia un'istanza

Spanner è un servizio di database completamente gestito che supervisiona le attività e le risorse sottostanti, tra cui il monitoraggio e il riavvio dei processi quando necessario, senza tempi di inattività. Poiché non è necessario arrestare o riavviare manualmente una determinata istanza, Spanner non offre un modo per farlo.

Passaggi successivi