Halaman ini menunjukkan cara mencadangkan dan memulihkan data AlloyDB Omni menggunakan Operator Kubernetes AlloyDB Omni. Hal ini memerlukan pengetahuan dasar tentang cara mengupdate cluster Kubernetes menggunakan file manifes dan alat command line kubectl
. Untuk informasi selengkapnya tentang cara menginstal dan menjalankan AlloyDB Omni di cluster Kubernetes, lihat Menginstal AlloyDB di Kubernetes.
Untuk mengaktifkan pencadangan dan pemulihan berkelanjutan AlloyDB Omni, Anda harus membuat rencana cadangan untuk setiap cluster database. Pencadangan dilakukan berdasarkan jadwal pencadangan yang ditentukan dalam resource backupPlan
. Jika tidak ada jadwal pencadangan yang ditentukan dalam rencana pencadangan, pencadangan berkelanjutan akan dilakukan setiap hari secara default. Anda dapat memulihkan atau meng-clone pencadangan dari stempel waktu apa pun dalam periode pemulihan dengan tingkat perincian detik.
Untuk informasi tentang cara mencadangkan dan memulihkan data AlloyDB Omni di deployment non-Kubernetes, lihat Menginstal dan mengonfigurasi Barman.
Mengaktifkan dan menjadwalkan pencadangan
Pencadangan berkelanjutan diaktifkan saat Anda membuat resource rencana cadangan untuk
cluster database. Anda harus membuat resource backupPlan
untuk setiap cluster database
agar pencadangan berkelanjutan untuk cluster tersebut dapat diaktifkan. Resource rencana pencadangan ini
menentukan parameter berikut:
Lokasi penyimpanan cadangan oleh Operator AlloyDB Omni. Ini dapat berupa lokal untuk cluster Kubernetes Anda, atau untuk bucket Cloud Storage.
Opsi untuk menetapkan beberapa jadwal pencadangan yang otomatis membuat pencadangan
full
,incremental
, dandifferential
. Anda dapat menjeda jadwal ini kapan saja, termasuk saat pertama kali menentukan rencana pencadangan. Jika rencana cadangan dijeda, pencadangan terjadwal tidak akan dibuat, tetapi Anda masih dapat menggunakannya untuk membuat cadangan secara manual.Jika tidak ada jadwal pencadangan yang ditentukan, default-nya adalah "0 0 * * *", yang melakukan satu pencadangan penuh harian pada tengah malam, waktu lokal.
Periode retensi untuk cadangan yang disimpan. Periode ini dapat berkisar dari satu hari hingga 90 hari. Nilai defaultnya adalah 14.
Cluster database Anda dapat memiliki beberapa rencana cadangan, yang masing-masing memiliki nama dan konfigurasi sendiri. Jika Anda membuat beberapa resource backupPlan
dengan jadwal pencadangan yang berbeda untuk cluster database, Anda harus menentukan lokasi cadangan
yang unik untuk setiap resource cadangan.
Membuat rencana untuk menyimpan cadangan secara lokal
Untuk mengaktifkan pencadangan yang disimpan secara lokal, terapkan manifes berikut:
apiVersion: alloydbomni.dbadmin.goog/v1
kind: BackupPlan
metadata:
name: BACKUP_PLAN_NAME
namespace: NAMESPACE
spec:
dbclusterRef: DB_CLUSTER_NAME
backupSchedules:
full: "FULL_CRON_SCHEDULE"
differential: "DIFF_CRON_SCHEDULE"
incremental: "INCR_CRON_SCHEDULE"
backupRetainDays: RETENTION_DAYS
paused: PAUSED_BOOLEAN
Ganti kode berikut:
BACKUP_PLAN_NAME
: nama untuk resource rencana cadangan ini—misalnya,backup-plan-1
.NAMESPACE
: namespace Kubernetes untuk rencana cadangan ini. Nama ini harus cocok dengan namespace cluster database.DB_CLUSTER_NAME
: nama cluster database, yang Anda tetapkan saat membuatnya.FULL_CRON_SCHEDULE
: jadwal pencadangan untuk membuat cadangan penuh, yang berisi semua data, yang dinyatakan dalam formatcron
. Misalnya, tetapkan ke "0 0 * * 0" untuk melakukan pencadangan penuh pada pukul 00.00 setiap hari Minggu.DIFF_CRON_SCHEDULE
: jadwal pencadangan untuk membuat cadangan yang awalnya merupakan cadangan penuh. Pencadangan berikutnya bersifat diferensial, berdasarkan perubahan intervensi pada data, yang dinyatakan dalam formatcron
. Misalnya, tetapkan ke "0 22 * * 3" untuk membuat cadangan diferensial pada pukul 22.00 setiap hari Rabu.INCR_CRON_SCHEDULE
: jadwal pencadangan untuk membuat cadangan yang menyertakan data yang telah berubah dari pencadangan penuh, diferensial, atau inkremental terakhir. Nilai ini dinyatakan dalam formatcron
. Misalnya, tetapkan ke "0 21 * * *" untuk membuat cadangan inkremental pada pukul 21.00 setiap hari.RETENTION_DAYS
: jumlah hari yang diperlukan Operator AlloyDB Omni untuk menyimpan cadangan ini. Nilai ini harus berupa bilangan bulat antara1
dan90
. Nilai defaultnya adalah14
.PAUSED_BOOLEAN
: menentukan apakah rencana cadangan dijeda atau tidak. Berikan salah satu nilai berikut:true
: pencadangan dijeda dan tidak ada pencadangan terjadwal yang dibuat.false
: Operator AlloyDB Omni membuat cadangan sesuai dengan jadwal yang ditentukan olehcronSchedule
. Ini adalah nilai default, jika tidak ditetapkan secara eksplisit ketrue
.
Nilai defaultnya adalah
false
.
Membuat rencana yang menyimpan cadangan di Cloud Storage
Untuk mengaktifkan pencadangan yang disimpan di Cloud Storage, ikuti langkah-langkah berikut:
Membuat bucket Cloud Storage. Catat nama yang Anda tetapkan ke bucket ini; Anda memerlukannya di langkah berikutnya.
Buat akun layanan untuk menambahkan pencadangan ke bucket.
Berikan peran Identity and Access Management
storage.objectAdmin
ke akun layanan.Buat kunci untuk akun layanan. Tindakan ini akan mendownload kunci pribadi ke lingkungan lokal Anda.
Ganti nama file kunci yang didownload menjadi
key.json
.Buat secret Kubernetes yang berisi kunci pribadi:
kubectl create secret generic SECRET_NAME --from-file=KEY_PATH -n NAMESPACE
Ganti kode berikut:
SECRET_NAME
: nama secret Kubernetes yang Anda buat—misalnya,gcs-key
.KEY_PATH
: jalur sistem file lokal ke filekey.json
yang Anda download di langkah sebelumnya.NAMESPACE
: namespace cluster database.
Terapkan manifes berikut:
apiVersion: alloydbomni.dbadmin.goog/v1 kind: BackupPlan metadata: name: BACKUP_PLAN_NAME namespace: NAMESPACE spec: dbclusterRef: DB_CLUSTER_NAME backupSchedules: full: "FULL_CRON_SCHEDULE" differential: "DIFF_CRON_SCHEDULE" incremental: "INCR_CRON_SCHEDULE" backupRetainDays: RETENTION_DAYS paused: PAUSED_BOOLEAN backupLocation: type: GCS gcsOptions: bucket: BUCKET_URL key: BACKUP_PATH secretRef: name: SECRET_NAME namespace: NAMESPACE
Ganti kode berikut:
BACKUP_PLAN_NAME
: nama untuk resource rencana cadangan ini—misalnya,backup-plan-1
.NAMESPACE
: namespace Kubernetes untuk rencana cadangan ini. Nama ini harus cocok dengan namespace cluster database.DB_CLUSTER_NAME
: nama cluster database, yang Anda tetapkan saat membuatnya.FULL_CRON_SCHEDULE
: jadwal pencadangan untuk membuat cadangan penuh, yang berisi semua data, yang dinyatakan dalam formatcron
. Misalnya, tetapkan ke "0 0 * * 0" untuk melakukan pencadangan penuh pada pukul 00.00 setiap hari Minggu.DIFF_CRON_SCHEDULE
: jadwal pencadangan untuk membuat cadangan yang awalnya merupakan cadangan penuh. Pencadangan berikutnya bersifat diferensial, berdasarkan perubahan intervensi pada data, yang dinyatakan dalam formatcron
. Misalnya, tetapkan ke "0 22 * * 3" untuk membuat cadangan diferensial pada pukul 22.00 setiap hari Rabu.INCR_CRON_SCHEDULE
: jadwal pencadangan untuk membuat cadangan yang menyertakan data yang telah berubah dari pencadangan penuh, diferensial, atau inkremental terakhir. Nilai ini dinyatakan dalam formatcron
. Misalnya, tetapkan ke "0 21 * * *" untuk membuat cadangan inkremental pada pukul 21.00 setiap hari.RETENTION_DAYS
: jumlah hari yang diperlukan Operator AlloyDB Omni untuk menyimpan cadangan ini. Nilai ini harus berupa bilangan bulat antara1
dan90
. Nilai defaultnya adalah14
.PAUSED_BOOLEAN
: menentukan apakah rencana cadangan dijeda atau tidak. Berikan salah satu nilai berikut:true
: pencadangan dijeda dan tidak ada pencadangan terjadwal yang dibuat.false
: Operator AlloyDB Omni membuat cadangan sesuai dengan jadwal yang ditentukan olehcronSchedule
. Ini adalah nilai default, jika tidak ditetapkan secara eksplisit ketrue
.
Nilai defaultnya adalah
false
.
BUCKET_URL
: nama bucket Cloud Storage yang Anda buat di langkah sebelumnya. Ini bukan URL lengkap ke bucket; jangan beri awalan nama bucket dengangs://
.BACKUP_PATH
: jalur direktori tempat Operator AlloyDB Omni menulis cadangan, dalam bucket Cloud Storage. Jalur harus bersifat absolut, dimulai dengan/
.SECRET_NAME
: nama yang Anda pilih untuk secret Kubernetes yang Anda buat di langkah sebelumnya.
Membuat cadangan secara manual
Anda dapat membuat resource cadangan secara manual kapan saja, menggunakan rencana cadangan yang telah Anda terapkan ke cluster database. Operator AlloyDB Omni menerapkan lokasi penyimpanan dan periode retensi rencana pencadangan yang dipilih ke pencadangan manual baru.
Untuk membuat cadangan secara manual, terapkan manifes berikut:
apiVersion: alloydbomni.dbadmin.goog/v1
kind: Backup
metadata:
name: BACKUP_NAME
namespace: NAMESPACE
spec:
dbclusterRef: DB_CLUSTER_NAME
backupPlanRef: BACKUP_PLAN_NAME
manual: true
physicalBackupSpec:
backupType: BACKUP_TYPE
Ganti kode berikut:
BACKUP_NAME
: nama untuk pencadangan ini—misalnya,backup-1
.NAMESPACE
: namespace Kubernetes dari pemulihan ini. Nama tersebut harus cocok dengan namespace cluster database.BACKUP_PLAN_NAME
: nama resource rencana cadangan yang dimiliki cadangan ini. Nama ini harus cocok dengan nama yang Anda pilih saat membuat rencana pencadangan.DB_CLUSTER_NAME
: nama cluster database, yang Anda tetapkan saat membuatnya.BACKUP_TYPE
: menentukan jenis pencadangan manual yang ingin Anda buat. Pilih dari salah satu nilai berikut:full
: Membuat pencadangan penuh, yang berisi semua data.diff
: Membuat cadangan diferensial yang bergantung pada pencadangan penuh terakhir. Cadangan berikutnya bersifat diferensial, berdasarkan perubahan yang terjadi pada data.incr
: Membuat cadangan inkremental yang bergantung pada cadangan penuh atau diferensial sebelumnya untuk menyertakan data yang telah berubah dari cadangan penuh atau diferensial terakhir.
Memantau dan mencantumkan pencadangan
Rencana cadangan dan cadangan Anda adalah semua resource di cluster Kubernetes. Untuk melihat informasi tentangnya, gunakan perintah
kubectl
get
.
Melihat ringkasan rencana cadangan
Untuk melihat informasi tentang rencana pencadangan cluster database Anda, jalankan perintah berikut:
kubectl get backupplan.alloydbomni.dbadmin.goog -n NAMESPACE
Ganti NAMESPACE
dengan namespace cluster database.
Outputnya akan terlihat seperti berikut:
NAME PHASE LASTBACKUPTIME NEXTBACKUPTIME
backup-plan-prod Ready 2023-10-26T17:26:43Z 2023-10-27T00:00:00Z
Melihat Daftar Cadangan
Untuk melihat daftar cadangan yang tersedia untuk cluster database Anda, jalankan perintah berikut:
kubectl get backup.alloydbomni.dbadmin.goog -n NAMESPACE
Ganti NAMESPACE
dengan namespace cluster database.
Outputnya akan terlihat seperti berikut:
NAME PHASE COMPLETETIME
backup-plan-prod-20231026172643 Succeeded 2023-10-26T17:26:53Z
manual-backup-1 Succeeded 2023-10-26T18:15:27Z
manual-backup-2 InProgress
Setiap baris dalam tabel output mewakili resource cadangan, dengan atribut berikut:
- Nama pencadangan.
- Status pencadangan, dengan
Succeeded
menandai pencadangan yang siap untuk dipulihkan. - Stempel waktu pembuatan cadangan.
Memulihkan dari cadangan
AlloyDB memungkinkan Anda memulihkan dari cadangan individual atau meng-clone cluster menggunakan cadangan dari titik waktu tertentu.
Memulihkan dari cadangan yang diberi nama
Untuk memulihkan dari cadangan, yang akan mengganti data di cluster database Anda dengan data dalam cadangan, ikuti langkah-langkah berikut.
Mencantumkan semua cadangan yang fasenya
Succeeded
.kubectl get backup.alloydbomni.dbadmin.goog -n NAMESPACE | grep Succeeded
Ganti
NAMESPACE
dengan namespace cluster database.Jika ada minimal satu kandidat cadangan yang bagus, output-nya akan mirip dengan berikut:
backup-plan-prod-20231026172643 Succeeded 2023-10-26T17:26:53Z manual-backup-1 Succeeded 2023-10-26T18:15:27Z
Pilih salah satu cadangan yang tercantum di langkah sebelumnya sebagai cadangan yang akan dipulihkan. Catat namanya, yang akan Anda gunakan di langkah berikut.
Terapkan manifes berikut:
apiVersion: alloydbomni.dbadmin.goog/v1 kind: Restore metadata: name: RESTORE_NAME namespace: NAMESPACE spec: sourceDBCluster: DB_CLUSTER_NAME backup: BACKUP_NAME
Ganti kode berikut:
RESTORE_NAME: nama yang akan digunakan dengan resource pemulihan data yang dibuat manifes ini—misalnya,
restore-1
.DB_CLUSTER_NAME: nama cluster database, yang Anda tetapkan saat membuatnya.
BACKUP_NAME: nama cadangan yang Anda pilih di langkah sebelumnya.
Meng-clone cluster dari titik waktu
AlloyDB Omni Operator memungkinkan Anda meng-clone data cluster dari titik mana saja dalam periode pemulihan. Durasi periode pemulihan ditentukan langsung oleh periode retensi.
Misalnya, jika periode retensi ditetapkan ke 14 hari, Anda tidak dapat memulihkan data yang lebih lama dari 14 hari. Anda dapat memulihkan ke titik waktu mana pun dalam periode pemulihan. Operator AlloyDB Omni mempertahankan cadangan dan log selama satu hari lebih lama dari nilai yang ditentukan.
Pantau periode pemulihan untuk mengidentifikasi titik pemulihan:
kubectl get backupplan.alloydbomni.dbadmin.goog BACKUP_NAME -n NAMESPACE -o json | jq .status.recoveryWindow
Berikut adalah contoh respons:
recoveryWindow: begin: "2024-01-31T02:54:35Z"
Nilai stempel waktu dalam format stempel waktu RFC 3339 digunakan dalam resource pemulihan.
Buat dan terapkan manifes resource pemulihan berikut:
apiVersion: alloydbomni.dbadmin.goog/v1 kind: Restore metadata: name: RESTORE_NAME namespace: NAMESPACE spec: sourceDBCluster: DB_CLUSTER_NAME pointInTime: "DATE_AND_TIME_STAMP" clonedDBClusterConfig: dbclusterName: NEW_DB_CLUSTER_NAME
Ganti kode berikut:
RESTORE_NAME: nama yang akan digunakan dengan resource pemulihan data yang dibuat manifes ini—misalnya,
restore-1
.DB_CLUSTER_NAME: nama cluster database, yang Anda tetapkan saat membuatnya.
DATE_AND_TIME_STAMP: stempel waktu RFC 3339 pada tingkat perincian menit dari pencadangan berkelanjutan yang ingin Anda pulihkan—misalnya,
2024-03-05T15:32:10Z
.NEW_DB_CLUSTER_NAME: nama cluster database baru.
Melihat status pemulihan
Lihat progres operasi pemulihan:
kubectl get restore.alloydbomni.dbadmin.goog -n NAMESPACE
Ganti
NAMESPACE
dengan namespace cluster database.Untuk menjalankan perintah secara terus-menerus, tambahkan flag
-Aw
.Outputnya akan terlihat seperti berikut:
NAME PHASE COMPLETETIME RESTOREDPOINTINTIME restore-1 RestoreInProgress
Jika nilai kolom
PHASE
dalam tabel output membacaProvisionSucceeded
, pemulihan akan selesai.Lihat progres cluster database yang dipulihkan atau di-clone yang sedang online:
kubectl get dbclusters -A -n NAMESPACE
Ganti
NAMESPACE
dengan namespace cluster database.Untuk menjalankan perintah secara terus-menerus, tambahkan flag
-Aw
.Outputnya akan terlihat seperti berikut:
NAMESPACE NAME PRIMARYENDPOINT PRIMARYPHASE DBCLUSTERPHASE default db-cluster-1 10.128.0.55 Ready DBClusterReady
Jika nilai kolom
DBCLUSTERPHASE
dalam tabel output membacaDBClusterReady
, cluster database yang dipulihkan atau di-clone siap digunakan.
Menghapus cadangan
Biasanya, Anda tidak perlu menghapus cadangan secara manual. Operator AlloDB Omni akan otomatis menghapus cadangan yang lebih lama dari periode retensi yang Anda tentukan saat membuat rencana cadangan.
Jika Anda ingin menghapus cadangan secara manual, cadangan tersebut harus memenuhi persyaratan berikut:
Cadangan ini bukan satu-satunya cadangan yang disimpan untuk rencana cadangannya. Operator AlloDB Omni memerlukan setidaknya satu cadangan per rencana cadangan.
Cadangan tidak memiliki cadangan lain yang bergantung padanya. Misalnya, pencadangan penuh dengan pencadangan diferensial atau inkremental yang bergantung padanya; atau pencadangan inkremental dengan pencadangan diferensial yang bergantung padanya.
Untuk menghapus cadangan, jalankan perintah berikut:
kubectl delete backup.alloydbomni.dbadmin.goog/BACKUP_NAME -n NAMESPACE
Ganti kode berikut:
BACKUP_NAME
: nama cadangan yang akan dihapus.NAMESPACE
: namespace cluster database.
Mengubah ukuran disk cadangan
Untuk mengubah ukuran disk lokal yang menyimpan cadangan Anda di cluster Kubernetes, selesaikan langkah-langkah berikut:
Perbarui kolom
resources.disks
manifes DBCluster sebagai berikut:spec: primarySpec: resources: disks: - name: BACKUP_DISK size: 10Gi
Ganti
BACKUP_DISK
dengan nama disk yang menyimpan cadangan Anda.Terapkan manifes untuk menerapkan update.
Operator AlloyDB Omni akan segera menerapkan spesifikasi yang diperbarui ke DBCluster Anda.
Batasan berikut berlaku untuk mengubah disk cadangan cluster database yang sedang berjalan:
- Anda hanya dapat meningkatkan ukuran disk jika
storageClass
yang ditentukan mendukung perluasan volume. - Anda tidak dapat mengurangi ukuran disk.
Memperbarui rencana cadangan
Setiap rencana pencadangan adalah resource Kubernetes. Untuk mengupdate konfigurasinya, lakukan salah satu langkah berikut:
Edit dan terapkan ulang file manifes rencana cadangan.
Gunakan perintah
kubectl patch
.
Misalnya, untuk menjeda rencana pencadangan yang sedang berjalan, ubah atribut paused
manifesnya menjadi true
, lalu terapkan kembali manifes.
Menghapus rencana cadangan
Untuk menghapus rencana cadangan dan menghapus semua resource cadangannya, jalankan perintah berikut:
kubectl delete backupplan.alloydbomni.dbadmin.goog/BACKUP_PLAN_NAME -n NAMESPACE
Ganti kode berikut:
BACKUP_PLAN_NAME
: nama rencana cadangan yang akan dihapus.NAMESPACE
: namespace cluster database.
Untuk menjeda rencana pencadangan tanpa menghapusnya, tetapkan atribut paused
dari resource rencana pencadangan ke true
. Rencana pencadangan yang dijeda akan terus menyimpan
cadangan dan memungkinkan pembuatan cadangan manual.