Membuat dan mengelola instance

Halaman ini menjelaskan cara membuat, mencantumkan, mengedit, dan menghapus instance Spanner.

Membuat instance

Anda dapat membuat instance dengan Konsol Google Cloud, Google Cloud CLI, atau library klien. Anda juga dapat membuat instance menggunakan konfigurasi instance kustom dengan menambahkan replika hanya baca opsional.

Konsol

  1. Buka halaman Create an instance di Konsol Google Cloud.

    Membuat instance

  2. Masukkan Instance name untuk ditampilkan di Konsol Google Cloud. Nama instance harus unik dalam project Google Cloud Anda.

  3. Masukkan ID Instance untuk mengidentifikasi instance Anda secara permanen. ID instance juga harus unik dalam project Google Cloud Anda. Anda tidak dapat mengubah ID instance nanti.

  4. Di bagian Choose a configuration, klik Regional atau Multi-region. Atau, jika Anda ingin membandingkan spesifikasi antara dua wilayah, klik Bandingkan konfigurasi wilayah.

  5. Pilih konfigurasi dari menu drop-down.

  6. Opsional: Menambahkan replika hanya baca untuk menskalakan pembacaan dan mendukung pembacaan yang sudah tidak berlaku dengan latensi rendah. Saat Anda membuat dan menambahkan replika hanya baca ke konfigurasi instance menggunakan Google Cloud Console, konfigurasi instance kustom akan dibuat secara otomatis. Untuk menambahkan replika hanya baca, lakukan hal berikut:

    1. Luaskan Mengonfigurasi replika hanya baca.

    2. Klik Tambahkan replika hanya baca.

    3. Pilih wilayah dan nomor.

  7. Di bagian Configure compute capacity, pada Select unit, klik salah satu opsi berikut:

    • Unit pemrosesan untuk instance kecil.
    • Node untuk instance besar. Node adalah 1.000 unit pemrosesan.

    Untuk informasi selengkapnya, lihat Kapasitas komputasi, node, dan unit pemrosesan.

  8. Di bagian Pilih mode penskalaan, klik salah satu opsi berikut:

    • Alokasi manual jika Anda ingin menetapkan kapasitas komputasi secara manual untuk resource dan biaya komputasi tetap.

      • Jumlah menunjukkan jumlah unit pemrosesan atau node yang akan digunakan untuk instance ini.
    • Penskalaan otomatis (Pratinjau), untuk memungkinkan Spanner menambahkan dan menghapus kapasitas komputasi secara otomatis. Untuk informasi selengkapnya tentang penskalaan otomatis terkelola, lihat Penskalaan otomatis terkelola untuk Spanner. Konfigurasikan opsi penskala otomatis terkelola berikut:

      • Minimum menunjukkan batas minimum skala untuk memperkecil skala, bergantung pada unit pengukuran yang Anda pilih untuk kapasitas Compute. Untuk informasi selengkapnya, lihat Menentukan batas minimum.
      • Maksimum menunjukkan batas maksimum peningkatan skala, bergantung pada unit pengukuran yang Anda pilih untuk kapasitas Compute. Untuk informasi selengkapnya, lihat Menentukan batas maksimum.
      • Target penggunaan CPU prioritas tinggi menunjukkan persentase target CPU prioritas tinggi yang akan digunakan. Untuk mengetahui informasi selengkapnya, lihat Menentukan target penggunaan CPU.
      • Storage utilization target menunjukkan persentase target penyimpanan yang akan digunakan. Untuk informasi selengkapnya, lihat Menentukan Target Penggunaan Penyimpanan.
  9. Klik Create untuk membuat instance.

gcloud

Gunakan perintah gcloud spanner instances create untuk membuat instance. Tentukan kapasitas komputasi sebagai jumlah node atau unit pemrosesan yang Anda inginkan pada instance.

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

atau

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

Ganti kode berikut:

  • INSTANCE-ID: ID permanen yang unik dalam project Google Cloud Anda. Anda tidak dapat mengubah ID instance nanti.
  • INSTANCE-CONFIG: ID permanen konfigurasi instance Anda, yang menentukan lokasi geografis instance dan memengaruhi cara data direplikasi. Untuk konfigurasi instance kustom, instance diawali dengan custom-. Untuk mengetahui informasi selengkapnya, lihat konfigurasi instance.
  • INSTANCE-DESCRIPTION: nama yang akan ditampilkan untuk instance di Konsol Google Cloud. Nama instance harus unik dalam project Google Cloud Anda.
  • NODE-COUNT: kapasitas komputasi instance, yang dinyatakan sebagai jumlah node. Setiap node sama dengan 1.000 unit pemrosesan.

  • PROCESSING-UNIT-COUNT: kapasitas komputasi instance, dinyatakan sebagai jumlah unit pemrosesan. Masukkan jumlah hingga 1.000 dalam kelipatan 100 (100, 200, 300, dan seterusnya) dan masukkan jumlah yang lebih besar dalam kelipatan 1000 (1000, 2000, 3000, dan seterusnya). Catatan: Jangan gunakan parameter ini jika Anda membuat instance yang ingin Anda aktifkan dengan penskalaan otomatis yang dikelola nanti.

Tambahkan penskalaan otomatis terkelola (Pratinjau)

Anda juga dapat mengonfigurasi instance baru untuk menggunakan penskalaan otomatis terkelola dengan perintah gcloud beta spanner instances create. Untuk informasi selengkapnya, lihat Penskalaan otomatis terkelola untuk Spanner.

Gunakan perintah berikut untuk membuat instance dengan penghitung skala otomatis terkelola.

  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

atau

  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

Ganti kode berikut:

  • INSTANCE-ID: ID permanen yang unik dalam project Google Cloud Anda. Anda tidak dapat mengubah ID instance nanti.
  • INSTANCE-CONFIG: ID permanen konfigurasi instance Anda, yang menentukan lokasi geografis instance dan memengaruhi cara data direplikasi. Untuk konfigurasi instance kustom, instance diawali dengan custom-. Untuk mengetahui informasi selengkapnya, lihat konfigurasi instance.
  • INSTANCE-DESCRIPTION: nama yang akan ditampilkan untuk instance di Konsol Google Cloud. Nama instance harus unik dalam project Google Cloud Anda.
  • MINIMUM_PROCESSING_UNITS, MINIMUM_NODES: jumlah minimum unit pemrosesan atau node saat memperkecil skala. Untuk mengetahui informasi selengkapnya, lihat Menentukan batas minimum.
  • MAXIMUM_PROCESSING_UNITS, MAXIMUM_NODES: jumlah maksimum unit pemrosesan atau node saat meningkatkan skala. Untuk mengetahui informasi selengkapnya, lihat Menentukan batas maksimum.
  • CPU_PERCENTAGE: persentase target CPU prioritas tinggi yang akan digunakan, dari 10 hingga 90%. Jika Anda mengoptimalkan biaya, gunakan persentase yang lebih tinggi. Untuk mengetahui informasi selengkapnya, lihat Menentukan target penggunaan CPU.
  • STORAGE_PERCENTAGE: persentase target penyimpanan yang akan digunakan, dari 10 hingga 99%. Untuk mengetahui informasi selengkapnya, lihat Menentukan target penggunaan penyimpanan.

Contoh penggunaan konfigurasi kustom

Untuk membuat instance test-instance dalam konfigurasi instance regional dasar us-central1, jalankan:

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

Untuk membuat instance custom-eur6-instance dalam konfigurasi instance multi-region kustom custom-eur6, buat konfigurasi instance kustom terlebih dahulu.

Kemudian, jalankan:

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

Anda akan melihat pesan yang mirip dengan contoh berikut setelah menjalankan salah satu perintah di atas:

Creating instance...done.

C++

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Spanner, lihat library klien Spanner.

Untuk mengautentikasi ke Spanner, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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#

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Spanner, lihat library klien Spanner.

Untuk mengautentikasi ke Spanner, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.


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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Spanner, lihat library klien Spanner.

Untuk mengautentikasi ke Spanner, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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
}

Membuat instance dengan penskalaan otomatis yang dikelola menggunakan Go (Pratinjau)

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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Spanner, lihat library klien Spanner.

Untuk mengautentikasi ke Spanner, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.


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

Membuat instance dengan penskalaan otomatis terkelola menggunakan Java (Pratinjau)


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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Spanner, lihat library klien Spanner.

Untuk mengautentikasi ke Spanner, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.


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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Spanner, lihat library klien Spanner.

Untuk mengautentikasi ke Spanner, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Spanner, lihat library klien Spanner.

Untuk mengautentikasi ke Spanner, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Spanner, lihat library klien Spanner.

Untuk mengautentikasi ke Spanner, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

# 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

Mencantumkan instance

Anda dapat menampilkan daftar instance Spanner.

Konsol

Buka halaman Spanner Instances di konsol Google Cloud.

Buka halaman Instances

Konsol Google Cloud menampilkan daftar instance Spanner Anda, beserta ID tiap instance, nama tampilan, konfigurasi, dan kapasitas komputasi yang dinyatakan dalam unit pemrosesan dan dalam node.

gcloud

Gunakan perintah gcloud spanner instances list:

gcloud spanner instances list

Gcloud CLI mencetak daftar instance Spanner Anda, beserta ID, nama tampilan, konfigurasi, dan kapasitas komputasi dari setiap instance.

Mengedit instance

Bagian berikut menjelaskan cara mengubah nama tampilan instance dan kapasitas komputasi. Anda tidak dapat mengubah ID instance atau konfigurasi instance.

Mengubah nama tampilan

Konsol

  1. Buka halaman Spanner Instances di konsol Google Cloud.

    Buka halaman Instances

  2. Klik nama instance yang ingin diganti namanya.

  3. Klik Edit instance.

  4. Masukkan nama instance baru. Nama ini harus unik dalam project Google Cloud.

  5. Klik Save.

gcloud

Gunakan perintah gcloud spanner instances update:

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

Ganti kode berikut:

  • INSTANCE-ID: ID permanen untuk instance.
  • INSTANCE-NAME: nama yang akan ditampilkan untuk instance di Konsol Google Cloud. Nama instance harus unik dalam project Google Cloud Anda.

Mengubah kapasitas komputasi

Anda harus menyediakan kapasitas komputasi yang cukup agar penggunaan CPU dan penggunaan penyimpanan tidak melebihi batas maksimum yang direkomendasikan. Untuk mengetahui informasi selengkapnya, lihat kuota dan batas untuk Spanner.

Ada beberapa kasus yang membuat Anda tidak dapat mengurangi kapasitas komputasi instance yang ada:

  • Jika kapasitas komputasi dihapus, instance Anda harus menyimpan lebih dari 4 TB data per 1.000 unit pemrosesan (1 node).
  • Berdasarkan pola penggunaan historis Anda, Spanner telah membuat banyak pemisahan untuk data instance, dan dalam beberapa kasus yang jarang terjadi, Spanner tidak akan dapat mengelola pemisahan setelah menghapus kapasitas komputasi.

Dalam kasus terakhir, Anda dapat mencoba mengurangi kapasitas komputasi dengan jumlah yang lebih kecil secara bertahap sampai Anda menemukan kapasitas minimum yang diperlukan Spanner untuk mengelola semua bagian instance. Jika instance tidak lagi memerlukan begitu banyak pemisahan karena perubahan pola penggunaan, Spanner mungkin pada akhirnya akan menggabungkan beberapa pemisahan dan memungkinkan Anda untuk mencoba mengurangi kapasitas komputasi instance lebih lanjut setelah satu atau dua minggu.

Saat menghapus kapasitas komputasi, pantau pemakaian CPU dan latensi permintaan di Cloud Monitoring untuk memastikan pemakaian CPU tetap di bawah 65% untuk instance regional dan 45% untuk setiap region di instance multi-region. Anda mungkin mengalami peningkatan latensi permintaan untuk sementara waktu sekaligus menghapus kapasitas komputasi.

Jika ingin meningkatkan kapasitas komputasi instance, project Google Cloud Anda harus memiliki kuota yang cukup untuk menambahkan kapasitas komputasi.

Konsol

  1. Buka halaman Spanner Instances di konsol Google Cloud.

    Buka halaman Instances

  2. Klik nama instance yang ingin Anda ubah.

  3. Klik Edit Instance.

  4. Ubah kapasitas komputasi dengan memilih unit pengukuran (unit pemrosesan atau node), lalu memasukkan jumlahnya. Saat menggunakan unit pemrosesan, masukkan jumlah hingga 1.000 dalam kelipatan 100 (100, 200, 300, dan seterusnya) dan masukkan jumlah yang lebih besar dalam kelipatan 1.000 (1000, 2000, 3000, dan seterusnya). Setiap node sama dengan 1.000 unit pemrosesan.

  5. Klik Save.

Jika Anda melihat dialog yang menyatakan bahwa Anda tidak memiliki kuota yang cukup untuk menambahkan kapasitas komputasi di lokasi ini, ikuti petunjuk untuk meminta kuota yang lebih tinggi.

gcloud

Gunakan perintah gcloud spanner instances update. Saat menggunakan perintah ini, tentukan kapasitas komputasi sebagai jumlah node atau unit pemrosesan.

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

atau

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

Ganti kode berikut:

  • INSTANCE-ID: ID permanen untuk instance.
  • NODE-COUNT: kapasitas komputasi instance, yang dinyatakan sebagai jumlah node. Setiap node sama dengan 1.000 unit pemrosesan.
  • PROCESSING-UNIT-COUNT: kapasitas komputasi instance, dinyatakan sebagai jumlah unit pemrosesan. Masukkan jumlah hingga 1.000 dalam kelipatan 100 (100, 200, 300, dan seterusnya) dan masukkan jumlah yang lebih besar dalam kelipatan 1000 (1000, 2000, 3000, dan seterusnya).

Mengaktifkan atau mengubah penghitung skala otomatis yang dikelola pada instance

Batasan berikut berlaku saat Anda menambahkan atau mengubah fitur penskalaan otomatis terkelola pada instance yang ada:

  • Anda tidak dapat mengaktifkan penskala otomatis yang dikelola pada instance yang Anda pindahkan.
  • Anda tidak dapat memindahkan instance saat penskala otomatis terkelola diaktifkan.

Konsol

  1. Buka halaman Spanner Instances di konsol Google Cloud.

    Buka halaman Instances

  2. Klik nama instance tempat Anda ingin mengaktifkan autoscaler terkelola.

  3. Klik Edit instance.

  4. Di bagian Configure compute capacity, klik Autoscaling.

  5. Untuk Minimum, pilih batas minimum yang akan digunakan saat memperkecil skala. Untuk informasi selengkapnya, lihat Menentukan batas minimum.

  6. Untuk Maksimum, pilih batas maksimum yang akan digunakan saat meningkatkan skala. Untuk mengetahui informasi selengkapnya, lihat Menentukan batas maksimum.

  7. Untuk Highpriority CPU utilization target, pilih persentase CPU prioritas tinggi yang akan digunakan. Untuk mengetahui informasi selengkapnya, lihat Menentukan target penggunaan CPU.

  8. Untuk Storage utilization target, pilih persentase penyimpanan yang akan digunakan. Untuk mengetahui informasi selengkapnya, lihat Menentukan target penggunaan penyimpanan.

  9. Klik Save.

gcloud

Gunakan perintah gcloud beta spanner instances update untuk menambahkan penskala otomatis terkelola ke instance. Untuk informasi dan batasan selengkapnya, lihat tanda dan batasan Google Cloud CLI.

Anda dapat menambahkan penskala otomatis terkelola dengan perintah berikut:

  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

atau

  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

Ganti kode berikut:

  • MINIMUM_PROCESSING_UNITS, MINIMUM_NODES: jumlah minimum unit pemrosesan atau node yang akan digunakan saat memperkecil skala. Untuk informasi selengkapnya, lihat Menentukan batas minimum.
  • MAXIMUM_PROCESSING_UNITS, MAXIMUM_NODES: jumlah maksimum unit pemrosesan atau node yang akan digunakan saat meningkatkan skala. Untuk mengetahui informasi selengkapnya, lihat Menentukan batas maksimum.
  • CPU_PERCENTAGE: persentase target CPU prioritas tinggi yang akan digunakan, dari 10% hingga 90%. Jika Anda mengoptimalkan biaya dan tidak memerlukan latensi rendah pada semua permintaan, gunakan persentase yang lebih tinggi. Untuk mengetahui informasi selengkapnya, lihat Menentukan target penggunaan CPU.
  • STORAGE_PERCENTAGE: persentase target penyimpanan yang akan digunakan, dari 10% hingga 99%. Untuk informasi selengkapnya, lihat Menentukan Target Penggunaan Penyimpanan.

Setelah menambahkan penskala otomatis terkelola ke instance, Anda juga dapat mengubah setelan penghitung skala otomatis yang dikelola. Misalnya, jika Anda ingin meningkatkan jumlah maksimum unit pemrosesan menjadi 10.000, jalankan perintah berikut:

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

Mengubah instance dari menggunakan penskalaan otomatis terkelola menjadi penskalaan manual

Konsol

  1. Buka halaman Spanner Instances di konsol Google Cloud.

    Buka halaman Instances

  2. Klik nama instance yang ingin Anda nonaktifkan autoscaler terkelola.

  3. Di bagian Pilih mode penskalaan, klik Alokasi manual.

  4. Klik Save.

gcloud

Gunakan perintah gcloud beta spanner instances update untuk mengupdate instance.

Gunakan perintah berikut untuk mengubah instance dari menggunakan autoscaler terkelola ke penskalaan manual:

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

atau

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

Ganti PROCESSING-UNIT-COUNT atau NODE-COUNT dengan jumlah unit pemrosesan atau node yang ingin Anda gunakan pada instance.

Memberi label pada instance

Label membantu mengatur resource Anda.

Konsol

  1. Buka halaman Spanner Instances di konsol Google Cloud.

    Buka halaman Instances

  2. Pilih kotak centang untuk instance tersebut. Panel info akan muncul di sisi kanan halaman.

  3. Klik tab Label di Panel info. Kemudian, Anda dapat menambahkan, menghapus, atau memperbarui label untuk instance Spanner.

Memindahkan instance

Untuk mengetahui petunjuk tentang cara memindahkan instance dari konfigurasi instance apa pun ke konfigurasi instance lainnya, termasuk antara konfigurasi regional dan multi-regional, lihat Memindahkan instance.

Menghapus instance

Anda dapat menghapus instance dengan Google Cloud Console atau Google Cloud CLI.

Jika ingin menghapus instance yang memiliki satu atau beberapa database dengan perlindungan penghapusan diaktifkan, Anda harus menonaktifkan perlindungan penghapusan terlebih dahulu pada semua database dalam instance tersebut sebelum dapat menghapus instance.

Konsol

  1. Buka halaman Spanner Instances di konsol Google Cloud.

    Buka halaman Instances

  2. Klik nama instance yang ingin Anda hapus.

  3. Klik Hapus instance.

  4. Ikuti petunjuk untuk mengonfirmasi bahwa Anda ingin menghapus instance.

  5. Klik Delete.

gcloud

Gunakan perintah gcloud spanner instances delete, yang menggantikan INSTANCE-ID dengan ID instance:

gcloud spanner instances delete INSTANCE-ID

Menghentikan atau memulai ulang instance

Spanner adalah layanan database terkelola sepenuhnya yang mengawasi tugas dan resource dasarnya sendiri, termasuk memantau dan memulai ulang proses jika diperlukan tanpa periode nonaktif. Karena instance tertentu tidak perlu dihentikan atau dimulai ulang secara manual, Spanner tidak menawarkan cara untuk melakukannya.

Langkah selanjutnya