Mengelola dan mengamati operasi yang berjalan lama

Halaman ini menjelaskan cara mengelola siklus proses operasi yang berjalan lama Spanner menggunakan operasi REST API.

Operasi yang berjalan lama adalah panggilan metode yang mungkin perlu waktu lama untuk diselesaikan. Spanner membuat operasi yang berjalan lama untuk beberapa instance, database, dan tindakan pencadangan. Contohnya adalah metode untuk memulihkan database, projects.instances.databases.restore.

Saat Anda memulihkan database, layanan Spanner akan membuat operasi yang berjalan lama untuk melacak progres pemulihan. Spanner menyediakan API operasi yang memungkinkan Anda memeriksa progres operasi yang berjalan lama. Anda juga dapat mencantumkan dan membatalkan operasi yang berjalan lama, serta menghapus operasi instance yang berjalan lama.

Anda dapat memeriksa dan mengelola operasi yang berjalan lama dengan hal berikut:

Mengelola operasi Spanner yang berjalan lama dengan REST API

Kelola operasi Spanner yang berjalan lama menggunakan metode REST berikut:

Tindakan Operasi database yang berjalan lama Operasi instance yang berjalan lama
Membatalkan operasi yang berjalan lama cancel cancel
Menghapus operasi yang berjalan lama Tidak Didukung Tidak Didukung
Memeriksa progres operasi yang berjalan lama get get
Membuat daftar operasi yang berjalan lama list list

Untuk mengetahui informasi tentang penggunaan REST dengan Spanner, lihat Mulai menggunakan Spanner menggunakan REST.

Operasi database

Berikut ini adalah operasi database yang berjalan lama.

Memeriksa progres operasi database yang berjalan lama

Gunakan projects.instances.databases.operations.get untuk memeriksa progres operasi database yang berjalan lama.

Contohnya, ini adalah respons dari projects.instances.databases.create:

  {
    "name": "projects/<VAR>PROJECT-ID</VAR>/instances/test-instance/databases/example-db/operations/_auto_1492721321097206",
    "metadata": {
      "@type": "type.googleapis.com/google.spanner.admin.database.v1.CreateDatabaseMetadata",
      "database": "projects/<VAR>PROJECT-ID</VAR>/instances/test-instance/databases/example-db"
    }
  }

Nilai name di bagian atas respons menunjukkan layanan Spanner membuat operasi database yang berjalan lama bernama projects/PROJECT-ID/instances/test-instance/databases/example-db/operations/_auto_1492721321097206.

Untuk memeriksa progres operasi database yang berjalan lama:

  1. Klik projects.instances.databases.operations.get.

  2. Untuk name, masukkan nama operasi database yang berjalan lama, seperti yang ditunjukkan dalam respons terhadap projects.instances.databases.create atau projects.instances.databases.updateDdl. Contoh:

    projects/PROJECT-ID/instances/test-instance/databases/example-db/operations/OPERATION-ID

    Ganti kode berikut:

    • PROJECT-ID dengan project ID.
    • OPERATION-ID dengan ID operasi.

    ambil nama operasi database dengan mencantumkan operasi database yang berjalan lama.

  3. Klik Jalankan. Setelah operasi selesai, kolom done ditetapkan ke true.

Untuk mendapatkan update berkelanjutan, panggil metode projects.instances.databases.operations.get berulang kali hingga operasi selesai. Menggunakan backoff di antara setiap permintaan. Misalnya, buat permintaan setiap 10 detik.

Mencantumkan operasi database yang berjalan lama

Gunakan projects.instances.databases.operations.list untuk mencantumkan operasi database yang berjalan lama.

  1. Klik projects.instances.databases.operations.list.
  2. Untuk name, masukkan:

    projects/PROJECT-ID/instances/test-instance/databases/example-db/operations

  3. Klik Jalankan. Respons berisi daftar operasi yang berjalan lama.

Membatalkan operasi database yang berjalan lama

Gunakan projects.instances.databases.operations.cancel untuk membatalkan operasi database yang berjalan lama.

  1. Klik projects.instances.databases.operations.cancel.
  2. Untuk name, masukkan nama operasi database yang berjalan lama, seperti ditunjukkan dalam respons operasi database yang berjalan lama. Contoh:

    projects/PROJECT-ID/instances/test-instance/databases/example-db/operations/_auto_1492721321097206

    (Gunakan nama operasi yang Anda terima, bukan nilai ini.) Anda juga dapat mengambil nama operasi database dengan mendaftarkan operasi database yang berjalan lama.

  3. Klik Jalankan.

Operasi update skema

Berikut adalah operasi pembaruan skema yang berjalan lama.

Memeriksa progres operasi pembaruan skema yang berjalan lama

Konsol

  1. Di menu navigasi Spanner, pilih tab Operations. Halaman Operations menampilkan daftar operasi yang sedang berjalan.

  2. Temukan operasi skema dalam daftar. Jika masih berjalan, status progres di kolom Waktu berakhir akan menampilkan persentase operasi yang selesai, seperti yang ditunjukkan pada gambar berikut:

Screenshot indikator progres yang menampilkan 98%

gcloud

Gunakan gcloud spanner operations describe untuk memeriksa progres operasi.

  1. Dapatkan ID operasi:

    gcloud spanner operations list --instance=INSTANCE-NAME \
    --database=DATABASE-NAME --type=DATABASE_UPDATE_DDL
    

    Ganti kode berikut:

    • INSTANCE-NAME dengan nama instance Spanner.
    • DATABASE-NAME dengan nama database.
  2. Jalankan gcloud spanner operations describe:

    gcloud spanner operations describe OPERATION-ID\
    --instance=INSTANCE-NAME \
    --database=DATABASE-NAME
    

    Ganti kode berikut:

    • OPERATION-ID: ID operasi dari operasi yang ingin Anda periksa.
    • INSTANCE-NAME: Nama instance Spanner.
    • DATABASE-NAME: Nama database Spanner.

    Bagian progress pada output menunjukkan persentase operasi yang selesai. Outputnya terlihat mirip dengan yang berikut ini:

    done: true
    metadata:
    ...
      progress:
      - endTime: '2022-03-01T00:28:06.691403Z'
        progressPercent: 100
        startTime: '2022-03-01T00:28:04.221401Z'
      - endTime: '2022-03-01T00:28:17.624588Z'
        startTime: '2022-03-01T00:28:06.691403Z'
        progressPercent: 100
    ...
    

REST v1

Dapatkan ID operasi:

gcloud spanner operations list --instance=INSTANCE-NAME \
--database=DATABASE-NAME --type=DATABASE_UPDATE_DDL

Ganti kode berikut:

  • INSTANCE-NAME dengan nama instance Spanner.
  • DATABASE-NAME dengan nama database.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • project-id: Project ID.
  • instance-id: ID instance.
  • database-id: ID database.
  • operation-id: ID operasi.

Metode HTTP dan URL:

GET https://spanner.googleapis.com/v1/projects/project-id/instances/instance-id/databases/database-id/operations/operation-id

Untuk mengirim permintaan, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

{
...
    "progress": [
      {
        "progressPercent": 100,
        "startTime": "2023-05-27T00:52:27.366688Z",
        "endTime": "2023-05-27T00:52:30.184845Z"
      },
      {
        "progressPercent": 100,
        "startTime": "2023-05-27T00:52:30.184845Z",
        "endTime": "2023-05-27T00:52:40.750959Z"
      }
    ],
...
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.protobuf.Empty"
  }
}

Jika operasi berlangsung terlalu lama, Anda dapat membatalkannya. Untuk informasi selengkapnya, lihat Membatalkan operasi pembaruan skema yang berjalan lama.

Mencantumkan operasi pembaruan skema yang berjalan lama

gcloud

gcloud spanner operations list --instance=INSTANCE-NAME \
--database=DATABASE-NAME --type=DATABASE_UPDATE_DDL

Ganti kode berikut:

  • INSTANCE-NAME dengan nama instance Spanner.
  • DATABASE-NAME dengan nama database.

Outputnya terlihat mirip dengan yang berikut ini:

OPERATION-ID     STATEMENTS                                                                                          DONE   @TYPE
_auto_op_123456  CREATE INDEX SingersByFirstLastName ON Singers(FirstName, LastName)                                 False  UpdateDatabaseDdlMetadata
               CREATE INDEX SongsBySingerAlbumSongName ON Songs(SingerId, AlbumId, SongName), INTERLEAVE IN Albums
_auto_op_234567                                                                                                      True   CreateDatabaseMetadata

Membatalkan operasi pembaruan skema yang berjalan lama

gcloud

  1. Dapatkan ID operasi:

    gcloud spanner operations list --instance=INSTANCE-NAME \
    --database=DATABASE-NAME --type=DATABASE_UPDATE_DDL
    

    Ganti kode berikut:

    • INSTANCE-NAME dengan nama instance Spanner.
    • DATABASE-NAME dengan nama database.
  2. Gunakan gcloud operations cancel untuk membatalkan operasi pembaruan skema yang berjalan lama.

    gcloud operations cancel OPERATION-ID \
    --instance=INSTANCE-NAME \
    

    Ganti kode berikut:

    • OPERATION-ID: ID operasi dari operasi yang ingin Anda periksa.
    • INSTANCE-NAME: Nama instance Spanner.

REST V1

Gunakan projects.instances.databases.operations.cancel untuk membatalkan operasi pembaruan skema yang berjalan lama.

  1. Dapatkan ID operasi:

    gcloud spanner operations list --instance=INSTANCE-NAME \
    --database=DATABASE-NAME --type=DATABASE_UPDATE_DDL
    

    Ganti kode berikut:

    • INSTANCE-NAME dengan nama instance Spanner.
    • DATABASE-NAME dengan nama database.
  2. Klik projects.instances.databases.operations.cancel.

  3. Untuk name, masukkan nama operasi pembaruan skema yang berjalan lama, seperti yang ditunjukkan dalam respons operasi pembaruan skema yang berjalan lama. Contoh:

    projects/PROJECT-ID/instances/test-instance/databases/example-db/operations/OPERATION-ID

    Ganti kode berikut:

    • PROJECT-ID dengan project ID.
    • OPERATION-ID dengan ID operasi.

    Anda juga dapat mencantumkan operasi instance yang berjalan lama untuk mengambil nama operasi pembaruan skema.

  4. Klik Jalankan. Operasi berhenti berjalan.

Operasi pencadangan dan pemulihan

Berikut adalah operasi pencadangan yang berjalan lama.

Memeriksa progres operasi pencadangan atau pemulihan yang berjalan lama

Konsol

Pencadangan

  1. Di menu navigasi Spanner, pilih tab Operations. Halaman Operations menampilkan daftar operasi yang sedang berjalan.

  2. Temukan operasi skema dalam daftar. Jika masih berjalan, status progres di kolom Waktu berakhir akan menampilkan persentase operasi yang selesai, seperti yang ditunjukkan pada gambar berikut:

Screenshot indikator progres yang menampilkan 98%

Pulihkan

Untuk memeriksa progres operasi pemulihan, lihat indikator progres yang ditampilkan selama pemulihan, seperti yang ditunjukkan pada gambar berikut:

Screenshot indikator progres yang menampilkan 56%

Jika operasi berlangsung terlalu lama, Anda dapat membatalkannya. Untuk mengetahui informasi selengkapnya, baca bagian Membatalkan operasi instance yang berjalan lama.

gcloud

Gunakan gcloud spanner operations describe untuk memeriksa progres operasi pencadangan atau pemulihan.

  1. Dapatkan ID operasi:

    gcloud spanner operations list --instance=INSTANCE-NAME \
    --database=DATABASE-NAME --type=DATABASE_UPDATE_DDL
    

    Ganti kode berikut:

    • INSTANCE-NAME dengan nama instance Spanner.
    • DATABASE-NAME dengan nama database.
  2. Jalankan gcloud spanner operations describe:

    gcloud spanner operations describe OPERATION-ID\
    --instance=INSTANCE-NAME \
    --database=DATABASE-NAME
    

    Ganti kode berikut:

    • OPERATION-ID: ID operasi dari operasi yang ingin Anda periksa.
    • INSTANCE-NAME: Nama instance Spanner.
    • DATABASE-NAME: Nama database Spanner.

    Bagian progress pada output menunjukkan persentase operasi yang selesai. Outputnya terlihat mirip dengan yang berikut ini:

    done: true
    metadata:
    ...
      progress:
      - endTime: '2022-03-01T00:28:06.691403Z'
        progressPercent: 100
        startTime: '2022-03-01T00:28:04.221401Z'
      - endTime: '2022-03-01T00:28:17.624588Z'
        startTime: '2022-03-01T00:28:06.691403Z'
        progressPercent: 100
    ...
    

REST v1

Dapatkan ID operasi:

  gcloud spanner operations list --instance=INSTANCE-NAME 
--database=DATABASE-NAME --type=DATABASE_UPDATE_DDL

Ganti kode berikut:

  • INSTANCE-NAME dengan nama instance Spanner.
  • DATABASE-NAME dengan nama database.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • project-id: Project ID.
  • instance-id: ID instance.
  • database-id: ID database.
  • operation-id: ID operasi.

Metode HTTP dan URL:

GET https://spanner.googleapis.com/v1/projects/project-id/instances/instance-id/databases/database-id/operations/operation-id

Untuk mengirim permintaan, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

{
...
    "progress": [
      {
        "progressPercent": 100,
        "startTime": "2023-05-27T00:52:27.366688Z",
        "endTime": "2023-05-27T00:52:30.184845Z"
      },
      {
        "progressPercent": 100,
        "startTime": "2023-05-27T00:52:30.184845Z",
        "endTime": "2023-05-27T00:52:40.750959Z"
      }
    ],
...
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.protobuf.Empty"
  }
}

Jika operasi berlangsung terlalu lama, Anda dapat membatalkannya. Untuk informasi selengkapnya, lihat Membatalkan operasi pencadangan yang berjalan lama.

Mencantumkan operasi pencadangan atau pemulihan yang berjalan lama

Gunakan projects.instances.backups.operations.list untuk mencantumkan operasi pada satu pencadangan atau projects.instances.backupOperations.list untuk mencantumkan semua operasi pencadangan dalam instance.

  1. Klik projects.instances.backups.operations.list.

  2. Untuk name, masukkan:

    projects/project-id/instances/test-instance/backups/example-db-backup-4/operations

  3. Klik Jalankan. Respons berisi daftar operasi yang berjalan lama.

Membatalkan operasi pencadangan yang berjalan lama

Gunakan projects.instances.backups.operations.cancel untuk membatalkan operasi pencadangan yang berjalan lama.

  1. Klik projects.instances.backups.operations.cancel.

  2. Untuk name, masukkan nama operasi pencadangan yang berjalan lama, seperti yang ditunjukkan dalam respons operasi pencadangan yang berjalan lama. Contoh:

    projects/project-id/instances/test-instance/backups/example-db-backup-4/operations/_auto_1492721321097206

    Ganti _auto_1492721321097206 dengan ID operasi Anda.

    Anda dapat mengambil nama operasi pencadangan dengan mencantumkan operasi pencadangan yang berjalan lama.

  3. Klik Jalankan.

Operasi instance

Berikut adalah operasi instance yang berjalan lama.

Memeriksa progres operasi instance yang berjalan lama

Gunakan projects.instances.operations.get untuk memeriksa progres operasi instance yang berjalan lama.

Contohnya, ini adalah respons dari projects.instances.create:

  {
    "name": "projects/<VAR>PROJECT-ID</VAR>/instances/test-instance/operations/<VAR>OPERATION-ID</VAR>",
    "metadata": {
      "@type": "type.googleapis.com/google.spanner.admin.instance.v1.CreateInstanceMetadata",
      "instance": {
        "name": "projects/<VAR>PROJECT-ID</VAR>/instances/test-instance",
        "config": "projects/<VAR>PROJECT-ID</VAR>/instanceConfigs/regional-us-central1",
        "displayName": "Test Instance",
        "nodeCount": 1,
        "state": "READY"
      },
      "startTime": "2017-04-24T22:45:41.130854Z"
    }
  }

Nilai name di bagian atas respons menunjukkan layanan Spanner membuat operasi instance yang berjalan lama bernama projects/PROJECT-ID/instances/test-instance/operations/<VAR>OPERATION-ID</VAR>.

Untuk memeriksa progres operasi instance yang berjalan lama:

  1. Klik projects.instances.operations.get.
  2. Untuk name, masukkan nama operasi instance yang berjalan lama seperti yang ditunjukkan dalam respons terhadap projects.instances.create atau projects.instances.patch. Misalnya:

    projects/PROJECT-ID/instances/test-instance/operations/OPERATION-ID

    Ganti kode berikut:

    • PROJECT-ID dengan project ID.
    • OPERATION-ID dengan ID operasi.

    Anda dapat mengambil nama operasi instance dengan mencantumkan operasi instance yang berjalan lama.

  3. Klik Jalankan. Setelah operasi selesai, kolom done ditetapkan ke true.

Untuk mendapatkan update berkelanjutan, panggil metode projects.instances.databases.operations.get berulang kali hingga operasi selesai. Menggunakan backoff di antara setiap permintaan. Misalnya, buat permintaan setiap 10 detik.

Mencantumkan operasi instance yang berjalan lama

Gunakan projects.instances.operations.list untuk mencantumkan operasi instance yang berjalan lama.

  1. Klik projects.instances.operations.list.
  2. Untuk name, masukkan:

    projects/PROJECT-ID/instances/test-instance/operations

  3. Klik Jalankan. Respons berisi daftar operasi yang berjalan lama.

Membatalkan operasi instance yang berjalan lama

Gunakan projects.instances.operations.cancel untuk membatalkan operasi instance yang berjalan lama.

  1. Klik projects.instances.operations.cancel.
  2. Untuk name, masukkan nama operasi instance yang berjalan lama seperti yang ditunjukkan dalam respons operasi instance yang berjalan lama. Contoh:

    projects/PROJECT-ID/instances/test-instance/operations/OPERATION-ID

    Ganti kode berikut:

    • PROJECT-ID dengan project ID.
    • OPERATION-ID dengan ID operasi.

    Anda dapat mengambil nama operasi instance dengan mencantumkan operasi instance yang berjalan lama.

  3. Klik Jalankan.

Menghapus operasi instance yang berjalan lama

Gunakan projects.instances.operations.delete untuk menghapus operasi instance yang berjalan lama.

  1. Klik projects.instances.operations.delete.
  2. Untuk name, masukkan nama operasi instance yang berjalan lama seperti yang ditunjukkan dalam respons operasi instance yang berjalan lama. Contoh:

    projects/PROJECT-ID/instances/test-instance/operations/OPERATION-ID

    Ganti kode berikut:

    • PROJECT-ID dengan project ID.
    • OPERATION-ID dengan ID operasi.

    Anda dapat mengambil nama operasi instance dengan mencantumkan operasi instance yang berjalan lama.

  3. Klik Jalankan. Operasi akan dihapus.