Creazione e gestione delle istanze

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

Crea un'istanza

Puoi creare un'istanza con la console Google Cloud, Google Cloud CLI o 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 istanza nella console Google Cloud.

    Crea istanza

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

  3. Inserisci un ID istanza per identificare definitivamente l'istanza. Anche l'ID istanza deve essere univoco all'interno del progetto Google Cloud. Non potrai modificare l'ID istanza in un secondo momento.

  4. Fai clic su Continua.

  5. Nella sezione Configura la tua istanza, in Scegli una configurazione, seleziona A livello di regione, Doppia regione o Più regioni. In alternativa, se vuoi confrontare le specifiche delle tre configurazioni, fai clic su Confronta configurazioni per regioni.

  6. Seleziona una configurazione dal menu a discesa.

  7. (Facoltativo) Per aggiungere una replica di sola lettura a una base Spanner configurazione di istanza personalizzata, crea innanzitutto una configurazione di istanza personalizzata Google Cloud CLI.

  8. Fai clic su Continua.

  9. 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 corrisponde a 1000 unità di elaborazione.

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

  10. 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 e la capacità di archiviazione. Per saperne di più sul gestore della scalabilità automatica gestito, vedi Gestore della scalabilità automatica per Spanner. Configura le seguenti opzioni di scalabilità automatica gestita:

      • Minimo indica il limite minimo a cui applicare lo scale down, a seconda dell'unità di misura che scegli per Compute di archiviazione. Per ulteriori informazioni, vedi Determina il limite minimo.
      • Massimo indica il limite massimo fino al quale eseguire l'upgrade, in base all'unità di misura scelta per la capacità di calcolo. Per ulteriori informazioni, vedi Determina il limite massimo.
      • Target di utilizzo ad alta priorità della CPU indica il target percentuale di CPU ad alta priorità da utilizzare. Per ulteriori informazioni, consulta la sezione Determinare il target di utilizzo della CPU.
      • Target di utilizzo dello spazio di archiviazione indica la percentuale target di spazio di archiviazione. Per ulteriori informazioni, vedi Determina il target di utilizzo dello spazio di archiviazione.
  11. Fai clic sul pulsante Crea per creare l'istanza.

gcloud

Utilizza la gcloud spanner instances create per creare un'istanza. Specifica la capacità di calcolo come il 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 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 tua istanza personalizzata, che definisce la posizione geografica dell'istanza influisce sul modo in cui i dati vengono replicati. Per le configurazioni di istanze personalizzate, inizia con custom-. Per ulteriori informazioni, consulta instance configurazioni.
  • INSTANCE-DESCRIPTION: il nome da visualizzare per l'istanza nella sezione nella console Google Cloud. Il nome dell'istanza deve essere univoco all'interno progetto Google Cloud.
  • NODE-COUNT: la capacità di calcolo dell'istanza, espressa come un numero di nodi. Ogni nodo equivale a 1000 unità di elaborazione.

  • PROCESSING-UNIT-COUNT: capacità di calcolo dell'istanza, espresso in un numero di unità di elaborazione. Inserisci quantità fino a 1000 in multipli di 100 (100, 200, 300 e così via) e inserisci maggiore quantità in multipli di 1000 (1000, 2000, 3000 e così via). Nota: Non utilizzare questo parametro se stai creando un'istanza a cui intendi creare da abilitare in un secondo momento con il gestore della scalabilità automatica gestito.

Aggiungi la scalabilità automatica gestita (anteprima)

Puoi anche configurare le nuove istanze in modo che utilizzino la scalabilità automatica gestita con il comando gcloud beta spanner instances create. Per ulteriori informazioni, vedi Gestore della scalabilità automatica per Spanner.

Utilizza il seguente comando 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 tua istanza personalizzata, che definisce la posizione geografica dell'istanza influisce sul modo in cui i dati vengono replicati. Per le configurazioni di istanze personalizzate, inizia con custom-. Per ulteriori informazioni, consulta instance configurazioni.
  • INSTANCE-DESCRIPTION: il nome da visualizzare per l'istanza nella sezione nella console Google Cloud. Il nome dell'istanza deve essere univoco all'interno progetto Google Cloud.
  • MINIMUM_PROCESSING_UNITS, MINIMUM_NODES: il valore numero minimo di unità di elaborazione o nodi durante lo scale down. Per ulteriori informazioni, consulta Determinare il limite minimo.
  • MAXIMUM_PROCESSING_UNITS, MAXIMUM_NODES: il numero massimo di unità di elaborazione o nodi durante l'aumento di scala. Per ulteriori informazioni le informazioni, vedi Determina il limite massimo.
  • CPU_PERCENTAGE: la percentuale target di CPU ad alta priorità a percentuale di utilizzo, dal 10 al 90%. Se ottimizzi per i costi, utilizza una query percentuale. Per ulteriori informazioni, vedi Determina il target di utilizzo della CPU.
  • STORAGE_PERCENTAGE: la percentuale target di spazio di archiviazione da utilizzare, da 10 a 99%. Per ulteriori informazioni, vedi Determina il target di utilizzo dello spazio di archiviazione.

Esempi di utilizzo delle configurazioni personalizzate

Per creare un'istanza test-instance nell'istanza regionale di base configurazione 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 in più regioni personalizzate configurazione dell'istanza custom-eur6, prima crea una configurazione di 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 all'esempio seguente:

Creating instance...done.

C++

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

Per eseguire l'autenticazione su Spanner, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura 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 ulteriori 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;
    }
}

Vai

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

Per eseguire l'autenticazione su Spanner, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.

import (
	"context"
	"fmt"
	"io"

	instance "cloud.google.com/go/spanner/admin/instance/apiv1"
	"cloud.google.com/go/spanner/admin/instance/apiv1/instancepb"
)

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 ulteriori informazioni, vedi Configura 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-east4").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-east4";
      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 ulteriori informazioni, vedi Configura 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 Spanner.

Per eseguire l'autenticazione su Spanner, configura Credenziali predefinite dell'applicazione. Per ulteriori 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 autenticarti a Spanner, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura 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 Spanner.

Per eseguire l'autenticazione su Spanner, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura 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 ciascuna istanza, espressa sia in unità di elaborazione sia in nodi.

gcloud

Utilizza il comando gcloud spanner instances list:

gcloud spanner instances list

gcloud CLI stampa un elenco dei tuoi Spanner istanze, insieme all'ID, al nome visualizzato, alla configurazione e di calcolo della capacità di calcolo.

Modifica un'istanza

Le sezioni seguenti spiegano come modificare il nome visualizzato di un'istanza di calcolo della capacità di calcolo. 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 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 sezione nella console Google Cloud. Il nome dell'istanza deve essere univoco all'interno 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 le quote e i 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 tuoi pattern di utilizzo storici, Spanner ha creato un numero elevato di sezioni per dell'istanza e, in alcuni rari casi, Spanner non sarebbe per gestire le suddivisioni dopo aver rimosso la capacità di calcolo.

Nel secondo caso, potresti provare a ridurre progressivamente la capacità di calcolo di piccole dimensioni finché non trovi la capacità minima richiesta da Spanner deve gestire tutte le suddivisioni dell'istanza. Se l'istanza non richiede più per un numero così elevato di suddivisioni dovute a una modifica dei pattern di utilizzo, alla fine unisce alcune suddivisioni e consente di provare a ridurre 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 regionali e del 45% per ogni regione nelle istanze multiregionali. Potresti notare 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 risorse di computing e la capacità di archiviazione. Il tempo necessario per il completamento della richiesta di aumento dipende dal le dimensioni della richiesta. Nella maggior parte dei casi, le richieste vengono completate entro pochi minuti. In rare occasioni, l'aumento di scala potrebbe 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) e poi inserire una quantità. Quando si utilizza 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 risorse di calcolo di capacità elevata in questa località, segui le istruzioni per richiedere quota.

gcloud

Utilizza la gcloud spanner instances update . Quando utilizzi questo comando, specifica la capacità di calcolo come 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 di nodi. Ogni nodo equivale a 1000 unità di elaborazione.
  • PROCESSING_UNIT_COUNT: la capacità di calcolo dell'istanza, expressed as a number of processing units. 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 tua 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

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 gestito su un'istanza che stai spostando.
  • Non puoi spostare un'istanza mentre il gestore della scalabilità automatica gestito è in un bucket in cui è abilitato il controllo delle versioni.

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 l'opzione 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 durante lo scale down. Per ulteriori informazioni, vedi Determina il limite minimo.

  6. In Massimo, seleziona il limite massimo da utilizzare per l'aumento. Per 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 ulteriori informazioni, vedi Determina il target di utilizzo della CPU.

  8. Per Target di utilizzo dello spazio di archiviazione, seleziona la percentuale di spazio di archiviazione da per gli utilizzi odierni. Per ulteriori informazioni, vedi Determina il target di utilizzo dello spazio di archiviazione.

  9. Fai clic su Salva.

gcloud

Utilizza la gcloud beta spanner instances update per aggiungere il gestore della scalabilità automatica gestito a un'istanza. Per ulteriori informazioni e Vedi i flag e le 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 per il ridimensionamento verso il basso. Per ulteriori informazioni, vedi Determina il limite minimo.
  • MAXIMUM_PROCESSING_UNITS, MAXIMUM_NODES: il valore numero massimo di unità di elaborazione o nodi da utilizzare durante lo scale up. Per ulteriori informazioni, vedi Determina il limite massimo.
  • CPU_PERCENTAGE: la percentuale target di CPU ad alta priorità a percentuale di utilizzo, dal 10% al 90%. Se ottimizzi per i costi e non richiedi un latenza per tutte le richieste, quindi utilizza una percentuale più alta. Per ulteriori informazioni, consulta la sezione Determinare il target di utilizzo della CPU.
  • STORAGE_PERCENTAGE: la percentuale target di spazio di archiviazione da utilizzare, dal 10% al 99%. Per ulteriori informazioni, vedi Determina il target di utilizzo dello spazio di archiviazione.

Dopo aver aggiunto il gestore della scalabilità automatica gestito a un'istanza, puoi anche modificare il e gestire la scalabilità automatica. Ad esempio, se vuoi aumentare il limite 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 disattivare l'autoscaler gestito.

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

  4. Fai clic su Salva.

gcloud

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

Utilizza il comando seguente per cambiare un'istanza dall'utilizzo della classe dalla scalabilità automatica 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: la capacità di calcolo dell'istanza, espressa come un numero di nodi. Ogni nodo equivale a 1000 unità di elaborazione.
  • PROCESSING_UNIT_COUNT: capacità di calcolo dell'istanza, espresso in un numero di unità di elaborazione. Inserisci quantità fino a 1000 in multipli di 100 (100, 200, 300 e così via) e inserisci maggiore quantità in multipli di 1000 (1000, 2000, 3000 e così via).

Etichettare 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 nella sul lato destro della pagina.

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

Sposta un'istanza

Per istruzioni su come spostare l'istanza da una configurazione all'altra, incluse le configurazioni regionali e multiregionali, 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 che ha uno o più database con la protezione da cancellazione dei dati, è necessario disabilita la protezione da eliminazione su tutti i database dell'istanza prima di poterla eliminare.

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 la 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, tra cui il monitoraggio e il riavvio delle procedure, se necessario, senza tempi di inattività. Poiché non è necessario eseguire manualmente o riavviare una determinata istanza, Spanner non offre un modo farlo.

Passaggi successivi