Mengelola dan mengamati operasi yang berjalan lama

Halaman ini menjelaskan cara mengelola siklus proses operasi jangka panjang Spanner menggunakan perintah gcloud spanner operations dan REST API operasi. Beberapa prosedur juga dapat dilakukan di konsol Google Cloud.

Operasi yang berjalan lama adalah panggilan metode yang mungkin memerlukan waktu lama untuk diselesaikan. Spanner membuat operasi yang berjalan lama untuk beberapa tindakan instance, database, dan 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. Jika operasi memerlukan waktu lebih lama dari yang Anda perkirakan, Anda dapat menggunakan gcloud untuk memeriksa progres operasi. Jika operasi tidak merespons, Anda dapat menggunakan gcloud untuk membatalkan operasi.

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 cara berikut:

Perintah REST API untuk pengelolaan operasi

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 delete
Memeriksa progres operasi yang berjalan lama get get
Membuat daftar operasi yang berjalan lama list list

Untuk informasi tentang cara menggunakan REST dengan Spanner, lihat Memulai Spanner menggunakan REST.

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.

Sebagai contoh, berikut adalah respons dari projects.instances.create:

  {
    "name": "projects/test01/instances/test-instance/operations/_auto_1492721321097206",
    "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 bahwa layanan Spanner membuat operasi instance yang berjalan lama bernama projects/test01/instances/test-instance/operations/_auto_1492721321097206.

Untuk Memeriksa progres operasi instance yang berjalan lama:

  1. Buka 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/INSTANCE-NAME/operations/OPERATION-ID

    Ganti kode berikut:

    • PROJECT-ID: project ID.
    • INSTANCE-NAME: nama instance.
    • OPERATION-ID: ID operasi.

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

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

Untuk mendapatkan update berkelanjutan, panggil metode projects.instances.databases.operations.get berulang kali hingga operasi selesai. Gunakan 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. Buka projects.instances.operations.list.
  2. Untuk name, masukkan:

    projects/PROJECT-ID/instances/INSTANCE-NAME/operationsOPERATION-ID

    Ganti kode berikut:

    • PROJECT-ID: project ID.
    • INSTANCE-NAME: nama instance.
    • OPERATION-ID: ID operasi.
  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. Buka projects.instances.operations.cancel.
  2. Untuk name, masukkan nama operasi instance yang berjalan lama seperti yang ditunjukkan dalam respons operasi instance yang berjalan lama.

    projects/PROJECT-ID/instances/INSTANCE-NAME/operations/OPERATION-ID

    Ganti kode berikut:

    • PROJECT-ID: project ID.
    • INSTANCE-NAME: nama instance.
    • OPERATION-ID: ID operasi.

    Anda juga 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.

    projects/<VAR>PROJECT-ID</VAR>/instances/<VAR>INSTANCE-NAME</VAR>/operations/<VAR>OPERATION-ID</VAR>
    

    Ganti kode berikut:

    • PROJECT-ID: project ID.
    • INSTANCE-NAME: nama instance.
    • OPERATION-ID: ID operasi.

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

  3. Buka Execute. Operasi dihapus.

Operasi database

Berikut 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.

Misalnya, berikut adalah respons dari projects.instances.databases.create:

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

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

Untuk memeriksa progres operasi database yang berjalan lama:

  1. Buka projects.instances.databases.operations.get.

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

    projects/PROJECT-ID/instances/INSTANCE-NAME/databases/example-db/operations/OPERATION-ID

    Ganti kode berikut:

    • PROJECT-ID: project ID.
    • INSTANCE-NAME: nama instance.
    • OPERATION-ID: ID operasi.

    Anda juga dapat mengambil nama operasi database dengan mencantumkan operasi database yang berjalan lama.

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

Untuk mendapatkan update berkelanjutan, panggil metode projects.instances.databases.operations.get berulang kali hingga operasi selesai. Gunakan 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. Buka projects.instances.databases.operations.list.
  2. Untuk name, masukkan:

    projects/PROJECT-ID/instances/INSTANCE-NAME/databases/example-db/OPERATION-ID

    Ganti kode berikut:

    • PROJECT-ID: project ID.
    • INSTANCE-NAME: nama instance.
    • OPERATION-ID: ID operasi.
  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. Buka projects.instances.databases.operations.cancel.
  2. Untuk name, masukkan nama operasi database yang berjalan lama seperti yang ditunjukkan dalam respons operasi database yang berjalan lama.

    projects/PROJECT-ID/instances/INSTANCE-NAME/databases/example-db/OPERATION-ID

    Ganti kode berikut:

    • PROJECT-ID: project ID.
    • INSTANCE-NAME: nama instance.
    • OPERATION-ID: ID operasi.

    Anda juga dapat mengambil nama operasi database dengan mencantumkan operasi database yang berjalan lama.

  3. Klik Jalankan.

Operasi pembaruan 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 menunjukkan 98%

gcloud

Gunakan gcloud spanner operations describe untuk memeriksa progres operasi.

  1. Mendapatkan ID operasi:

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

    Ganti kode berikut:

    • INSTANCE-NAME: nama instance Spanner.
    • DATABASE-NAME: nama instance.
    • DATABASE-NAME: 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 dalam output menunjukkan persentase operasi yang telah 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

Mendapatkan ID operasi:

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

Ganti kode berikut:

  • INSTANCE-NAME: nama instance Spanner.
  • DATABASE-NAME: 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 membutuhkan waktu terlalu lama, Anda dapat membatalkannya. Untuk mengetahui 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: nama instance Spanner.
  • DATABASE-NAME: 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
_auto_op_234567  CREATE INDEX SongsBySingerAlbumSongName ON Songs(SingerId, AlbumId, SongName), INTERLEAVE IN Albums  True   CreateDatabaseMetadata

Membatalkan operasi pembaruan skema yang berjalan lama

gcloud

  1. Mendapatkan ID operasi:

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

    Ganti kode berikut:

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

    gcloud spanner 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. Mendapatkan ID operasi:

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

    Ganti kode berikut:

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

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

    projects/PROJECT-ID/instances/INSTANCE-NAME/databases/example-db/operations/OPERATION-ID

    Ganti kode berikut:

    • PROJECT-ID: project ID.
    • INSTANCE-NAME: nama instance.
    • OPERATION-ID: ID operasi.

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

  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 Operasi 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 menunjukkan 98%

Pulihkan

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

Screenshot indikator progres yang menunjukkan 56%

Jika operasi membutuhkan waktu terlalu lama, Anda dapat membatalkannya. Untuk mengetahui informasi selengkapnya, lihat Membatalkan operasi instance yang berjalan lama.

gcloud

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

  1. Mendapatkan ID operasi:

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

    Ganti kode berikut:

    • INSTANCE-NAME: nama instance Spanner.
    • DATABASE-NAME: nama database.
    • TYPE: jenis operasi. Kemungkinan nilainya adalah BACKUP dan DATABASE_RESTORE.
  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 dalam output menunjukkan persentase operasi yang telah 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

Mendapatkan ID operasi:

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

Ganti kode berikut:

  • INSTANCE-NAME: nama instance Spanner.
  • DATABASE-NAME: 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 membutuhkan waktu terlalu lama, Anda dapat membatalkannya. Untuk mengetahui 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. Buka projects.instances.backups.operations.list.

  2. Untuk name, masukkan:

    projects/PROJECT-ID/instances/INSTANCE-NAME/backups/BACKUP-NAME/OPERATION-ID

    Ganti kode berikut:

    • PROJECT-ID: project ID.
    • INSTANCE-NAME: nama instance.
    • BACKUP-NAME: nama cadangan.
    • OPERATION-ID: ID operasi.
  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. Buka 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.

    projects/PROJECT-ID/instances/INSTANCE-NAME/backups/BACKUP-NAME/operations/OPERATION-ID

    Ganti kode berikut:

    • PROJECT-ID: project ID.
    • INSTANCE-NAME: nama instance.
    • BACKUP-NAME: nama cadangan.
    • OPERATION-ID: ID operasi.

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

  3. Klik Jalankan.