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:
- Library klien Spanner
- Alat command line
gcloud
- Konsol Google Cloud
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:
- Buka
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/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.
Klik Jalankan. Saat operasi selesai, kolom
done
ditetapkan ketrue
.
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.
- Buka
projects.instances.operations.list
. 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.
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.
- Buka
projects.instances.operations.cancel
. 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.
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.
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.
Buka Execute. Operasi dihapus.
Operasi database
Berikut 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.
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:
Untuk name, masukkan nama operasi database yang berjalan lama seperti yang ditampilkan dalam respons terhadap
projects.instances.databases.create
atauprojects.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.
Klik Jalankan. Saat operasi selesai, kolom
done
ditetapkan ketrue
.
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.
- Buka
projects.instances.databases.operations.list
. 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.
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.
- Buka
projects.instances.databases.operations.cancel
. 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.
Klik Jalankan.
Operasi pembaruan 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.
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.
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
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.
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.
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.
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.
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 Operasi 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 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.
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
danDATABASE_RESTORE
.
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.
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.
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.
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.
Klik Jalankan.