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
versionTimecadangan.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.
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_NAMEMencantumkan deskriptor cadangan di penyimpanan eksternal.
spanner external-storages backup-descriptors list EXTERNAL_STORAGE_IDPilih 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.backupAdminMembuat 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.