Creazione e gestione delle istanze

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

Crea 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 definitivamente 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 Alloca capacità di calcolo, in Scegli una configurazione, seleziona A livello di regione o Più regioni. In alternativa, se vuoi confrontare le specifiche tra due regioni, fai clic su Confronta configurazioni per regioni.

  5. Seleziona una configurazione dal menu a discesa.

  6. (Facoltativo) Per aggiungere una replica di sola lettura a una configurazione di base di Spanner, crea prima una configurazione dell'istanza personalizzata utilizzando Google Cloud CLI.

  7. Nella sezione Alloca 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à, nodi e unità di elaborazione di calcolo.

  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à di elaborazione o nodi da utilizzare per questa istanza.
    • Scalabilità automatica (anteprima), per consentire a Spanner di aggiungere e rimuovere automaticamente la capacità di calcolo. Per saperne di più sul gestore della scalabilità automatica gestito, consulta la pagina relativa al gestore della scalabilità automatica gestito per Spanner. Configura le seguenti opzioni del gestore della scalabilità automatica gestite:

  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 numero di nodi o unità di elaborazione che vuoi nell'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 univoco permanente 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 saperne di più, consulta le 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 tuo progetto Google Cloud.
  • NODE-COUNT: capacità di calcolo dell'istanza, espressa come numero di nodi. Ciascun nodo equivale a 1000 unità di elaborazione.

  • PROCESSING-UNIT-COUNT: 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 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 con il gestore della scalabilità automatica gestito in un secondo momento.

Aggiungi scalabilità automatica gestita (anteprima)

Puoi anche configurare nuove istanze per utilizzare la scalabilità automatica gestita con il comando gcloud beta spanner instances create. Per maggiori informazioni, consulta Gestione 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 univoco permanente 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 saperne di più, consulta le 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 tuo progetto Google Cloud.
  • MINIMUM_PROCESSING_UNITS, MINIMUM_NODES: il numero minimo di unità di elaborazione o nodi durante lo scale down. Per ulteriori informazioni, consulta Determinazione del limite minimo.
  • MAXIMUM_PROCESSING_UNITS, MAXIMUM_NODES: il numero massimo di unità di elaborazione o nodi durante lo scale up. Per scoprire di più, consulta Determinazione del limite massimo.
  • CPU_PERCENTAGE: la percentuale target di CPU ad alta priorità da utilizzare, compresa tra 10 e 90%. Se ottimizzi per i costi, utilizza una percentuale più alta. Per maggiori informazioni, consulta Determinare il target di utilizzo della CPU.
  • STORAGE_PERCENTAGE: la 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 delle 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

Dovresti vedere un messaggio simile all'esempio seguente dopo aver eseguito uno dei comandi precedenti:

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 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 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 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 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 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 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 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 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 visualizzare 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 espressi sia in unità di elaborazione che in nodi.

gcloud

Utilizza il comando gcloud spanner instances list:

gcloud spanner instances list

Gcloud CLI stampa un elenco delle istanze Spanner, insieme all'ID, al nome visualizzato, alla configurazione e alla capacità di calcolo di ogni istanza.

Modifica un'istanza

Le sezioni seguenti 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 da 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 tuo progetto Google Cloud.

Modificare la capacità di calcolo

Devi eseguire il provisioning di una 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 dovrebbe archiviare più di 4 TB di dati per 1000 unità di elaborazione (1 nodo).
  • In base ai pattern di utilizzo storici, Spanner ha creato un numero elevato di split per i dati dell'istanza e, in alcuni rari casi, 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 più piccole fino a trovare la capacità minima necessaria a Spanner per gestire tutte le suddivisioni dell'istanza. Se l'istanza non richiede più molte suddivisioni a causa di una modifica dei 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 capacità di calcolo, monitora l'utilizzo della CPU e le latenze delle richieste in Cloud Monitoring per assicurarti che l'utilizzo della CPU rimanga inferiore al 65% per le istanze a livello di regione e al 45% per ogni regione nelle istanze multiregionali. Potresti riscontrare un aumento temporaneo delle latenze 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 capacità di calcolo. Il tempo necessario per il completamento della richiesta di aumento dipende dalle dimensioni della richiesta. Nella maggior parte dei casi, le richieste vengono completate entro pochi minuti. In rari casi, il completamento dello scale up può richiedere fino a un'ora.

Console

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

    Vai alla pagina Istanze

  2. Fai clic sul nome dell'istanza da modificare.

  3. Fai clic su Modifica istanza.

  4. Modifica la capacità di calcolo scegliendo le unità di misura (unità di elaborazione o nodi), quindi 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). Ciascun 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 superiore.

gcloud

Usa 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
[--async]

o

gcloud spanner instances update INSTANCE_ID
--processing-units=PROCESSING_UNIT_COUNT [--async]

Sostituisci quanto segue:

  • INSTANCE_ID: l'identificatore permanente dell'istanza.
  • NODE_COUNT: la capacità di calcolo dell'istanza, espressa come numero di nodi. Ciascun nodo equivale a 1000 unità di elaborazione.
  • PROCESSING_UNIT_COUNT: 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 quantità maggiori in multipli di 1000 (1000, 2000, 3000 e così via).

Flag facoltativi:

  • --async: utilizza questo flag se vuoi che la richiesta venga restituita immediatamente, senza attendere il completamento dell'operazione in corso. Puoi controllare lo stato della tua richiesta eseguendo gcloud spanner operations describe.

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

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

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

Console

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

    Vai alla pagina Istanze

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

  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 durante lo scale down. Per ulteriori informazioni, consulta Determinazione del limite minimo.

  6. Per Massimo, seleziona il limite massimo da utilizzare durante lo scale up. Per ulteriori informazioni, consulta Determinazione del 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. Per 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 Flag e limitazioni di Google Cloud CLI.

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

  gcloud beta spanner instances update INSTANCE_ID \
    --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 INSTANCE_ID \
    --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:

  • INSTANCE_ID: l'identificatore permanente dell'istanza.
  • MINIMUM_PROCESSING_UNITS, MINIMUM_NODES: il numero minimo di unità di elaborazione o nodi da utilizzare durante lo scale down. Per ulteriori informazioni, consulta Determinazione del limite minimo.
  • MAXIMUM_PROCESSING_UNITS, MAXIMUM_NODES: il numero massimo di unità di elaborazione o nodi da utilizzare durante lo scale up. Per maggiori informazioni, consulta Determinazione del 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 su tutte le richieste, utilizza una percentuale più alta. Per maggiori informazioni, consulta Determinare il target di utilizzo della CPU.
  • STORAGE_PERCENTAGE: la 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 gestito. Ad esempio, se vuoi aumentare il numero massimo di unità di elaborazione a 10.000, esegui questo comando:

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

Cambia un'istanza dall'utilizzo della scalabilità automatica gestito 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 per cui vuoi disabilitare il gestore della scalabilità automatica gestito.

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

  4. Fai clic su Salva.

gcloud

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

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

  gcloud beta spanner instances update INSTANCE_ID \
  --processing-units=PROCESSING_UNIT_COUNT

o

  gcloud beta spanner instances update INSTANCE_ID \
  --nodes=NODE_COUNT

Sostituisci quanto segue:

  • INSTANCE_ID: l'identificatore permanente dell'istanza.
  • NODE_COUNT: capacità di calcolo dell'istanza, espressa come numero di nodi. Ciascun nodo equivale a 1000 unità di elaborazione.
  • PROCESSING_UNIT_COUNT: 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 quantità maggiori in multipli di 1000 (1000, 2000, 3000 e così via).

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 delle 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, incluse 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 Google Cloud CLI.

Se vuoi eliminare un'istanza che ha uno o più database con la protezione da eliminazione abilitata, devi prima disabilitare la protezione da eliminazione su tutti i database nell'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 proprie attività e risorse sottostanti, compreso 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