Spanner Omni memungkinkan Anda membuat pencadangan penuh database sesuai permintaan atau menggunakan jadwal pencadangan. Cadangan menyimpan seluruh data dari database. Anda dapat memulihkan cadangan saat error operator atau aplikasi menyebabkan kerusakan data logis.
Ringkasan pencadangan Spanner Omni
Cadangan memiliki ketersediaan tinggi dan dapat dipertahankan 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 konten database. Cadangan berisi tampilan database yang konsisten pada
versionTime.
Untuk pencadangan on-demand, createTime dan versionTime sama secara default. Jika diperlukan, Anda dapat menentukan versionTime yang lebih lama saat membuat cadangan on-demand jika masih 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 on-demand, 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 pukul 07.00 UTC dan createTime adalah stempel waktu dalam
periode empat jam antara pukul 07.00 UTC dan 11.00 UTC.
Cadangan Spanner Omni hanya dapat dipulihkan ke deployment Spanner Omni. Anda tidak dapat memulihkan cadangan Spanner terkelola ke Spanner Omni, atau memulihkan cadangan Spanner Omni ke Spanner terkelola. Untuk mentransfer data antara Spanner dan Spanner Omni, gunakan aliran data perubahan atau ekspor dan impor file Avro. Untuk mengetahui informasi selengkapnya, lihat Mereplikasi data dari Spanner ke Spanner Omni dan Mengimpor dan mengekspor data.
Fitur utama
Cadangan 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
versionTimepencadangan.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 sudah tidak berlaku secara asinkron, sehingga mungkin ada jeda antara saat cadangan tidak berlaku dan saat cadangan benar-benar dihapus.
Penyimpanan eksternal
Penyimpanan eksternal mewakili penyimpanan jarak jauh yang berada di luar deployment Spanner Omni. Anda dapat mengonfigurasi Amazon Simple Storage Service (Amazon S3), Cloud Storage, atau penyimpanan apa pun 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
Sebelum mengonfigurasi penyimpanan eksternal Cloud Storage, pastikan Anda memiliki item berikut:
- Bucket Cloud Storage target di project Google Cloud Anda.
- Akun layanan Google Cloud yang diberi peran Identity and Access Management (IAM) Storage Object Admin (
roles/storage.objectAdmin) di bucket target. Untuk mengetahui informasi selengkapnya, lihat Peran IAM untuk Cloud Storage. - Kredensial autentikasi yang dikonfigurasi di lingkungan Spanner Omni Anda, seperti file kunci akun layanan atau kredensial yang dipertukarkan melalui Workload Identity Federation. Untuk mengetahui informasi selengkapnya tentang autentikasi dari lingkungan eksternal, lihat Mengonfigurasi Workload Identity Federation dengan VM AWS dan Mengonfigurasi Workload Identity Federation dengan Kubernetes.
Untuk mendaftarkan bucket Cloud Storage sebagai penyimpanan eksternal, jalankan perintah ini:
spanner external-storages create EXTERNAL_STORAGE_ID \
--gcs-bucket-name=BUCKET_NAME
Ganti kode berikut:
EXTERNAL_STORAGE_ID: ID unik untuk konfigurasi penyimpanan eksternal, misalnya,gcp-gcs-backup-target.BUCKET_NAME: nama bucket Cloud Storage target Anda.
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 terlebih dahulu tidak ada pencadangan yang ada atau yang sedang berlangsung. Kemudian, jalankan perintah berikut:
spanner external-storages delete EXTERNAL_STORAGE_ID
Menjelaskan 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
Deskripsi cadangan mewakili metadata dan jalur file cadangan dari cadangan yang telah selesai yang 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 pencadangan:
Pencadangan penuh berisi semua data.
Informasi skema, termasuk nama tabel, kolom, jenis data, indeks sekunder, aliran data perubahan, dan hubungan antara entity ini.
Semua opsi database yang ditetapkan dengan perintah
ALTER DATABASE SET OPTIONS.
Cadangan Spanner Omni tidak menyertakan informasi berikut:
Setiap perubahan pada data atau skema setelah
versionTime.akibat kebijakan IAM yang berlaku.
Mengubah data kumpulan data aliran perubahan. Meskipun skema aliran data perubahan disimpan, data aliran data perubahan harus di-streaming dan digunakan pada waktu yang hampir bersamaan dengan perubahan yang dijelaskannya.
Untuk membantu memastikan konsistensi eksternal cadangan, Spanner Omni
menyematkan konten database di versionTime. Hal ini mencegah sistem pembersihan sampah memori menghapus nilai data yang relevan selama durasi 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
Membuat pencadangan on-demand.
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 pencadangan
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
Untuk memulihkan database di deployment Spanner Omni lain—misalnya, untuk memulihkan antar-deployment Spanner Omni atau jika Anda menghapus deployment asli—Anda dapat mengimpor cadangan jika file cadangan tetap berada di penyimpanan eksternal:
Buat penyimpanan eksternal dalam deployment baru yang menggunakan bucket Amazon S3 atau bucket Cloud Storage yang sama dengan deployment asli, misalnya:
spanner external-storages create EXTERNAL_STORAGE_ID \ --gcs-bucket-name=BUCKET_NAMECantumkan deskripsi cadangan di penyimpanan eksternal:
spanner external-storages backup-descriptors list EXTERNAL_STORAGE_IDImpor metadata cadangan ke deployment baru:
spanner backups import BACKUP_NAME \ --external-storage=EXTERNAL_STORAGE_ID \ --backup-descriptor=BACKUP_DESCRIPTOR \ --retention-period=RETENTION_PERIODGanti kode berikut:
BACKUP_NAME: nama untuk cadangan yang diimpor.EXTERNAL_STORAGE_ID: ID konfigurasi penyimpanan eksternal Anda.BACKUP_DESCRIPTOR: ID deskriptor yang ditampilkan di langkah sebelumnya.RETENTION_PERIOD: durasi untuk mempertahankan cadangan, misalnya,24hatau30d.
Setelah mengimpor metadata cadangan, Anda dapat memulihkan cadangan ke database baru dalam deployment. Untuk mengetahui informasi selengkapnya, lihat Memulihkan cadangan Spanner Omni.
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 periode 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
Membuat 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 dapat lebih kecil atau lebih besar daripada ukuran penyimpanan database sumber pada saat pembuatan.
Penyimpanan cadangan dapat 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 dalam format data dan kompresi juga dapat menghasilkan ukuran cadangan yang lebih kecil.
Sebaliknya, penyimpanan cadangan dapat lebih besar daripada penyimpanan database, bergantung pada status database dan waktu Anda membuat cadangan.
Untuk alasan yang serupa, saat Anda memulihkan database dari cadangan, penyimpanannya dapat lebih besar daripada penyimpanan database. Hal ini dapat terjadi jika set data yang besar dihapus dan dipadatkan setelah cadangan dibuat. Oleh karena itu, ukuran cadangan bergantung pada waktu pembuatan cadangan dan operasi berikutnya pada database.
Tidak ada formula yang memprediksi ukuran cadangan relatif terhadap database aktif. Untuk database dengan tingkat penulisan yang tinggi (database panas), cadangan kemungkinan akan lebih kecil daripada database aktif. Namun, dalam beberapa situasi, ukuran cadangan bisa lebih besar.