Créer et gérer des instances

Cette page explique comment créer, répertorier, modifier et supprimer des instances Spanner.

Créer une instance

Vous pouvez créer une instance à l'aide de la console Google Cloud, de Google Cloud CLI ou de bibliothèques clientes. Vous pouvez également créer une instance avec une configuration d'instance personnalisée en ajoutant des instances répliquées en lecture seule facultatives.

Console

  1. Accédez à la page Créer une instance dans Google Cloud Console.

    Créer une instance

  2. Saisissez un Nom d'instance à afficher dans la console Google Cloud. Le nom de l'instance doit être unique au sein de votre projet Google Cloud.

  3. Saisissez un ID d'instance pour identifier votre instance de manière permanente. L'ID d'instance doit également être unique au sein de votre projet Google Cloud. Une fois cet ID d'instance créé, vous ne pourrez plus le modifier.

  4. Sous Sélectionner une configuration, cliquez sur Régional ou Multirégional. Si vous souhaitez comparer les spécifications entre deux régions, cliquez sur Comparer les configurations régionales.

  5. Sélectionnez une configuration dans le menu déroulant.

  6. Facultatif: Ajoutez des instances répliquées en lecture seule pour procéder au scaling des lectures et prendre en charge les lectures non actualisées à faible latence. Lorsque vous créez et ajoutez une instance répliquée en lecture seule à une configuration d'instance à l'aide de la console Google Cloud, la configuration d'instance personnalisée est créée automatiquement. Pour ajouter une instance répliquée en lecture seule, procédez comme suit:

    1. Développez Configurer des instances répliquées en lecture seule.

    2. Cliquez sur Ajouter une instance répliquée en lecture seule.

    3. Sélectionnez une région et un numéro.

  7. Dans la section Configurer la capacité de calcul, sous Sélectionner une unité, cliquez sur l'une des options suivantes:

    • Les unités de traitement pour les petites instances.
    • Des nœuds pour les instances volumineuses Un nœud correspond à 1 000 unités de traitement.

    Pour en savoir plus, consultez la section Capacité de calcul, nœuds et unités de traitement.

  8. Sous Sélectionner un mode de scaling, cliquez sur l'une des options suivantes:

    • L'allocation manuelle si vous souhaitez définir manuellement la capacité de calcul pour des ressources et des coûts de calcul fixes.

      • Quantité indique le nombre d'unités de traitement ou de nœuds à utiliser pour cette instance.
    • L'autoscaling (Aperçu) pour permettre à Spanner d'ajouter et de supprimer automatiquement de la capacité de calcul. Pour en savoir plus sur l'autoscaler géré géré, consultez la section Autoscaler géré pour Spanner. Configurez les options d'autoscaler géré suivantes:

      • Minimum indique la limite minimale à atteindre, en fonction de l'unité de mesure que vous choisissez pour la capacité de calcul. Pour en savoir plus, consultez Déterminer la limite minimale.
      • Maximum indique la limite maximale à atteindre, en fonction de l'unité de mesure que vous choisissez pour la capacité de calcul. Pour en savoir plus, consultez Déterminer la limite maximale.
      • L'objectif d'utilisation du processeur de haute priorité indique le pourcentage cible d'utilisation du processeur à priorité élevée. Pour en savoir plus, consultez la section Déterminer l'objectif d'utilisation du processeur.
      • L'objectif d'utilisation du stockage indique le pourcentage cible d'espace de stockage à utiliser. Pour en savoir plus, consultez la page Déterminer la cible d'utilisation du stockage.
  9. Cliquez sur Créer pour créer l'instance.

gcloud

Exécutez la commande gcloud spanner instances create pour créer une instance. Spécifiez la capacité de calcul en tant que nombre de nœuds ou d'unités de traitement que vous souhaitez utiliser sur l'instance.

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

ou

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

Remplacez les éléments suivants :

  • INSTANCE-ID: identifiant permanent et unique au sein de votre projet Google Cloud Une fois cet ID d'instance créé, vous ne pourrez plus le modifier.
  • INSTANCE-CONFIG: identifiant permanent de la configuration de l'instance, qui définit l'emplacement géographique de l'instance et affecte la réplication des données. Pour les configurations d'instances personnalisées, il commence par custom-. Pour en savoir plus, consultez la section Configurations d'instances.
  • INSTANCE-DESCRIPTION: nom à afficher pour l'instance dans la console Google Cloud. Le nom de l'instance doit être unique au sein de votre projet Google Cloud.
  • NODE-COUNT: capacité de calcul de l'instance, exprimée en nombre de nœuds. Chaque nœud équivaut à 1 000 unités de traitement.

  • PROCESSING-UNIT-COUNT: capacité de calcul de l'instance, exprimée en nombre d'unités de traitement. Saisissez des quantités jusqu'à 1 000 par multiples de 100 (100, 200, 300, etc.), puis saisissez des quantités supérieures par multiples de 1 000 (1 000, 2 000, 3 000, etc.). Remarque : N'utilisez pas ce paramètre si vous créez une instance que vous souhaitez activer ultérieurement avec l'autoscaler géré.

Ajouter un autoscaling géré (Preview)

Vous pouvez également configurer de nouvelles instances pour qu'elles utilisent l'autoscaling géré à l'aide de la commande gcloud beta spanner instances create. Pour en savoir plus, consultez la page Autoscaler géré pour Spanner.

Utilisez la commande suivante pour créer une instance avec un autoscaler géré.

  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

ou

  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

Remplacez les éléments suivants :

  • INSTANCE-ID: identifiant permanent et unique au sein de votre projet Google Cloud Une fois cet ID d'instance créé, vous ne pourrez plus le modifier.
  • INSTANCE-CONFIG: identifiant permanent de la configuration de l'instance, qui définit l'emplacement géographique de l'instance et affecte la réplication des données. Pour les configurations d'instances personnalisées, il commence par custom-. Pour en savoir plus, consultez la section Configurations d'instances.
  • INSTANCE-DESCRIPTION: nom à afficher pour l'instance dans la console Google Cloud. Le nom de l'instance doit être unique au sein de votre projet Google Cloud.
  • MINIMUM_PROCESSING_UNITS, MINIMUM_NODES: nombre minimal d'unités de traitement ou de nœuds lors d'un scaling à la baisse. Pour en savoir plus, consultez Déterminer la limite minimale.
  • MAXIMUM_PROCESSING_UNITS, MAXIMUM_NODES: nombre maximal d'unités de traitement ou de nœuds lors du scaling à la hausse. Pour en savoir plus, consultez Déterminer la limite maximale.
  • CPU_PERCENTAGE: pourcentage cible de processeurs à priorité élevée à utiliser, compris entre 10 et 90%. Si vous optimisez les coûts, utilisez un pourcentage plus élevé. Pour en savoir plus, consultez la section Déterminer l'objectif d'utilisation du processeur.
  • STORAGE_PERCENTAGE: pourcentage cible d'espace de stockage à utiliser, compris entre 10 et 99%. Pour en savoir plus, consultez la section Déterminer l'objectif d'utilisation du stockage.

Exemples d'utilisation de configurations personnalisées

Pour créer une instance test-instance dans la configuration d'instance régionale de base us-central1, exécutez la commande suivante:

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

Pour créer une instance custom-eur6-instance dans la configuration d'instance multirégionale personnalisée custom-eur6, commencez par créer une configuration d'instance personnalisée.

Exécutez ensuite la commande ci-dessous :

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

Un message semblable à l'exemple suivant doit s'afficher après avoir exécuté l'une des commandes ci-dessus:

Creating instance...done.

C++

Pour savoir comment installer et utiliser la bibliothèque cliente pour Spanner, consultez la page Bibliothèques clientes Spanner.

Pour vous authentifier auprès de Spanner, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

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#

Pour savoir comment installer et utiliser la bibliothèque cliente pour Spanner, consultez la page Bibliothèques clientes Spanner.

Pour vous authentifier auprès de Spanner, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.


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

Pour savoir comment installer et utiliser la bibliothèque cliente pour Spanner, consultez la page Bibliothèques clientes Spanner.

Pour vous authentifier auprès de Spanner, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

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
}

Créer une instance avec autoscaling géré à l'aide de Go (Preview)

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

Pour savoir comment installer et utiliser la bibliothèque cliente pour Spanner, consultez la page Bibliothèques clientes Spanner.

Pour vous authentifier auprès de Spanner, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.


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");
    }
  }
}

Créer une instance avec autoscaling géré à l'aide de Java (Preview)


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

Pour savoir comment installer et utiliser la bibliothèque cliente pour Spanner, consultez la page Bibliothèques clientes Spanner.

Pour vous authentifier auprès de Spanner, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.


// 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

Pour savoir comment installer et utiliser la bibliothèque cliente pour Spanner, consultez la page Bibliothèques clientes Spanner.

Pour vous authentifier auprès de Spanner, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

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

Pour savoir comment installer et utiliser la bibliothèque cliente pour Spanner, consultez la page Bibliothèques clientes Spanner.

Pour vous authentifier auprès de Spanner, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

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

Pour savoir comment installer et utiliser la bibliothèque cliente pour Spanner, consultez la page Bibliothèques clientes Spanner.

Pour vous authentifier auprès de Spanner, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

# 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

Répertorier les instances

Vous pouvez afficher la liste de vos instances Spanner.

Console

Accédez à la page Instances de Spanner dans la console Google Cloud.

Accéder à la page Instances

La console Google Cloud affiche la liste de vos instances Spanner, ainsi que l'ID, le nom à afficher, la configuration et la capacité de calcul de chaque instance, exprimés à la fois en unités de traitement et en nœuds.

gcloud

Exécutez la commande gcloud spanner instances list :

gcloud spanner instances list

La gcloud CLI imprime une liste de vos instances Spanner, ainsi que l'ID, le nom à afficher, la configuration et la capacité de calcul de chaque instance.

Modifier une instance

Dans les sections suivantes, nous expliquons comment modifier le nom à afficher et la capacité de calcul d'une instance. Vous ne pouvez pas modifier l'ID d'une instance ni sa configuration.

Modifier le nom à afficher

Console

  1. Accédez à la page Instances de Spanner dans la console Google Cloud.

    Accéder à la page Instances

  2. Cliquez sur le nom de l'instance que vous souhaitez renommer.

  3. Cliquez sur Modifier l'instance.

  4. Saisissez un nouveau nom d'instance. Ce nom doit être unique au sein du projet Google Cloud.

  5. Cliquez sur Enregistrer.

gcloud

Exécutez la commande gcloud spanner instances update :

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

Remplacez les éléments suivants :

  • INSTANCE-ID: identifiant permanent de l'instance.
  • INSTANCE-NAME: nom à afficher pour l'instance dans la console Google Cloud. Le nom de l'instance doit être unique au sein de votre projet Google Cloud.

Modifier la capacité de calcul

Vous devez provisionner une capacité de calcul suffisante pour maintenir l'utilisation du processeur et l'utilisation du stockage en dessous des valeurs maximales recommandées. Pour en savoir plus, consultez les quotas et limites de Spanner.

Dans certains cas, vous ne pouvez pas réduire la capacité de calcul d'une instance existante:

  • Si vous supprimez la capacité de calcul, votre instance doit stocker plus de 4 To de données pour 1 000 unités de traitement (1 nœud).
  • En se basant sur l'historique de vos schémas d'utilisation, Spanner a créé un grand nombre de divisions pour les données de votre instance. Dans de rares cas, Spanner ne pourrait pas les gérer après la suppression de la capacité de calcul.

Dans ce dernier cas, vous pouvez essayer de réduire progressivement la capacité de calcul jusqu'à trouver la capacité minimale dont Spanner a besoin pour gérer toutes les divisions de l'instance. Si l'instance n'a plus besoin d'autant de divisions en raison d'une modification des schémas d'utilisation, Spanner peut à terme fusionner certaines divisions et vous permettre de réduire davantage la capacité de calcul de l'instance après une semaine ou deux.

Lorsque vous supprimez de la capacité de calcul, surveillez l'utilisation du processeur et les latences des requêtes dans Cloud Monitoring pour vous assurer que l'utilisation du processeur reste inférieure à 65% pour les instances régionales et à 45% pour chaque région dans les instances multirégionales. Vous constaterez peut-être une augmentation temporaire des latences des requêtes lors de la suppression de la capacité de calcul.

Si vous souhaitez augmenter la capacité de calcul d'une instance, votre projet Google Cloud doit disposer d'un quota suffisant pour ajouter la capacité de calcul.

Console

  1. Accédez à la page Instances de Spanner dans la console Google Cloud.

    Accéder à la page Instances

  2. Cliquez sur le nom de l'instance que vous souhaitez modifier.

  3. Cliquez sur Modifier l'instance.

  4. Modifiez la capacité de calcul en choisissant les unités de mesure (unités de traitement ou nœuds), puis en saisissant une quantité. Lorsque vous utilisez des unités de traitement, saisissez des quantités jusqu'à 1 000 par multiples de 100 (100, 200, 300, etc.) et saisissez des quantités supérieures par multiples de 1 000 (1 000, 2 000, 3 000, etc.). Chaque nœud équivaut à 1 000 unités de traitement.

  5. Cliquez sur Enregistrer.

Si vous voyez apparaître une boîte de dialogue indiquant que votre quota est insuffisant pour ajouter de la capacité de calcul à cet emplacement, suivez les instructions pour demander une augmentation de quota.

gcloud

Exécutez la commande gcloud spanner instances update. Lorsque vous utilisez cette commande, spécifiez la capacité de calcul en nombre de nœuds ou d'unités de traitement.

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

ou

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

Remplacez les éléments suivants :

  • INSTANCE-ID: identifiant permanent de l'instance.
  • NODE-COUNT: capacité de calcul de l'instance, exprimée en nombre de nœuds. Chaque nœud équivaut à 1 000 unités de traitement.
  • PROCESSING-UNIT-COUNT: capacité de calcul de l'instance, exprimée en nombre d'unités de traitement. Saisissez des quantités jusqu'à 1 000 par multiples de 100 (100, 200, 300, etc.), puis saisissez des quantités supérieures par multiples de 1 000 (1 000, 2 000, 3 000, etc.).

Activer ou modifier l'autoscaler géré sur une instance

Les limites suivantes s'appliquent lorsque vous ajoutez ou modifiez la fonctionnalité d'autoscaling géré sur une instance existante:

  • Vous ne pouvez pas activer l'autoscaler géré sur une instance que vous déplacez.
  • Vous ne pouvez pas déplacer une instance lorsque l'autoscaler géré est activé.

Console

  1. Accédez à la page Instances de Spanner dans la console Google Cloud.

    Accéder à la page Instances

  2. Cliquez sur le nom de l'instance sur laquelle vous souhaitez activer l'autoscaler géré.

  3. Cliquez sur Modifier l'instance.

  4. Sous Configurer la capacité de calcul, cliquez sur Autoscaling.

  5. Dans le champ Minimum (Minimum), sélectionnez la limite minimale à utiliser pour la réduction de la capacité. Pour en savoir plus, consultez Déterminer la limite minimale.

  6. Dans le champ Maximum, sélectionnez la limite maximale à utiliser pour l'augmentation de la capacité. Pour en savoir plus, consultez Déterminer la limite maximale.

  7. Pour Objectif d'utilisation du processeur à priorité élevée, sélectionnez le pourcentage de processeur à priorité élevée à utiliser. Pour en savoir plus, consultez la section Déterminer l'objectif d'utilisation du processeur.

  8. Pour Objectif d'utilisation du stockage, sélectionnez le pourcentage d'espace de stockage à utiliser. Pour en savoir plus, consultez la section Déterminer l'objectif d'utilisation du stockage.

  9. Cliquez sur Enregistrer.

gcloud

Utilisez la commande gcloud beta spanner instances update pour ajouter l'autoscaler géré à une instance. Pour en savoir plus et connaître les limites, consultez la section Options et limites Google Cloud CLI.

Vous pouvez ajouter l'autoscaler géré à l'aide de la commande suivante:

  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

ou

  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

Remplacez les éléments suivants :

  • MINIMUM_PROCESSING_UNITS, MINIMUM_NODES: nombre minimal d'unités de traitement ou de nœuds à utiliser pour le scaling à la baisse. Pour en savoir plus, consultez Déterminer la limite minimale.
  • MAXIMUM_PROCESSING_UNITS, MAXIMUM_NODES: nombre maximal d'unités de traitement ou de nœuds à utiliser pour le scaling à la hausse. Pour en savoir plus, consultez Déterminer la limite maximale.
  • CPU_PERCENTAGE: pourcentage cible de processeurs à priorité élevée à utiliser, compris entre 10% et 90%. Si vous optimisez les coûts et n'avez pas besoin d'une faible latence sur toutes les requêtes, utilisez un pourcentage plus élevé. Pour en savoir plus, consultez la section Déterminer l'objectif d'utilisation du processeur.
  • STORAGE_PERCENTAGE: pourcentage cible d'espace de stockage à utiliser, compris entre 10% et 99%. Pour en savoir plus, consultez la page Déterminer la cible d'utilisation du stockage.

Après avoir ajouté l'autoscaler géré à une instance, vous pouvez également modifier ses paramètres. Par exemple, si vous souhaitez augmenter le nombre maximal d'unités de traitement à 10 000, exécutez la commande suivante:

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

Faire passer une instance de l'autoscaler géré au scaling manuel

Console

  1. Accédez à la page Instances de Spanner dans la console Google Cloud.

    Accéder à la page Instances

  2. Cliquez sur le nom de l'instance sur laquelle vous souhaitez désactiver l'autoscaler géré.

  3. Sous Sélectionner un mode de scaling, cliquez sur Allocation manuelle.

  4. Cliquez sur Enregistrer.

gcloud

Exécutez la commande gcloud beta spanner instances update pour mettre à jour l'instance.

Utilisez la commande suivante pour faire passer une instance de l'autoscaler géré au scaling manuel:

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

ou

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

Remplacez PROCESSING-UNIT-COUNT ou NODE-COUNT par le nombre d'unités de traitement ou de nœuds que vous souhaitez utiliser sur l'instance.

Ajouter un libellé à une instance

Les libellés vous aident à organiser vos ressources.

Console

  1. Accédez à la page Instances de Spanner dans la console Google Cloud.

    Accéder à la page Instances

  2. Cochez la case correspondant à l'instance. Le panneau d'informations apparaît sur le côté droit de la page.

  3. Cliquez sur l'onglet Libellés dans le panneau d'informations. Vous pouvez ensuite ajouter, supprimer ou mettre à jour des étiquettes pour l'instance Spanner.

Déplacer une instance

Pour découvrir comment déplacer votre instance d'une configuration d'instance à une autre, y compris entre des configurations régionales et multirégionales, consultez la section Déplacer une instance.

Supprimer une instance

Vous pouvez supprimer une instance à l'aide de la console Google Cloud ou de la Google Cloud CLI.

Si vous souhaitez supprimer une instance contenant une ou plusieurs bases de données sur lesquelles la protection contre la suppression est activée, vous devez d'abord désactiver la protection contre la suppression sur toutes les bases de données de cette instance avant de pouvoir supprimer l'instance.

Console

  1. Accédez à la page Instances de Spanner dans la console Google Cloud.

    Accéder à la page Instances

  2. Cliquez sur le nom de l'instance que vous souhaitez supprimer.

  3. Cliquez sur Supprimer l'instance.

  4. Suivez les instructions pour confirmer que vous souhaitez bien supprimer l'instance.

  5. Cliquez sur Supprimer.

gcloud

Exécutez la commande gcloud spanner instances delete, en remplaçant INSTANCE-ID par l'ID d'instance:

gcloud spanner instances delete INSTANCE-ID

Arrêter ou redémarrer une instance

Spanner est un service de base de données entièrement géré qui supervise ses propres tâches et ressources sous-jacentes, y compris la surveillance et le redémarrage des processus si nécessaire, sans aucun temps d'arrêt. Étant donné qu'il n'est pas nécessaire d'arrêter ou de redémarrer manuellement une instance donnée, Spanner ne propose pas de moyen de le faire.

Étapes suivantes