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:
- Library klien Spanner
- Alat command line
gcloud
- Konsol Google Cloud
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.
projects.instances.databases.create
projects.instances.databases.restore
projects.instances.databases.updateDdl
projects.instances.databaseOperations.list
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:
Untuk name, masukkan nama operasi database yang berjalan lama, seperti yang ditunjukkan dalam respons terhadap
projects.instances.databases.create
atauprojects.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.
Klik Jalankan. Setelah operasi selesai, kolom
done
ditetapkan ketrue
.
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.
- Klik
projects.instances.databases.operations.list
. Untuk name, masukkan:
projects/PROJECT-ID/instances/test-instance/databases/example-db/operations
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.
- Klik
projects.instances.databases.operations.cancel
. 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.
Klik Jalankan.
Operasi update skema
Berikut adalah operasi pembaruan skema yang berjalan lama.
Memeriksa progres operasi pembaruan skema yang berjalan lama
Konsol
Di menu navigasi Spanner, pilih tab Operations. Halaman Operations menampilkan daftar operasi yang sedang berjalan.
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:
gcloud
Gunakan gcloud spanner operations describe
untuk memeriksa progres operasi.
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.
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
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.
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.
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.
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.
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
Di menu navigasi Spanner, pilih tab Operations. Halaman Operations menampilkan daftar operasi yang sedang berjalan.
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:
Pulihkan
Untuk memeriksa progres operasi pemulihan, lihat indikator progres yang ditampilkan selama pemulihan, seperti yang ditunjukkan pada gambar berikut:
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.
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.
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.
Untuk name, masukkan:
projects/project-id/instances/test-instance/backups/example-db-backup-4/operations
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.
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.
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:
- Klik
projects.instances.operations.get
. Untuk name, masukkan nama operasi instance yang berjalan lama seperti yang ditunjukkan dalam respons terhadap
projects.instances.create
atauprojects.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.
Klik Jalankan. Setelah operasi selesai, kolom
done
ditetapkan ketrue
.
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.
- Klik
projects.instances.operations.list
. Untuk name, masukkan:
projects/PROJECT-ID/instances/test-instance/operations
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.
- Klik
projects.instances.operations.cancel
. 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.
Klik Jalankan.
Menghapus operasi instance yang berjalan lama
Gunakan projects.instances.operations.delete
untuk menghapus operasi instance yang berjalan lama.
- Klik
projects.instances.operations.delete
. 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.
Klik Jalankan. Operasi akan dihapus.