Halaman ini menjelaskan cara menggunakan fitur pencadangan dan pemulihan Spanner dengan Google Cloud CLI.
Prasyarat
Contoh di halaman ini membuat asumsi berikut:
Anda telah menyiapkan gcloud CLI untuk digunakan dengan Spanner. Jika Anda baru menggunakan Google Cloud CLI dengan Spanner, lihat Mulai menggunakan Spanner menggunakan Google Cloud CLI.
Anda telah mengonfigurasi Google Cloud CLI dengan project default. Contoh:
gcloud config set core/project my-project
Anda memiliki instance bernama
test-instance
dan database bernamaexample-db
.
Buat cadangan
Untuk membuat cadangan bernama example-db-backup-6
dan habis masa berlakunya dalam 1 tahun,
gunakan gcloud spanner backups create
:
gcloud spanner backups create example-db-backup-6 --instance=test-instance \
--database=example-db --retention-period=1y --async
Berikut ini beberapa catatan penggunaan:
- Untuk menetapkan tanggal habis masa berlaku cadangan, tentukan tanda
--retention-period
atau--expiration-date
. Untuk mengetahui informasi tentang sintaksis tanggal , lihat gcloud topic datetimes. - Nama cadangan harus unik dalam instance.
- Perintah segera ditampilkan karena flag
--async
. Tanpa flag tersebut, perintah akan menunggu hingga operasi pencadangan selesai. Tentukan flag
--help
untuk mendapatkan bantuan atas perintah apa pun.Outputnya terlihat mirip dengan yang berikut ini:
Create request issued for: [example-db-backup-6] Check operation [projects/my-project/instances/test-instance/backups/example-db-backup-6/operations/_auto_op_234567] for status.
Untuk memeriksa progres operasi pencadangan, lihat Memeriksa progres operasi.
Menyalin cadangan
Untuk menyalin cadangan ke instance lain dalam project yang sama:
gcloud spanner backups copy \
--source-instance=test-instance \
--source-backup=example-db \
--destination-instance=backup-instance \
--destination-backup=copied-backup \
--expiration-date=2022-03-30T10:49:41Z
Untuk menyalin cadangan ke instance lain dalam project yang berbeda:
gcloud spanner backups copy \
--source-backup=projects/my-project/instances/test-instance/backups/example-db \
--destination-backup=projects/backup-project/instances/backup-instance-eu/backups/copied-backup \
--expiration-date=2022-03-30T10:49:41Z
Catatan penggunaan:
- Jika memilih untuk menyalin cadangan ke instance berbeda dalam project yang sama, Anda harus membuat instance baru (atau menyiapkan satu instance) untuk cadangan yang disalin.
Pada contoh sebelumnya,
backup-instance
digunakan. Anda tidak dapat membuat instance baru sebagai bagian dari operasi penyalinan cadangan. - Jika memilih untuk menyalin cadangan ke project yang berbeda, Anda harus memiliki project lain dengan instance-nya sendiri yang siap untuk cadangan yang disalin. Dalam contoh
sebelumnya,
backup-project
digunakan. Anda tidak dapat membuat project baru sebagai bagian dari operasi penyalinan cadangan. - Waktu habis masa berlaku cadangan harus minimal enam jam sejak permintaan penyalinan saat ini diproses dan maksimal 366 hari setelah pencadangan sumber
create_time
.
Outputnya terlihat mirip dengan yang berikut ini:
createTime: '2022-03-29T22:06:05.905823Z'
database: projects/my-project/instances/test-instance/databases/example-db
databaseDialect: GOOGLE_STANDARD_SQL
encryptionInfo:
encryptionType: GOOGLE_DEFAULT_ENCRYPTION
expireTime: '2022-03-30T10:49:41Z'
maxExpireTime: '2023-03-17T20:46:33.479336Z'
name: projects/backup-project/instances/backup-instance-eu/backups/copied-backup
sizeBytes: '7957667'
state: READY
versionTime: '2022-03-16T20:46:33.479336Z'
Untuk memeriksa progres operasi penyalinan, lihat Memeriksa progres operasi.
Memulihkan database dari cadangan
Untuk memulihkan database, gunakan gcloud spanner databases restore
:
gcloud spanner databases restore --async \
--destination-instance=test-instance --destination-database=example-db-restored \
--source-instance=test-instance --source-backup=example-db-backup-6
Catatan penggunaan:
- Perintah segera ditampilkan karena flag
--async
. Tanpa flag, perintah akan menunggu hingga operasi pemulihan selesai. - Jika instance sumber dan tujuan berbeda, keduanya harus memiliki konfigurasi instance yang sama.
- Jika database tujuan sudah ada, operasi akan gagal.
Outputnya terlihat mirip dengan yang berikut ini:
Restore database in progress. Operation name=projects/my-project/instances/test-instance/databases/example-db-restored-1/operations/_auto_op_bb8e360b256b04bf
Untuk melacak progres operasi pemulihan, lihat Memeriksa progres operasi.
Memeriksa progres operasi
Gunakan gcloud spanner operations describe
untuk memeriksa progres operasi.
Dapatkan ID operasi:
gcloud spanner operations list --instance=INSTANCE-NAME \ --database=DATABASE-NAME --type=BACKUP
Ganti kode berikut:
- INSTANCE-NAME dengan nama instance Spanner.
- DATABASE-NAME dengan nama database.
Catatan penggunaan:
Untuk membatasi daftar, tentukan flag
--filter
. Contoh:--filter="metadata.name:example-db"
hanya mencantumkan operasi pada database tertentu.--filter="error:*"
hanya mencantumkan operasi pencadangan yang gagal.
Untuk mengetahui informasi tentang sintaksis filter, lihat gcloud topic filters. Untuk mengetahui informasi tentang cara memfilter operasi pencadangan, lihat kolom
filter
di ListBackupOperationsRequest.Flag
--type
tidak peka huruf besar/kecil.
Outputnya terlihat mirip dengan yang berikut ini:
OPERATION_ID DONE @TYPE BACKUP SOURCE_DATABASE START_TIME END_TIME _auto_op_123456 True CreateBackupMetadata example-db-backup-7 example-db 2020-02-04T02:12:38.075515Z 2020-02-04T02:22:40.581170Z _auto_op_234567 True CreateBackupMetadata example-db-backup-6 example-db 2020-02-04T02:05:43.920377Z 2020-02-04T02:07:59.089820Z ```
Jalankan
gcloud spanner operations describe
:gcloud spanner operations describe OPERATION-ID \ --instance=INSTANCE-NAME \ --backup=BACKUP-NAME \
Ganti kode berikut:
- OPERATION-ID: ID operasi dari operasi yang ingin Anda periksa.
- INSTANCE-NAME: Nama instance Spanner.
- BACKUP-NAME: Nama cadangan 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 ...
Jika operasi berlangsung terlalu lama, Anda dapat membatalkannya. Untuk informasi selengkapnya, lihat Membatalkan operasi pencadangan yang berjalan lama.
Mendapatkan informasi pencadangan
Untuk mendapatkan informasi tentang pencadangan:
gcloud spanner backups describe example-db-backup-6 --instance=test-instance
Outputnya terlihat mirip dengan yang berikut ini:
createTime: '2020-02-04T02:05:43.920377Z'
database: projects/my-project/instances/test-instance/databases/example-db
expireTime: '2021-02-04T02:05:43.268327Z'
name: projects/my-project/instances/test-instance/backups/example-db-backup-6
sizeBytes: '1000000000'
state: READY
Untuk mengetahui detail selengkapnya tentang perintah ini, lihat gcloud spanner backups describe
.
Mencantumkan pencadangan
Untuk menampilkan daftar semua cadangan dalam sebuah instance:
gcloud spanner backups list --instance=test-instance
Outputnya terlihat mirip dengan yang berikut ini:
BACKUP SOURCE_DATABASE CREATION_TIME EXPIRATION_TIME STATE BACKUP_SIZE_IN_BYTES IN_USE_BY
example-db-backup-6 example-db 2020-02-04T02:05:43.920377Z 2021-02-04T02:05:43.268327Z CREATING
example-db-backup-4 example-db 2020-02-04T01:21:20.873839Z 2021-02-04T01:21:20.530151Z READY 32
example-db-backup-3 example-db 2020-02-03T23:59:18.936433Z 2021-02-03T23:59:18.203083Z READY 32
example-db-backup-5 example-db 2020-02-03T23:48:06.259296Z 2021-02-03T23:48:05.830937Z READY 32
example-db-backup-2 example-db 2020-01-30T19:49:00.616338Z 2021-01-30T19:49:00.283917Z READY 32
example-db-backup-1 example-db 2020-01-30T19:47:09.492551Z 2021-01-30T19:47:09.097804Z READY 32
Untuk membatasi daftar, tentukan flag --filter
. Misalnya,
--filter="state:creating"
hanya mencantumkan cadangan yang masih dibuat.
Untuk mengetahui informasi tentang sintaksis filter, lihat gcloud topic filters.
Untuk mengetahui informasi tentang cara memfilter cadangan, lihat kolom filter
di ListBackupsRequest.
Untuk mengetahui detail selengkapnya tentang perintah ini, lihat gcloud spanner backups list
.
Mengupdate metadata cadangan
Untuk memperbarui tanggal habis masa berlaku cadangan:
gcloud spanner backups update-metadata example-db-backup-6 \
--instance=test-instance --expiration-date=2020-05-05T00:00:00Z
Outputnya terlihat mirip dengan yang berikut ini:
createTime: '2020-02-04T02:05:43.920377Z'
database: projects/my-project/instances/test-instance/databases/example-db
expireTime: '2020-05-05T00:00:00Z'
name: projects/my-project/instances/test-instance/backups/example-db-backup-6
sizeBytes: '1000000000'
state: READY
Untuk mengetahui detail selengkapnya tentang perintah ini, lihat gcloud spanner backups update-metadata
.
Hapus backup
Untuk menghapus cadangan:
gcloud spanner backups delete example-db-backup-1 --instance=test-instance
Anda harus mengonfirmasi operasi:
You are about to delete backup [example-db-backup-1]
Do you want to continue (Y/n)? Y
Deleted backup [example-db-backup-1].
Untuk mengetahui detail selengkapnya tentang perintah ini, lihat gcloud spanner backups delete
.