Questa pagina mostra come eseguire il backup e il ripristino dei dati di AlloyDB Omni
utilizzando l'operatore AlloyDB Omni Kubernetes. Ciò richiede conoscenza di base sull'aggiornamento di un cluster Kubernetes utilizzando i file manifest e lo strumento a riga di comando kubectl
. Per ulteriori informazioni sull'installazione e sull'esecuzione di AlloyDB Omni su un cluster Kubernetes, consulta Installare AlloyDB su Kubernetes.
Per attivare il backup e il recupero continui di AlloyDB Omni, devi creare un piano di backup per ogni cluster di database. I backup vengono eseguiti in base alle pianificazioni dei backup definite nella risorsa backupPlan
. Se nel piano di backup non è definita alcuna pianificazione del backup, per impostazione predefinita i backup continui vengono eseguiti ogni giorno. Puoi ripristinare o clonare i backup da qualsiasi timestamp nella finestra di recupero con una granularità di secondi.
Per informazioni sul backup e sul ripristino dei dati di AlloyDB Omni su implementazioni non Kubernetes, consulta Installare e configurare Barman.
Attivare e pianificare i backup
I backup continui vengono attivati quando crei una risorsa di piano di backup per il tuo
cluster di database. Devi creare una risorsa backupPlan
per ogni cluster
database per abilitare il backup continuo per quel cluster. Questa risorsa del piano di backup
definisce i seguenti parametri:
La posizione in cui l'operatore AlloyDB Omni archivia i backup. Può essere locale nel tuo cluster Kubernetes o in un bucket Cloud Storage.
Un'opzione per impostare più pianificazioni dei backup che creano automaticamente backup di
full
,incremental
edifferential
. Puoi mettere in pausa questa programmazione in qualsiasi momento, anche durante la definizione iniziale del 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 dei backup, il valore predefinito è "0 0 * * *", che esegue un backup completo giornaliero a mezzanotte, ora locale.
Un periodo di conservazione per i backup archiviati. Può essere breve, come un giorno, o lungo, come 90 giorni. Il valore predefinito è 14.
Il cluster di database può avere più piani di backup, ciascuno con nome e configurazione propri. Se crei più risorse backupPlan
con pianificazioni di backup diverse per un cluster di database, devi definire una posizione di backup univoca per ogni risorsa di backup.
Crea un piano per archiviare i backup localmente
Per attivare 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 al momento della creazione.FULL_CRON_SCHEDULE
: una pianificazione del backup per creare un backup completo contenente tutti i dati, espresso in formatocron
. Ad esempio, imposta "0 0 * * 0" per eseguire un backup completo alle 00:00 di ogni domenica.DIFF_CRON_SCHEDULE
: una pianificazione dei backup per creare backup awalmente completi. I backup successivi sono differenziali, in base alle modifiche intervenute ai dati, espresse in 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 dall'ultimo backup completo, differenziale o incrementale. È espresso nelcron
formato. Ad esempio, imposta "0 21 * * *" per eseguire un backup incrementale ogni giorno alle 21:00.RETENTION_DAYS
: il numero di giorni per i quali l'Operatore AlloyDB Omni conserva questo backup. Deve essere un numero intero compreso tra1
e90
. Il valore predefinito è14
.PAUSED_BOOLEAN
: specifica se il piano di backup è in pausa o meno. 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 memorizzi i backup in Cloud Storage
Per attivare i backup archiviati su Cloud Storage:
Crea un bucket Cloud Storage. Prendi nota del nome assegnato a questo bucket, ti servirà in un passaggio successivo.
Crea un account di servizio per aggiungere i backup al bucket.
Concedi il ruolo
storage.objectAdmin
Identity and Access Management all'account di servizio.Crea una chiave per l'account di servizio. In questo modo, la chiave privata viene scaricata nel tuo 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 NAMESPACE
Sostituisci quanto segue:
SECRET_NAME
: il nome del secret Kubernetes che stai creando, ad esempiogcs-key
.KEY_PATH
: il percorso del file system locale alkey.json
file 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: NAMESPACE
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 al momento della creazione.FULL_CRON_SCHEDULE
: una pianificazione del backup per creare un backup completo contenente tutti i dati, espresso in formatocron
. Ad esempio, imposta "0 0 * * 0" per eseguire un backup completo alle 00:00 di ogni domenica.DIFF_CRON_SCHEDULE
: una pianificazione dei backup per creare backup awalmente completi. I backup successivi sono differenziali, in base alle modifiche intervenute ai dati, espresse in 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 dall'ultimo backup completo, differenziale o incrementale. È espresso nelcron
formato. Ad esempio, imposta "0 21 * * *" per eseguire un backup incrementale ogni giorno alle 21:00.RETENTION_DAYS
: il numero di giorni per i quali l'Operatore AlloyDB Omni conserva questo backup. Deve essere un numero intero compreso tra1
e90
. Il valore predefinito è14
.PAUSED_BOOLEAN
: specifica se il piano di backup è in pausa o meno. 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 che hai creato in un passaggio precedente. Non si tratta dell'URL completo del bucket; non anteporre il nome del bucket congs://
.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 scelto per il segreto Kubernetes creato in un passaggio precedente.
Creare 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. L'operatore AlloyDB Omni applica al nuovo backup manuale la posizione di archiviazione e il periodo di conservazione del piano di backup scelto.
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 al momento della creazione.BACKUP_TYPE
: specifica il tipo di backup manuale da 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 intermedie ai dati.incr
: crea un backup incrementale che dipende dal backup completo o differenziale precedente per includere i dati modificati dall'ultimo backup completo o differenziale.
Monitorare ed elencare i backup
I piani di backup e i backup sono tutte risorse del cluster Kubernetes. Per visualizzare le relative informazioni, usa il comando kubectl
get
.
Visualizzare un riepilogo del piano di backup
Per visualizzare informazioni sui piani di backup del cluster di database, esegui questo comando:
kubectl get backupplan.alloydbomni.dbadmin.goog -n NAMESPACE
Sostituisci 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 il seguente comando:
kubectl get backup.alloydbomni.dbadmin.goog -n NAMESPACE
Sostituisci 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
Succeeded
che indica un backup pronto per il ripristino. - Il timestamp della 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 di un momento specifico.
Ripristino da un backup denominato
Per ripristinare da un backup, sostituendo i dati nel cluster del database con quelli nel backup:
Elenca tutti i backup la cui fase è
Succeeded
.kubectl get backup.alloydbomni.dbadmin.goog -n NAMESPACE | grep Succeeded
Sostituisci
NAMESPACE
con lo spazio dei nomi del cluster di database.Se esiste almeno un candidato per il 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:27Z
Scegli 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_NAME
Sostituisci 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.
Clonare un cluster da un punto nel tempo
AlloyDB Omni Operator ti consente di clonare i dati del cluster da qualsiasi punto temporale 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 il periodo di recupero per identificare il punto di ripristino:
kubectl get backupplan.alloydbomni.dbadmin.goog BACKUP_NAME -n NAMESPACE -o json | jq .status.recoveryWindow
Di seguito è riportato un esempio di risposta:
recoveryWindow: begin: "2024-01-31T02:54:35Z"
Il valore del timestamp nel formato timestamp 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_NAME
Sostituisci 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à in minuti 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 NAMESPACE
Sostituisci
NAMESPACE
con lo spazio dei nomi del cluster di database.Per eseguire il comando continuamente, aggiungi il flag
-Aw
.L'output è simile al seguente:
NAME PHASE COMPLETETIME RESTOREDPOINTINTIME restore-1 RestoreInProgress
Quando il valore della colonna
PHASE
nella tabella di output èProvisionSucceeded
, il ripristino è completo.Visualizza l'avanzamento del cluster di database ripristinato o clonato che viene messo online:
kubectl get dbclusters -A -n NAMESPACE
Sostituisci
NAMESPACE
con lo spazio dei nomi del cluster di database.Per eseguire il comando continuamente, aggiungi il flag
-Aw
.L'output è simile al seguente:
NAMESPACE NAME PRIMARYENDPOINT PRIMARYPHASE DBCLUSTERPHASE default db-cluster-1 10.128.0.55 Ready DBClusterReady
Quando il valore della colonna
DBCLUSTERPHASE
nella tabella di output èDBClusterReady
, il cluster di database ripristinato o clonato è pronto per l'uso.
Eliminare un backup
In genere, non è necessario eliminare manualmente i backup. L'operatore Omni di AlloyDB 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 piano di backup. L'operatore Omni di AlloyDB richiede che esista almeno un backup per piano di backup.
Il backup non ha altri backup dipendenti. 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 il seguente comando:
kubectl delete backup.alloydbomni.dbadmin.goog/BACKUP_NAME -n NAMESPACE
Sostituisci quanto segue:
BACKUP_NAME
: il nome del backup da eliminare.NAMESPACE
: lo spazio dei nomi del cluster di database.
Ridimensionare un disco di backup
Per ridimensionare il disco locale che memorizza i backup nel cluster Kubernetes, completa i seguenti passaggi:
Aggiorna il campo
resources.disks
del file manifest DBCluster come segue:spec: primarySpec: resources: disks: - name: BACKUP_DISK size: 10Gi
Sostituisci
BACKUP_DISK
con il nome del disco su cui sono archiviati i backup.Applica il manifest per applicare l'aggiornamento.
L'operatore AlloyDB Omni applica immediatamente le specifiche aggiornate al tuo DBCluster.
Le seguenti limitazioni si applicano alla modifica del disco di backup di un cluster di database in esecuzione:
- Puoi aumentare le dimensioni di un disco solo se il
storageClass
specificato supporta l'espansione del volume. - Non puoi ridurre le dimensioni di un disco.
Aggiornare un piano di backup
Ogni piano di backup è una risorsa Kubernetes. Per aggiornarne la configurazione, svolgi 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 suo manifest in true
e poi applica di nuovo il manifest.
Eliminare 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 NAMESPACE
Sostituisci quanto segue:
BACKUP_PLAN_NAME
: il nome del piano di backup da eliminare.NAMESPACE
: lo spazio dei nomi del cluster di database.
Per mettere in pausa 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 memorizzare i backup e consente la creazione di backup manuali.