Mencadangkan dan memulihkan database menggunakan gcloud CLI

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 bernama example-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.

  1. 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
      ```
    
  2. 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.