Cette page a été traduite par l'API Cloud Translation.
Switch to English

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 des nœuds de l'instance et affecte la réplication des données. En savoir plus sur les configurations d'instance
    • Le nombre de nœuds attribués à l'instance. Il s'agit de la quantité de ressources de diffusion et de stockage disponibles pour les bases de données de l'instance.
  3. Cliquez sur Create (Créer) pour créer l'instance.

La capture d'écran suivante illustre la page de création d'une instance :

Capture d'écran de la page de création d'instance

gcloud

Utilisez la commande gcloud spanner instances create :

gcloud spanner instances create [INSTANCE-ID] --config=[INSTANCE-CONFIG] \
    --description="[INSTANCE-NAME]" --nodes=[NODE-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] : la configuration de l'instance, qui définit l'emplacement géographique des nœuds 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] : le nombre de nœuds attribués à l'instance. Il s'agit de la quantité de ressources de diffusion et de stockage disponibles pour les bases de données de l'instance.

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::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);

  std::string instance_config =
      "projects/" + project_id + "/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";
}

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(ctx context.Context, w io.Writer, projectID, instanceID string) error {
	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,
    )

    operation = instance.create()

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

    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 d'affichage, la configuration et le nombre de nœuds de chaque instance.

gcloud

Utilisez la commande gcloud spanner instances list :

gcloud spanner instances list

L'outil gcloud renvoie la liste de vos instances Cloud Spanner, ainsi que l'ID, le nom d'affichage, la configuration et le nombre de nœuds de chaque instance.

Modifier une instance

Dans les sections suivantes, nous expliquons comment modifier le nom d'affichage et le nombre de nœuds 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 le nombre de nœuds

Vous devez provisionner suffisamment de nœuds pour que l'utilisation du processeur et l'utilisation du stockage soient inférieures aux valeurs maximales recommandées. Pour plus d'informations sur les ressources fournies par un nœud, consultez les quotas et limites pour Cloud Spanner.

Dans certains cas, vous ne pouvez pas supprimer les nœuds d'une instance existante :

  • Pour supprimer les nœuds, votre instance doit stocker plus de 2 To de données par nœud.
  • En se basant sur l'historique de votre schéma d'utilisation, Cloud Spanner a créé un grand nombre de divisions pour les données de votre instance. Le service ne serait plus en mesure de gérer ces divisions en cas de suppression de certains nœuds.

Lorsque vous supprimez des nœuds, 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 des instances multirégionales. Il est possible que les latences des requêtes augmentent temporairement lors de la suppression des nœuds.

Si vous souhaitez augmenter le nombre de nœuds dans une instance, votre projet Google Cloud doit disposer d'un quota suffisant pour pouvoir ajouter les nœuds.

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. Saisissez le nombre de nœuds souhaité.

  5. Cliquez sur Enregistrer.

    Si vous voyez apparaître une boîte de dialogue indiquant que votre quota de nœuds est insuffisant à cet emplacement, suivez les instructions pour demander une augmentation de quota.

gcloud

Utilisez la commande gcloud spanner instances update :

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

Indiquez les valeurs suivantes :

  • [INSTANCE-ID] : l'identifiant permanent de l'instance.
  • [NODE-COUNT] : le nombre de nœuds attribués à l'instance.

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