Cadangan Spanner Omni

Spanner Omni memungkinkan Anda membuat cadangan lengkap database sesuai permintaan atau menggunakan jadwal pencadangan. Cadangan menyimpan seluruh data database. Anda dapat memulihkan cadangan saat error operator atau aplikasi menyebabkan kerusakan data logis.

Ringkasan pencadangan Spanner Omni

Cadangan memiliki ketersediaan tinggi dan dapat disimpan hingga satu tahun sejak waktu pembuatannya. Setiap cadangan memiliki createTime dan versionTime terkait. createTime adalah stempel waktu saat Spanner Omni mulai membuat cadangan. versionTime adalah stempel waktu saat pencadangan mengambil isi database. Cadangan berisi tampilan database yang konsisten pada versionTime.

Untuk pencadangan sesuai permintaan, createTime dan versionTime sama secara default. Jika perlu, Anda dapat menentukan versionTime yang lebih lama saat membuat cadangan sesuai permintaan jika berada dalam periode retensi versi database.

Untuk pencadangan terjadwal, versionTime adalah waktu yang Anda pilih saat membuat jadwal pencadangan. Spanner Omni mulai membuat cadangan dalam waktu empat jam setelah versionTime, sehingga createTime berada dalam periode empat jam ini. Hal ini berbeda dengan pencadangan sesuai permintaan, di mana Spanner Omni mulai membuat cadangan saat menerima permintaan.

Misalnya, Anda membuat jadwal pencadangan dengan frekuensi 0 7 * * * UTC (setiap hari pukul 07.00 UTC). Artinya, untuk setiap pencadangan, versionTime adalah 07.00 UTC dan createTime adalah stempel waktu dalam periode empat jam antara 07.00 UTC dan 11.00 UTC.

Fitur utama

Pencadangan Spanner Omni memberikan konsistensi data, replikasi eksternal yang tangguh, dan masa berlaku otomatis.

  • Konsistensi data: cadangan database Spanner Omni konsisten secara transaksional dan eksternal pada versionTime cadangan.

  • Replikasi: file cadangan disimpan dalam sistem penyimpanan eksternal, di luar deployment Spanner Omni.

  • Masa berlaku otomatis: semua cadangan memiliki tanggal habis masa berlaku yang ditentukan pengguna yang menentukan kapan cadangan tersebut dihapus. Spanner Omni menghapus cadangan yang habis masa berlakunya secara asinkron, sehingga mungkin ada jeda waktu antara saat cadangan habis masa berlakunya dan saat cadangan benar-benar dihapus.

Penyimpanan eksternal

Penyimpanan eksternal merepresentasikan penyimpanan jarak jauh yang berada di luar deployment Spanner Omni. Anda dapat mengonfigurasi Amazon Simple Storage Service (Amazon S3), Cloud Storage, atau penyimpanan yang kompatibel dengan Amazon S3 sebagai penyimpanan eksternal. Spanner Omni menyimpan file cadangan di penyimpanan eksternal ini.

Pengelolaan penyimpanan eksternal

Kelola penyimpanan eksternal dengan membuat, menghapus, dan mencantumkan lokasi penyimpanan untuk cadangan Anda.

Membuat penyimpanan eksternal

Untuk membuat penyimpanan eksternal Amazon S3, jalankan perintah berikut:

spanner external-storages create EXTERNAL_STORAGE_ID \
  --s3-bucket-name=BUCKET_NAME \
  --s3-region=AWS_REGION \
  --s3-assume-role-arn=ASSUME_ROLE_ARN

Membuat penyimpanan eksternal Cloud Storage

Untuk membuat penyimpanan eksternal Cloud Storage, jalankan perintah berikut:

spanner external-storages create EXTERNAL_STORAGE_ID \
   --gcs-bucket-name=BUCKET_NAME

Membuat penyimpanan eksternal yang kompatibel dengan Amazon S3

Untuk membuat penyimpanan eksternal yang kompatibel dengan Amazon S3, jalankan perintah berikut:

spanner external-storages create EXTERNAL_STORAGE_ID \
    --s3-compatible-bucket-name=BUCKET_NAME \
    --s3-compatible-endpoint=ENDPOINT \
    --s3-compatible-credential-file-path=FILE

Menghapus penyimpanan eksternal

Untuk menghapus penyimpanan eksternal, pastikan tidak ada pencadangan yang ada atau sedang berlangsung. Kemudian, jalankan perintah berikut:

spanner external-storages delete EXTERNAL_STORAGE_ID

Mendeskripsikan penyimpanan eksternal

Untuk mendapatkan informasi tentang penyimpanan eksternal, jalankan perintah berikut:

spanner external-storages describe EXTERNAL_STORAGE_ID

Mencantumkan penyimpanan eksternal

Untuk mendapatkan daftar penyimpanan eksternal, jalankan perintah berikut:

spanner external-storages list

Deskripsi cadangan

Deskriptor cadangan merepresentasikan metadata dan jalur file cadangan dari cadangan yang telah selesai dan disimpan di penyimpanan eksternal.

spanner external-storages backup-descriptors list EXTERNAL_STORAGE_ID

Informasi pencadangan

Saat Anda membuat cadangan, metadata cadangan disimpan di Spanner Omni dan file cadangan berada di penyimpanan eksternal.

Cadangan berisi informasi berikut dari database pada versionTime cadangan:

  • Cadangan penuh berisi semua data.

  • Informasi skema, termasuk nama tabel, kolom, jenis data, indeks sekunder, aliran perubahan, dan hubungan antara entitas ini.

  • Semua opsi database yang ditetapkan dengan perintah ALTER DATABASE SET OPTIONS.

Backup Spanner Omni tidak menyertakan informasi berikut:

  • Setiap modifikasi pada data atau skema setelah versionTime.

  • Kebijakan Identity and Access Management (IAM).

  • Mengubah kumpulan data streaming. Meskipun skema aliran perubahan disimpan, data aliran perubahan harus di-streaming dan digunakan pada waktu yang hampir sama dengan perubahan yang dijelaskannya.

Untuk membantu memastikan konsistensi eksternal cadangan, Spanner Omni menetapkan konten database pada versionTime. Hal ini mencegah sistem pengumpulan sampah menghapus nilai data yang relevan selama operasi pencadangan.

Pengelolaan cadangan

Untuk membuat cadangan, Anda memerlukan izin berikut. Minta administrator untuk memberi Anda peran IAM berikut pada deployment:

Tindakan Peran IAM
Membuat, melihat, memperbarui, dan menghapus cadangan roles/spanner.backupAdmin
Membuat dan melihat cadangan roles/spanner.backupWriter

Buat cadangan

Buat cadangan sesuai permintaan.

spanner backups create BACKUP_NAME \
--database=DATABASE_ID \
--retention-period=RETENTION_PERIOD \
--async

Menghapus cadangan

Hapus metadata dan file cadangan.

spanner backups delete BACKUP_NAME

Mendeskripsikan cadangan

Mengambil informasi tentang cadangan.

spanner backups describe BACKUP_NAME

Mencantumkan cadangan

Mencantumkan cadangan Spanner Omni yang ada dalam deployment.

spanner backups list

Memperbarui masa berlaku cadangan

Memperbarui tanggal habis masa berlaku cadangan.

spanner backups update-metadata BACKUP_NAME \
--expiration-date=EXPIRATION_DATE

Mengimpor cadangan

Jika Anda tidak sengaja menghapus deployment, Anda dapat mengimpor cadangan dari deployment tersebut jika Anda tidak menghapus file cadangan dari penyimpanan eksternal.

  1. Buat penyimpanan eksternal di deployment baru yang menggunakan bucket Amazon S3 atau Cloud Storage yang sama dari deployment asli.

    spanner external-storages create EXTERNAL_STORAGE_ID \
      --gcs-bucket-name=BUCKET_NAME
    
  2. Mencantumkan deskriptor cadangan di penyimpanan eksternal.

    spanner external-storages backup-descriptors list EXTERNAL_STORAGE_ID
    
  3. Pilih deskriptor cadangan dan impor ke deployment baru.

    spanner backups import BACKUP_NAME \
     --external-storage EXTERNAL_STORAGE_ID \
     --backup-descriptor BACKUP_DESCRIPTOR \
     --retention-period 24h
    

Jadwal pencadangan

Spanner Omni memungkinkan Anda menjadwalkan pencadangan penuh untuk database. Anda dapat menentukan seberapa sering Spanner Omni membuat cadangan dalam jadwal.

Jadwal pencadangan penuh membuat cadangan setiap 12 jam atau lebih. Pencadangan dimulai dalam jangka waktu 30 menit dari waktu yang dijadwalkan. Anda dapat memiliki maksimum empat jadwal pencadangan per database.

Pengelolaan jadwal pencadangan

Untuk membuat dan mengelola jadwal pencadangan, Anda memerlukan izin berikut. Minta administrator Anda untuk memberi Anda peran IAM berikut pada deployment:

  • Membuat, melihat, memperbarui, dan menghapus jadwal pencadangan: roles/spanner.backupAdmin

  • Membuat dan melihat jadwal pencadangan: roles/spanner.backupWriter

Membuat jadwal pencadangan

Buat jadwal pencadangan baru untuk database Spanner Omni.

spanner backup-schedules create SCHEDULE_ID \
  --database=DATABASE_ID \
  --retention-duration=RETENTION_DURATION \
  --cron="CRONTAB_EXPRESSION"

Mendapatkan jadwal pencadangan

Mendapatkan informasi tentang jadwal pencadangan tertentu.

spanner backup-schedules describe SCHEDULE_ID --database=DATABASE_ID

Mencantumkan jadwal pencadangan

Mencantumkan semua jadwal pencadangan untuk database tertentu.

spanner backup-schedules list --database=DATABASE_ID

Memperbarui jadwal pencadangan

Memperbarui properti jadwal pencadangan yang ada.

spanner backup-schedules update SCHEDULE_ID \
  --database=DATABASE_ID \
  --retention-duration=RETENTION_DURATION \
  --cron="CRONTAB_EXPRESSION"

Menghapus jadwal pencadangan

Menghapus jadwal pencadangan dari database.

spanner backup-schedules delete SCHEDULE_ID --database=DATABASE_ID

Menetapkan kebijakan kontrol akses IAM

Menetapkan kebijakan kontrol akses IAM untuk jadwal pencadangan.

spanner backup-schedules set-iam-policy SCHEDULE_ID \
  --database=DATABASE_ID \
  policy.json

Mendapatkan kebijakan kontrol akses IAM

Mendapatkan kebijakan kontrol akses IAM untuk jadwal pencadangan.

spanner backup-schedules get-iam-policy SCHEDULE_ID --database=DATABASE_ID

Membandingkan penyimpanan cadangan dengan penyimpanan database

Ukuran penyimpanan cadangan bisa lebih kecil atau lebih besar daripada ukuran penyimpanan database sumber pada saat pembuatan.

Penyimpanan cadangan bisa lebih kecil daripada penyimpanan database karena cadangan hanya berisi satu versi data, sedangkan database aktif dapat berisi beberapa versi karena operasi yang sedang berlangsung. Perbedaan format dan kompresi data juga dapat menghasilkan ukuran cadangan yang lebih kecil.

Sebaliknya, penyimpanan cadangan bisa lebih besar daripada penyimpanan database, bergantung pada status database dan saat Anda membuat cadangan.

Karena alasan serupa, saat Anda memulihkan database dari cadangan, penyimpanannya dapat lebih besar daripada penyimpanan database. Hal ini dapat terjadi jika set data besar dihapus dan dipadatkan setelah pencadangan dibuat. Oleh karena itu, ukuran cadangan bergantung pada waktu cadangan dibuat dan operasi berikutnya pada database.

Tidak ada formula yang memprediksi ukuran cadangan relatif terhadap database aktif. Untuk database dengan tingkat penulisan yang tinggi (database aktif), cadangan kemungkinan lebih kecil daripada database live. Namun, dalam beberapa situasi, ukuran cadangan bisa lebih besar.