Créer et gérer des instances

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

Créer une instance

Vous pouvez créer une instance à l'aide de l'outil de ligne de commande gcloud ou de Google Cloud Console.

Console

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

    Créer une instance

  2. Saisissez les valeurs suivantes :

    • Un nom d'instance à afficher dans Cloud Console. Le nom de l'instance doit être unique au sein de votre projet Google Cloud.
    • Un ID d'instance pour identifier votre instance de manière permanente. L'ID d'instance doit lui aussi être unique au sein de votre projet Google Cloud. Une fois cet ID d'instance créé, vous ne pourrez plus le modifier.
    • Une configuration, qui définit l'emplacement géographique de l'instance et affecte la réplication des données. En savoir plus sur les configurations d'instance
    • Quantité de capacité de calcul de l'instance. La capacité de calcul détermine la quantité de ressources de diffusion et de stockage disponibles pour les bases de données de l'instance. Pour spécifier la capacité de calcul, choisissez les unités de mesure (unités de traitement ou nœuds), puis saisissez une quantité. Lorsque vous utilisez des unités de traitement, saisissez des quantités allant jusqu'à 1 000 par multiples de 100 (100, 200, 300, etc.), puis saisissez des valeurs plus élevées en multiples de 1 000 (1 000, 2 000, 3 000, etc.). à Chaque nœud correspond à 1 000 unités de traitement. Obtenez plus d'informations sur les unités de traitement et les nœuds.
  3. Cliquez sur Create (Créer) pour créer l'instance.

gcloud

Exécutez la commande gcloud spanner instances create. Lorsque vous utilisez cette commande, spécifiez la capacité de calcul en tant que nombre ou nœud ou unité de traitement.

gcloud spanner instances create [INSTANCE-ID] --config=[INSTANCE-CONFIG] \
    --description="[INSTANCE-NAME]" --nodes=[NODE-COUNT]

ou

gcloud spanner instances create [INSTANCE-ID] --config=[INSTANCE-CONFIG] \
    --description="[INSTANCE-NAME]" --processing-units=[PROCESSING-UNIT-COUNT]

Indiquez les valeurs suivantes :

  • [INSTANCE-ID] : un identifiant permanent qui est unique au sein de votre projet Google Cloud. Une fois cet ID d'instance créé, vous ne pourrez plus le modifier.
  • [INSTANCE-CONFIG]: configuration de l'instance, qui définit l'emplacement géographique de l'instance et affecte la réplication des données. En savoir plus sur les configurations d'instance
  • [INSTANCE-NAME] : le nom à afficher pour l'instance dans Cloud Console. 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 correspond à 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 allant 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.).

Exemple :

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

Un message semblable aux lignes suivantes doit s'afficher :

Creating instance...done.

C++

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

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) {
  namespace spanner = ::google::cloud::spanner;
  spanner::Instance in(project_id, instance_id);

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

Go

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

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: %v", 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: %v", 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
}

Java

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

import com.google.api.gax.longrunning.OperationFuture;
import com.google.cloud.spanner.Instance;
import com.google.cloud.spanner.InstanceAdminClient;
import com.google.cloud.spanner.InstanceConfigId;
import com.google.cloud.spanner.InstanceId;
import com.google.cloud.spanner.InstanceInfo;
import com.google.cloud.spanner.Spanner;
import com.google.cloud.spanner.SpannerOptions;
import com.google.spanner.admin.instance.v1.CreateInstanceMetadata;
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) {
    Spanner spanner = SpannerOptions.newBuilder().setProjectId(projectId).build().getService();
    InstanceAdminClient instanceAdminClient = spanner.getInstanceAdminClient();

    // Set Instance configuration.
    String configId = "regional-us-central1";
    int nodeCount = 2;
    String displayName = "Descriptive name";

    // Create an InstanceInfo object that will be used to create the instance.
    InstanceInfo instanceInfo =
        InstanceInfo.newBuilder(InstanceId.of(projectId, instanceId))
            .setInstanceConfigId(InstanceConfigId.of(projectId, configId))
            .setNodeCount(nodeCount)
            .setDisplayName(displayName)
            .build();
    OperationFuture<Instance, CreateInstanceMetadata> operation =
        instanceAdminClient.createInstance(instanceInfo);
    try {
      // Wait for the createInstance operation to finish.
      Instance instance = operation.get();
      System.out.printf("Instance %s was successfully created%n", instance.getId());
    } catch (ExecutionException e) {
      System.out.printf(
          "Error: Creating instance %s failed with error message %s%n",
          instanceInfo.getId(), e.getMessage());
    } catch (InterruptedException e) {
      System.out.println("Error: Waiting for createInstance operation to finish was interrupted");
    } finally {
      spanner.close();
    }
  }
}

Node.js

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

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

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

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

const instance = spanner.instance(instanceId);

// Creates a new instance
try {
  console.log(`Creating instance ${instance.formattedName_}.`);
  const [, operation] = await instance.create({
    config: 'regional-us-central1',
    nodes: 1,
    displayName: 'This is a display name.',
    labels: {
      ['cloud_spanner_samples']: 'true',
      created: Math.round(Date.now() / 1000).toString(), // current time
    },
  });

  console.log(`Waiting for operation on ${instance.id} 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 Cloud Spanner, consultez la page Bibliothèques clientes Cloud Spanner.

use Google\Cloud\Spanner\SpannerClient;

/**
 * Creates an instance.
 * Example:
 * ```
 * create_instance($instanceId);
 * ```
 *
 * @param string $instanceId The Spanner instance ID.
 */
function create_instance($instanceId)
{
    $spanner = new SpannerClient();
    $instanceConfig = $spanner->instanceConfiguration(
        'regional-us-central1'
    );
    $operation = $spanner->createInstance(
        $instanceConfig,
        $instanceId,
        [
            'displayName' => 'This is a display name.',
            'nodeCount' => 1,
            'labels' => [
                'cloud_spanner_samples' => true,
            ]
        ]
    );

    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 Cloud Spanner, consultez la page Bibliothèques clientes Cloud Spanner.

def create_instance(instance_id):
    """Creates an instance."""
    spanner_client = spanner.Client()

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

    instance = spanner_client.instance(
        instance_id,
        configuration_name=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()))
        }
    )

    operation = instance.create()

    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 Cloud Spanner, consultez la page Bibliothèques clientes Cloud Spanner.

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

require "google/cloud/spanner"

spanner  = Google::Cloud::Spanner.new project: project_id
instance = spanner.instance instance_id

job = spanner.create_instance instance_id,
                              name:   instance_id,
                              config: "regional-us-central1",
                              nodes:  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

Console

Accédez à la page Instances Spanner dans Cloud Console.

Accéder à la page Instances

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

gcloud

Exécutez la commande gcloud spanner instances list :

gcloud spanner instances list

L'outil gcloud affiche la liste de vos instances Cloud Spanner, ainsi que l'ID, le nom à afficher, la configuration et la capacité de calcul de chaque instance.

Modifier une instance

Les sections suivantes expliquent 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 d'affichage

Console

  1. Accédez à la page Instances Spanner dans Cloud Console.

    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

Utilisez la commande gcloud spanner instances update :

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

Indiquez les valeurs suivantes :

  • [INSTANCE-ID] : l'identifiant permanent de l'instance.
  • [INSTANCE-NAME] : le nom à afficher pour l'instance dans Cloud Console. 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 plus d'informations, consultez les quotas et limites de Cloud Spanner.

Il existe certains cas dans lesquels vous ne pouvez pas réduire la capacité de calcul d'une instance existante:

  • Si vous supprimez la capacité de calcul, votre instance devra stocker plus de 2 To de données pour 1 000 unités de traitement (1 nœud).
  • D'après votre historique de modèles d'utilisation, Cloud Spanner a créé un grand nombre de divisions pour les données de votre instance, et Cloud Spanner ne sera pas en mesure de les gérer une fois la suppression effectuée. Capacité de calcul.

Lorsque vous supprimez la capacité de calcul, surveillez l'utilisation du processeur et les latences des requêtes dansCloud Monitoring pour garantir une utilisation du processeur 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 de la latence 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 Spanner dans Cloud Console.

    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 allant 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.). à Chaque nœud correspond à 1 000 unités de traitement.

  5. Cliquez sur Enregistrer.

    Si une boîte de dialogue vous indique que vous ne disposez pas d'un quota suffisant pour ajouter de la capacité de calcul à cet emplacement, suivez les instructions permettant de demander un quota plus élevé.

gcloud

Exécutez la commande gcloud spanner instances update. Lorsque vous utilisez cette commande, spécifiez la capacité de calcul en tant que nombre ou nœud ou unité de traitement.

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

ou

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

Indiquez les valeurs suivantes :

  • [INSTANCE-ID] : l'identifiant permanent de l'instance.
  • [NODE-COUNT]: capacité de calcul de l'instance, exprimée en nombre de nœuds. Chaque nœud correspond à 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 allant 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.).

Ajouter un libellé à une instance

Les libellés vous aident à organiser vos ressources.

Console

  1. Accédez à la page Instances Spanner dans Cloud Console.

    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 libellés pour l'instance Cloud Spanner.

Supprimer une instance

Console

  1. Accédez à la page Instances Spanner dans Cloud Console.

    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

Utilisez la commande gcloud spanner instances delete en remplaçant [INSTANCE-ID] par l'ID d'instance :

gcloud spanner instances delete [INSTANCE-ID]

Étape suivante