Questa pagina mostra come eseguire il backup e il ripristino dei dati di AlloyDB Omni
utilizzando l'operatore AlloyDB Omni Kubernetes. Ciò richiede una conoscenza di base dell'aggiornamento di un cluster Kubernetes utilizzando i file manifest e lo strumento a riga di comando kubectl. Per saperne di più sull'installazione e l'esecuzione di
AlloyDB Omni su un cluster Kubernetes, consulta Installa AlloyDB Omni su Kubernetes.
Per abilitare il backup e il ripristino continui di AlloyDB Omni, devi creare un piano di backup per ogni cluster di database. I backup vengono eseguiti in base alle pianificazioni di backup definite nella risorsa backupPlan. Se nel piano di backup non è definita una pianificazione, i backup continui vengono eseguiti ogni giorno per impostazione predefinita. Puoi ripristinare o clonare i backup da qualsiasi timestamp nella finestra di recupero con granularità in secondi.
Per informazioni sul backup e sul ripristino dei dati di AlloyDB Omni su deployment non Kubernetes, consulta Installa e configura Barman.
Abilita e pianifica i backup
I backup continui vengono abilitati quando crei una risorsa del piano di backup per il cluster di database. Devi creare una risorsa backupPlan per ogni cluster di database per abilitare il backup continuo per quel cluster. Questa risorsa del piano di backup definisce i seguenti parametri:
La località in cui l'operatore AlloyDB Omni archivia i backup. Può essere locale per il cluster Kubernetes o per un bucket Cloud Storage.
Un'opzione per impostare più pianificazioni di backup che creano automaticamente backup
full,incrementaledifferential. Puoi mettere in pausa questa pianificazione in qualsiasi momento, anche quando definisci inizialmente il piano di backup. Se un piano di backup è in pausa, i backup pianificati non vengono creati, ma puoi comunque utilizzarlo per creare backup manualmente.Se non vengono specificate pianificazioni di backup, il valore predefinito è "0 0 * * *", che esegue un backup completo giornaliero a mezzanotte, ora locale.
Un periodo di conservazione per i backup archiviati. La durata può variare da un giorno a 90 giorni. Il valore predefinito è 14.
Il cluster di database può avere fino a un piano di backup per ogni tipo di località di backup (locale o compatibile con Cloud Storage/S3), ciascuno con il proprio nome e la propria configurazione. Se crei più risorse backupPlan con pianificazioni di backup diverse per un cluster di database, devi definire una località di backup univoca per ogni risorsa di backup.
Crea un piano per archiviare i backup localmente
Per abilitare i backup archiviati localmente, applica il seguente manifest:
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
Sostituisci quanto segue:
BACKUP_PLAN_NAME: un nome per questa risorsa del piano di backup, ad esempiobackup-plan-1.NAMESPACE: lo spazio dei nomi Kubernetes per questo piano di backup. Deve corrispondere allo spazio dei nomi del cluster di database.DB_CLUSTER_NAME: il nome del cluster di database che hai assegnato quando l'hai creato.FULL_CRON_SCHEDULE: una pianificazione di backup per creare un backup completo, contenente tutti i dati, espresso nel formatocron. Ad esempio, imposta "0 0 * * 0" per eseguire un backup completo alle 00:00 di ogni domenica.DIFF_CRON_SCHEDULE: una pianificazione di backup per creare backup che inizialmente sono backup completi. I backup successivi sono differenziali, in base alle modifiche apportate ai dati, espresse nel formatocron. Ad esempio, imposta "0 22 * * 3" per eseguire un backup differenziale alle 22:00 di ogni mercoledì.INCR_CRON_SCHEDULE: una pianificazione dei backup per creare backup che includano i dati modificati dall'ultimo backup completo, differenziale o incrementale. Viene espresso nel formatocron. Ad esempio, imposta "0 21 * * *" per eseguire un backup incrementale alle 21:00 ogni giorno.RETENTION_DAYS: il numero di giorni per cui l'operatore AlloyDB Omni conserva questo backup. Deve essere un numero intero compreso tra1e90. Il valore predefinito è14.PAUSED_BOOLEAN: specifica se il piano di backup è in pausa. Fornisci uno dei seguenti valori:true: i backup sono in pausa e non vengono creati backup pianificati.false: l'operatore AlloyDB Omni crea i backup in base alla pianificazione specificata dacronSchedule. Questo è il valore predefinito, se non è impostato esplicitamente sutrue.
Il valore predefinito è
false.
Crea un piano che archivia i backup in Cloud Storage
Per abilitare i backup archiviati su Cloud Storage, segui questi passaggi:
Crea un bucket Cloud Storage. Prendi nota del nome che assegni a questo bucket, perché ti servirà in un passaggio successivo.
Crea un service account per aggiungere backup al bucket.
Concedi il ruolo Identity and Access Management
storage.objectAdminal service account.Crea una chiave per il service account. In questo modo la chiave privata viene scaricata nell'ambiente locale.
Rinomina il file della chiave scaricato in
key.json.Crea un secret Kubernetes contenente la chiave privata:
kubectl create secret generic SECRET_NAME --from-file=KEY_PATH -n NAMESPACESostituisci quanto segue:
SECRET_NAME: il nome del secret di Kubernetes che stai creando, ad esempiogcs-key.KEY_PATH: il percorso del file system locale del filekey.jsonche hai scaricato nei passaggi precedenti.NAMESPACE: lo spazio dei nomi del cluster di database.
Applica il seguente manifest:
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: NAMESPACESostituisci quanto segue:
BACKUP_PLAN_NAME: un nome per questa risorsa del piano di backup, ad esempiobackup-plan-1.NAMESPACE: lo spazio dei nomi Kubernetes per questo piano di backup. Deve corrispondere allo spazio dei nomi del cluster di database.DB_CLUSTER_NAME: il nome del cluster di database, che hai assegnato quando lo hai creato.FULL_CRON_SCHEDULE: una pianificazione di backup per creare un backup completo, contenente tutti i dati, espressa nel formatocron. Ad esempio, imposta "0 0 * * 0" per eseguire un backup completo alle 00:00 di ogni domenica.DIFF_CRON_SCHEDULE: una pianificazione di backup per creare backup che inizialmente sono backup completi. I backup successivi sono differenziali, in base alle modifiche apportate ai dati, espresse nel formatocron. Ad esempio, imposta "0 22 * * 3" per eseguire un backup differenziale alle 22:00 di ogni mercoledì.INCR_CRON_SCHEDULE: una pianificazione dei backup per creare backup che includono i dati modificati rispetto all'ultimo backup completo, differenziale o incrementale. Viene espresso nel formatocron. Ad esempio, imposta "0 21 * * *" per eseguire un backup incrementale alle 21:00 ogni giorno.RETENTION_DAYS: il numero di giorni per cui l'operatore AlloyDB Omni conserva questo backup. Deve essere un numero intero compreso tra1e90. Il valore predefinito è14.PAUSED_BOOLEAN: specifica se il piano di backup è in pausa. Fornisci uno dei seguenti valori:true: i backup sono in pausa e non vengono creati backup pianificati.false: l'operatore AlloyDB Omni crea i backup in base alla pianificazione specificata dacronSchedule. Questo è il valore predefinito, se non è impostato esplicitamente sutrue.
Il valore predefinito è
false.
BUCKET_URL: il nome del bucket Cloud Storage creato in un passaggio precedente. Questo non è l'URL completo del bucket; non anteporregs://al nome del bucket.BACKUP_PATH: il percorso della directory in cui l'operatore AlloyDB Omni scrive i backup, all'interno del bucket Cloud Storage. Il percorso deve essere assoluto e iniziare con/.SECRET_NAME: il nome che hai scelto per il secret Kubernetes creato in un passaggio precedente.
Crea manualmente un backup
Puoi creare manualmente una risorsa di backup in qualsiasi momento, utilizzando qualsiasi piano di backup che hai già applicato a un cluster di database. AlloyDB Omni Operator applica la località di archiviazione e il periodo di conservazione del piano di backup scelto al nuovo backup manuale.
Per creare manualmente un backup, applica il seguente manifest:
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
Sostituisci quanto segue:
BACKUP_NAME: un nome per questo backup, ad esempiobackup-1.NAMESPACE: lo spazio dei nomi Kubernetes di questo ripristino. Deve corrispondere allo spazio dei nomi del cluster di database.BACKUP_PLAN_NAME: il nome della risorsa del piano di backup a cui appartiene questo backup. Deve corrispondere al nome che hai scelto quando hai creato il piano di backup.DB_CLUSTER_NAME: il nome del cluster di database, che hai assegnato quando lo hai creato.BACKUP_TYPE: specifica il tipo di backup manuale che vuoi creare. Scegli uno dei seguenti valori:full: crea un backup completo, contenente tutti i dati.diff: crea un backup differenziale che dipende dall'ultimo backup completo. I backup successivi sono differenziali, in base alle modifiche apportate ai dati nel frattempo.incr: crea un backup incrementale che dipende dal backup completo o differenziale precedente per includere i dati modificati rispetto all'ultimo backup completo o differenziale.
Monitorare ed elencare i backup
I tuoi piani di backup e backup sono tutte risorse del tuo cluster Kubernetes. Per visualizzare le informazioni, utilizza il comando kubectl
get.
Visualizza un riepilogo del piano di backup
Per visualizzare le informazioni sui piani di backup del cluster di database, esegui il seguente comando:
kubectl get backupplan.alloydbomni.dbadmin.goog -n NAMESPACESostituisci NAMESPACE con lo spazio dei nomi del cluster di database.
L'output è simile al seguente:
NAME PHASE LASTBACKUPTIME NEXTBACKUPTIME
backup-plan-prod Ready 2023-10-26T17:26:43Z 2023-10-27T00:00:00Z
Visualizzare un elenco di backup
Per visualizzare un elenco dei backup disponibili per il cluster di database, esegui questo comando:
kubectl get backup.alloydbomni.dbadmin.goog -n NAMESPACESostituisci NAMESPACE con lo spazio dei nomi del cluster di database.
L'output è simile al seguente:
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
Ogni riga della tabella di output rappresenta una risorsa di backup, con i seguenti attributi:
- Il nome del backup.
- Lo stato del backup, con
Succeededche indica un backup pronto per il ripristino. - Timestamp di creazione del backup.
Ripristina da un backup
AlloyDB ti consente di eseguire il ripristino da singoli backup o di clonare un cluster utilizzando un backup da un momento specifico.
Ripristina da un backup con nome
Per eseguire il ripristino da un backup, sostituendo i dati nel cluster di database con i dati nel backup, segui questi passaggi.
Elenca tutti i backup la cui fase è
Succeeded.kubectl get backup.alloydbomni.dbadmin.goog -n NAMESPACE | grep SucceededSostituisci
NAMESPACEcon lo spazio dei nomi del cluster di database.Se esiste almeno un candidato di backup valido, l'output è simile al seguente:
backup-plan-prod-20231026172643 Succeeded 2023-10-26T17:26:53Z manual-backup-1 Succeeded 2023-10-26T18:15:27ZScegli uno dei backup elencati nel passaggio precedente come backup da cui eseguire il ripristino. Prendi nota del nome, che utilizzerai nel passaggio successivo.
Applica il seguente manifest:
apiVersion: alloydbomni.dbadmin.goog/v1 kind: Restore metadata: name: RESTORE_NAME namespace: NAMESPACE spec: sourceDBCluster: DB_CLUSTER_NAME backup: BACKUP_NAMESostituisci quanto segue:
RESTORE_NAME: un nome da utilizzare con la risorsa di ripristino dei dati creata da questo manifest, ad esempio
restore-1.DB_CLUSTER_NAME: il nome del cluster di database, che hai assegnato quando lo hai creato.
BACKUP_NAME: il nome del backup scelto nel passaggio precedente.
Clona un cluster da un momento specifico
AlloyDB Omni Operator ti consente di clonare i dati del cluster da qualsiasi momento all'interno di una finestra di recupero. La durata della finestra di recupero è determinata direttamente dal periodo di conservazione.
Ad esempio, se il periodo di conservazione è impostato su 14 giorni, non puoi recuperare i dati più vecchi di 14 giorni. Puoi eseguire il ripristino in qualsiasi momento all'interno della finestra di recupero. AlloyDB Omni Operator conserva i backup e i log per un giorno in più rispetto al valore specificato.
Monitora la finestra di ripristino per identificare il punto di ripristino:
kubectl get backupplan.alloydbomni.dbadmin.goog BACKUP_NAME -n NAMESPACE -o json | jq .status.recoveryWindowDi seguito è riportato un esempio di risposta:
recoveryWindow: begin: "2024-01-31T02:54:35Z"Il valore del timestamp nel formato RFC 3339 viene utilizzato nella risorsa di ripristino.
Crea e applica il seguente manifest della risorsa di ripristino:
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_NAMESostituisci quanto segue:
RESTORE_NAME: un nome da utilizzare con la risorsa di ripristino dei dati creata da questo manifest, ad esempio
restore-1.DB_CLUSTER_NAME: il nome del cluster di database, che hai assegnato quando lo hai creato.
DATE_AND_TIME_STAMP: il timestamp RFC 3339 con granularità al minuto del backup continuo da cui vuoi eseguire il ripristino, ad esempio
2024-03-05T15:32:10Z.NEW_DB_CLUSTER_NAME: il nome del nuovo cluster di database.
Visualizza lo stato del ripristino
Visualizza l'avanzamento dell'operazione di ripristino:
kubectl get restore.alloydbomni.dbadmin.goog -n NAMESPACESostituisci
NAMESPACEcon lo spazio dei nomi del cluster di database.Per eseguire il comando in modo continuo, aggiungi il flag
-Aw.L'output è simile al seguente:
NAME PHASE COMPLETETIME RESTOREDPOINTINTIME restore-1 RestoreInProgressQuando il valore della colonna
PHASEnella tabella di output èProvisionSucceeded, il ripristino è completato.Visualizza l'avanzamento del cluster di database ripristinato o clonato che sta per essere attivato:
kubectl get dbclusters -A -n NAMESPACESostituisci
NAMESPACEcon lo spazio dei nomi del cluster di database.Per eseguire il comando in modo continuo, aggiungi il flag
-Aw.L'output è simile al seguente:
NAMESPACE NAME PRIMARYENDPOINT PRIMARYPHASE DBCLUSTERPHASE default db-cluster-1 10.128.0.55 Ready DBClusterReadyQuando il valore della colonna
DBCLUSTERPHASEnella tabella di output èDBClusterReady, il cluster di database ripristinato o clonato è pronto per l'uso.
Elimina un backup
In genere, non è necessario eliminare manualmente i backup. L'operatore AlloyDB Omni elimina automaticamente i backup precedenti al periodo di conservazione specificato durante la creazione di un piano di backup.
Se vuoi eliminare manualmente un backup, questo deve soddisfare i seguenti requisiti:
Il backup non è l'unico backup archiviato per il relativo piano di backup. AlloyDB Omni Operator richiede che esista almeno un backup per piano di backup.
Il backup non ha altri backup che dipendono da questo. Ad esempio, un backup completo con backup differenziali o incrementali che dipendono da esso oppure un backup incrementale con backup differenziali che dipendono da esso.
Per eliminare un backup, esegui questo comando:
kubectl delete backup.alloydbomni.dbadmin.goog/BACKUP_NAME -n NAMESPACESostituisci quanto segue:
BACKUP_NAME: il nome del backup da eliminare.NAMESPACE: lo spazio dei nomi del cluster di database.
Aggiornare un piano di backup
Ogni piano di backup è una risorsa Kubernetes. Per aggiornare la configurazione, esegui una delle seguenti operazioni:
Modifica e riapplica il file manifest del piano di backup.
Utilizza il comando
kubectl patch.
Ad esempio, per mettere in pausa un piano di backup in esecuzione, modifica l'attributo paused del relativo manifest in true, quindi applica nuovamente il manifest.
Elimina un piano di backup
Per eliminare un piano di backup e rimuovere tutte le relative risorse di backup, esegui il seguente comando:
kubectl delete backupplan.alloydbomni.dbadmin.goog/BACKUP_PLAN_NAME -n NAMESPACESostituisci quanto segue:
BACKUP_PLAN_NAME: il nome del piano di backup da eliminare.NAMESPACE: lo spazio dei nomi del cluster di database.
Per sospendere un piano di backup senza eliminarlo, imposta l'attributo paused della risorsa del piano di backup su true. Un piano di backup in pausa continua a archiviare
i backup e consente la creazione manuale di backup.