Cette page explique comment sauvegarder et restaurer vos données AlloyDB Omni à l'aide de l'opérateur Kubernetes AlloyDB Omni. Pour ce faire, vous devez disposer de connaissances de base sur la mise à jour d'un cluster Kubernetes à l'aide de fichiers manifestes et de l'outil de ligne de commande kubectl
. Pour en savoir plus sur l'installation et l'exécution d'AlloyDB Omni sur un cluster Kubernetes, consultez Installer AlloyDB sur Kubernetes.
Pour activer la sauvegarde et la récupération continues dans AlloyDB Omni, vous devez créer un plan de sauvegarde pour chaque cluster de base de données. Les sauvegardes sont effectuées en fonction des planifications définies dans la ressource backupPlan
. Si aucun calendrier de sauvegarde n'est défini dans le plan de sauvegarde, des sauvegardes continues sont effectuées quotidiennement par défaut. Vous pouvez restaurer ou cloner des sauvegardes à partir de n'importe quel code temporel de la période de récupération avec une précision de seconde.
Pour en savoir plus sur la sauvegarde et la restauration de vos données AlloyDB Omni sur des déploiements autres que Kubernetes, consultez Installer et configurer Barman.
Activer et planifier des sauvegardes
Les sauvegardes continues sont activées lorsque vous créez une ressource de plan de sauvegarde pour votre cluster de base de données. Vous devez créer une ressource backupPlan
pour chaque cluster de base de données afin d'activer la sauvegarde continue pour ce cluster. Cette ressource de plan de sauvegarde définit les paramètres suivants:
Emplacement où l'opérateur AlloyDB Omni stocke les sauvegardes. Il peut s'agir d'un stockage local sur votre cluster Kubernetes ou dans un bucket Cloud Storage.
Option permettant de définir plusieurs planifications de sauvegarde qui créent automatiquement des sauvegardes
full
,incremental
etdifferential
. Vous pouvez mettre cette planification en pause à tout moment, y compris lorsque vous définissez initialement le plan de sauvegarde. Si un plan de sauvegarde est suspendu, les sauvegardes planifiées ne sont pas créées, mais vous pouvez toujours l'utiliser pour créer des sauvegardes manuellement.Si aucun calendrier de sauvegarde n'est spécifié, la valeur par défaut est "0 0 * * *", ce qui génère une sauvegarde complète quotidienne à minuit, heure locale.
Période de conservation des sauvegardes stockées. Cette période peut être aussi courte qu'une journée ou aussi longue que 90 jours. La valeur par défaut est 14.
Votre cluster de base de données peut comporter plusieurs plans de sauvegarde, chacun avec son propre nom et sa propre configuration. Si vous créez plusieurs ressources backupPlan
avec des planifications de sauvegarde différentes pour un cluster de bases de données, vous devez définir un emplacement de sauvegarde unique pour chaque ressource de sauvegarde.
Créer un plan de stockage des sauvegardes localement
Pour activer les sauvegardes stockées localement, appliquez le fichier manifeste suivant:
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
Remplacez les éléments suivants :
BACKUP_PLAN_NAME
: nom de cette ressource de plan de sauvegarde (par exemple,backup-plan-1
).NAMESPACE
: espace de noms Kubernetes de ce plan de sauvegarde. Il doit correspondre à l'espace de noms du cluster de base de données.DB_CLUSTER_NAME
: nom de votre cluster de base de données, que vous avez attribué lors de sa création.FULL_CRON_SCHEDULE
: planification de sauvegarde pour créer une sauvegarde complète, contenant toutes les données, exprimée au formatcron
. Par exemple, définissez la valeur sur "0 0 * * 0" pour effectuer une sauvegarde complète à 00h00 tous les dimanches.DIFF_CRON_SCHEDULE
: planification des sauvegardes pour créer des sauvegardes initialement complètes. Les sauvegardes suivantes sont différentielles, en fonction des modifications apportées aux données, exprimées au formatcron
. Par exemple, définissez la valeur sur "0 22 * * 3" pour effectuer une sauvegarde différentielle à 22h00 tous les mercredis.INCR_CRON_SCHEDULE
: planification de sauvegarde pour créer des sauvegardes incluant les données modifiées depuis la dernière sauvegarde complète, différentielle ou incrémentielle. Il est exprimé au formatcron
. Par exemple, définissez la valeur sur "0 21 * * *" pour effectuer une sauvegarde incrémentielle à 21h00 tous les jours.RETENTION_DAYS
: nombre de jours pendant lesquels l'opérateur AlloyDB Omni conserve cette sauvegarde. Il doit s'agir d'un nombre entier compris entre1
et90
. La valeur par défaut est14
.PAUSED_BOOLEAN
: indique si le plan de sauvegarde est mis en pause ou non. Indiquez l'une des valeurs suivantes:true
: les sauvegardes sont suspendues et aucune sauvegarde planifiée n'est créée.false
: l'opérateur AlloyDB Omni crée des sauvegardes selon le calendrier spécifié parcronSchedule
. Il s'agit de la valeur par défaut, si elle n'est pas explicitement définie surtrue
.
La valeur par défaut est
false
.
Créer un plan qui stocke les sauvegardes dans Cloud Storage
Pour activer les sauvegardes stockées dans Cloud Storage, procédez comme suit:
Créer un bucket Cloud Storage Notez le nom que vous attribuez à ce bucket. Vous en aurez besoin à une étape ultérieure.
Créez un compte de service pour ajouter des sauvegardes au bucket.
Attribuez le rôle Identity and Access Management
storage.objectAdmin
au compte de service.Créez une clé pour le compte de service. La clé privée est ainsi téléchargée dans votre environnement local.
Renommez le fichier de clé téléchargé en
key.json
.Créez un secret Kubernetes contenant la clé privée:
kubectl create secret generic SECRET_NAME --from-file=KEY_PATH -n NAMESPACE
Remplacez les éléments suivants :
SECRET_NAME
: nom du secret Kubernetes que vous créez (par exemple,gcs-key
).KEY_PATH
: chemin d'accès au système de fichiers local du fichierkey.json
que vous avez téléchargé aux étapes précédentes.NAMESPACE
: espace de noms du cluster de base de données.
Appliquez le fichier manifeste suivant:
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
Remplacez les éléments suivants :
BACKUP_PLAN_NAME
: nom de cette ressource de plan de sauvegarde (par exemple,backup-plan-1
).NAMESPACE
: espace de noms Kubernetes de ce plan de sauvegarde. Il doit correspondre à l'espace de noms du cluster de base de données.DB_CLUSTER_NAME
: nom de votre cluster de base de données, que vous avez attribué lors de sa création.FULL_CRON_SCHEDULE
: planification de sauvegarde pour créer une sauvegarde complète, contenant toutes les données, exprimée au formatcron
. Par exemple, définissez la valeur sur "0 0 * * 0" pour effectuer une sauvegarde complète à 00h00 tous les dimanches.DIFF_CRON_SCHEDULE
: planification des sauvegardes pour créer des sauvegardes initialement complètes. Les sauvegardes suivantes sont différentielles, en fonction des modifications apportées aux données, exprimées au formatcron
. Par exemple, définissez la valeur sur "0 22 * * 3" pour effectuer une sauvegarde différentielle à 22h00 tous les mercredis.INCR_CRON_SCHEDULE
: planification de sauvegarde pour créer des sauvegardes incluant les données modifiées depuis la dernière sauvegarde complète, différentielle ou incrémentielle. Il est exprimé au formatcron
. Par exemple, définissez la valeur sur "0 21 * * *" pour effectuer une sauvegarde incrémentielle à 21h00 tous les jours.RETENTION_DAYS
: nombre de jours pendant lesquels l'opérateur AlloyDB Omni conserve cette sauvegarde. Il doit s'agir d'un nombre entier compris entre1
et90
. La valeur par défaut est14
.PAUSED_BOOLEAN
: indique si le plan de sauvegarde est mis en pause ou non. Indiquez l'une des valeurs suivantes:true
: les sauvegardes sont suspendues et aucune sauvegarde planifiée n'est créée.false
: l'opérateur AlloyDB Omni crée des sauvegardes selon le calendrier spécifié parcronSchedule
. Il s'agit de la valeur par défaut, si elle n'est pas explicitement définie surtrue
.
La valeur par défaut est
false
.
BUCKET_URL
: nom du bucket Cloud Storage que vous avez créé à une étape précédente. Il ne s'agit pas de l'URL complète du bucket. N'ajoutez pasgs://
au nom du bucket.BACKUP_PATH
: chemin d'accès au répertoire dans lequel l'opérateur AlloyDB Omni écrit les sauvegardes, dans le bucket Cloud Storage. Le chemin d'accès doit être absolu et commencer par/
.SECRET_NAME
: nom que vous avez choisi pour le secret Kubernetes que vous avez créé à une étape précédente.
Créer manuellement une sauvegarde
Vous pouvez créer manuellement une ressource de sauvegarde à tout moment, à l'aide de n'importe quel plan de sauvegarde que vous avez déjà appliqué à un cluster de base de données. L'opérateur AlloyDB Omni applique l'emplacement de stockage et la période de conservation du plan de sauvegarde choisi à la nouvelle sauvegarde manuelle.
Pour créer manuellement une sauvegarde, appliquez le fichier manifeste suivant:
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
Remplacez les éléments suivants :
BACKUP_NAME
: nom de cette sauvegarde (par exemple,backup-1
).NAMESPACE
: espace de noms Kubernetes de cette restauration. Il doit correspondre à l'espace de noms du cluster de base de données.BACKUP_PLAN_NAME
: nom de la ressource de plan de sauvegarde à laquelle cette sauvegarde appartient. Il doit correspondre au nom que vous avez choisi lorsque vous avez créé le plan de sauvegarde.DB_CLUSTER_NAME
: nom de votre cluster de base de données, que vous avez attribué lors de sa création.BACKUP_TYPE
: spécifie le type de sauvegarde manuelle que vous souhaitez créer. Choisissez l'une des valeurs suivantes:full
: crée une sauvegarde complète contenant toutes les données.diff
: crée une sauvegarde différentielle qui dépend de la dernière sauvegarde complète. Les sauvegardes ultérieures sont différentielles, en fonction des modifications apportées aux données.incr
: crée une sauvegarde incrémentielle qui dépend de la sauvegarde complète ou différentielle précédente pour inclure les données qui ont changé depuis la dernière sauvegarde complète ou différentielle.
Surveiller et lister les sauvegardes
Vos plans de sauvegarde et vos sauvegardes sont toutes des ressources de votre cluster Kubernetes. Pour afficher des informations à leur sujet, utilisez la commande kubectl
get
.
Afficher le résumé d'un plan de sauvegarde
Pour afficher des informations sur les plans de sauvegarde de votre cluster de base de données, exécutez la commande suivante:
kubectl get backupplan.alloydbomni.dbadmin.goog -n NAMESPACE
Remplacez NAMESPACE
par l'espace de noms du cluster de bases de données.
Le résultat se présente comme suit :
NAME PHASE LASTBACKUPTIME NEXTBACKUPTIME
backup-plan-prod Ready 2023-10-26T17:26:43Z 2023-10-27T00:00:00Z
Afficher la liste des sauvegardes
Pour afficher la liste des sauvegardes disponibles pour votre cluster de base de données, exécutez la commande suivante:
kubectl get backup.alloydbomni.dbadmin.goog -n NAMESPACE
Remplacez NAMESPACE
par l'espace de noms du cluster de bases de données.
Le résultat se présente comme suit :
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
Chaque ligne du tableau de sortie représente une ressource de sauvegarde, avec les attributs suivants:
- Nom de la sauvegarde.
- État de la sauvegarde, avec
Succeeded
indiquant une sauvegarde prête à être restaurée. - Code temporel de création de la sauvegarde.
Restaurer à partir d'une sauvegarde
AlloyDB vous permet de restaurer à partir de sauvegardes individuelles ou de cloner un cluster à l'aide d'une sauvegarde à un moment précis.
Restaurer à partir d'une sauvegarde nommée
Pour restaurer à partir d'une sauvegarde, en remplaçant les données de votre cluster de base de données par celles de la sauvegarde, procédez comme suit.
Répertoriez toutes les sauvegardes dont la phase est
Succeeded
.kubectl get backup.alloydbomni.dbadmin.goog -n NAMESPACE | grep Succeeded
Remplacez
NAMESPACE
par l'espace de noms du cluster de bases de données.Si au moins une bonne sauvegarde candidate existe, le résultat ressemble à ce qui suit:
backup-plan-prod-20231026172643 Succeeded 2023-10-26T17:26:53Z manual-backup-1 Succeeded 2023-10-26T18:15:27Z
Choisissez l'une des sauvegardes listées à l'étape précédente comme sauvegarde à partir de laquelle effectuer la restauration. Notez son nom, car vous l'utiliserez à l'étape suivante.
Appliquez le fichier manifeste suivant:
apiVersion: alloydbomni.dbadmin.goog/v1 kind: Restore metadata: name: RESTORE_NAME namespace: NAMESPACE spec: sourceDBCluster: DB_CLUSTER_NAME backup: BACKUP_NAME
Remplacez les éléments suivants :
RESTORE_NAME: nom à utiliser avec la ressource de restauration de données créée par ce fichier manifeste (par exemple,
restore-1
).DB_CLUSTER_NAME: nom de votre cluster de base de données, que vous avez attribué lors de sa création.
BACKUP_NAME: nom de la sauvegarde que vous avez choisie à l'étape précédente.
Cloner un cluster à partir d'un moment précis
L'opérateur AlloyDB Omni vous permet de cloner les données du cluster à partir de n'importe quel point dans le temps pendant une période de récupération. La durée de la fenêtre de récupération est directement déterminée par la période de conservation.
Par exemple, si votre période de conservation est définie sur 14 jours, vous ne pouvez pas récupérer les données de plus de 14 jours. Vous pouvez restaurer à tout moment pendant la période de récupération. L'opérateur AlloyDB Omni conserve les sauvegardes et les journaux pendant un jour de plus que la valeur spécifiée.
Surveillez votre fenêtre de récupération pour identifier le point de restauration:
kubectl get backupplan.alloydbomni.dbadmin.goog BACKUP_NAME -n NAMESPACE -o json | jq .status.recoveryWindow
Voici un exemple de réponse:
recoveryWindow: begin: "2024-01-31T02:54:35Z"
La valeur d'horodatage au format RFC 3339 est utilisée dans la ressource de restauration.
Créez et appliquez le fichier manifeste de ressources de restauration suivant:
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
Remplacez les éléments suivants :
RESTORE_NAME: nom à utiliser avec la ressource de restauration de données créée par ce fichier manifeste (par exemple,
restore-1
).DB_CLUSTER_NAME: nom de votre cluster de base de données, que vous avez attribué lors de sa création.
DATE_AND_TIME_STAMP: code temporel RFC 3339 à la granularité de la minute de la sauvegarde continue à partir de laquelle vous souhaitez effectuer la restauration (par exemple,
2024-03-05T15:32:10Z
).NEW_DB_CLUSTER_NAME: nom du nouveau cluster de base de données.
Afficher l'état de la restauration
Afficher la progression de l'opération de restauration:
kubectl get restore.alloydbomni.dbadmin.goog -n NAMESPACE
Remplacez
NAMESPACE
par l'espace de noms du cluster de bases de données.Pour exécuter la commande en continu, ajoutez l'option
-Aw
.Le résultat se présente comme suit :
NAME PHASE COMPLETETIME RESTOREDPOINTINTIME restore-1 RestoreInProgress
Lorsque la valeur de la colonne
PHASE
du tableau de sortie indiqueProvisionSucceeded
, la restauration est terminée.Afficher la progression de la mise en ligne du cluster de base de données restauré ou cloné:
kubectl get dbclusters -A -n NAMESPACE
Remplacez
NAMESPACE
par l'espace de noms du cluster de bases de données.Pour exécuter la commande en continu, ajoutez l'option
-Aw
.Le résultat se présente comme suit :
NAMESPACE NAME PRIMARYENDPOINT PRIMARYPHASE DBCLUSTERPHASE default db-cluster-1 10.128.0.55 Ready DBClusterReady
Lorsque la valeur de la colonne
DBCLUSTERPHASE
dans le tableau de sortie indiqueDBClusterReady
, le cluster de base de données restauré ou cloné est prêt à l'emploi.
Supprimer une sauvegarde
En règle générale, vous n'avez pas besoin de supprimer manuellement les sauvegardes. L'opérateur AlloyDB Omni supprime automatiquement les sauvegardes antérieures à la période de conservation que vous spécifiez lors de la création d'un plan de sauvegarde.
Si vous souhaitez supprimer manuellement une sauvegarde, celle-ci doit répondre aux exigences suivantes:
La sauvegarde n'est pas la seule sauvegarde stockée pour son plan de sauvegarde. L'opérateur AlloyDB Omni nécessite qu'au moins une sauvegarde existe par plan de sauvegarde.
Aucune autre sauvegarde ne dépend de cette sauvegarde. Par exemple, une sauvegarde complète avec des sauvegardes différentielles ou incrémentielles qui en dépendent, ou une sauvegarde incrémentielle avec des sauvegardes différentielles qui en dépendent.
Pour supprimer une sauvegarde, exécutez la commande suivante :
kubectl delete backup.alloydbomni.dbadmin.goog/BACKUP_NAME -n NAMESPACE
Remplacez les éléments suivants :
BACKUP_NAME
: nom de la sauvegarde à supprimer.NAMESPACE
: espace de noms du cluster de base de données.
Redimensionner un disque de sauvegarde
Pour redimensionner le disque local qui stocke vos sauvegardes dans le cluster Kubernetes, procédez comme suit:
Mettez à jour le champ
resources.disks
du fichier manifeste DBCluster comme suit:spec: primarySpec: resources: disks: - name: BACKUP_DISK size: 10Gi
Remplacez
BACKUP_DISK
par le nom du disque sur lequel sont stockées vos sauvegardes.Appliquez le fichier manifeste pour appliquer la mise à jour.
L'opérateur AlloyDB Omni applique immédiatement les spécifications mises à jour à votre DBCluster.
Les restrictions suivantes s'appliquent à la modification du disque de sauvegarde d'un cluster de base de données en cours d'exécution:
- Vous ne pouvez augmenter la taille d'un disque que si l'
storageClass
spécifiée est compatible avec l'extension de volume. - Vous ne pouvez pas réduire la taille d'un disque.
Mettre à jour un plan de sauvegarde
Chaque plan de sauvegarde est une ressource Kubernetes. Pour mettre à jour sa configuration, effectuez l'une des opérations suivantes:
Modifiez et réappliquez le fichier manifeste du plan de sauvegarde.
Exécutez la commande
kubectl patch
.
Par exemple, pour suspendre un plan de sauvegarde en cours d'exécution, remplacez l'attribut paused
de son fichier manifeste par true
, puis réappliquez le fichier manifeste.
Supprimer un plan de sauvegarde
Pour supprimer un plan de sauvegarde et toutes ses ressources de sauvegarde, exécutez la commande suivante:
kubectl delete backupplan.alloydbomni.dbadmin.goog/BACKUP_PLAN_NAME -n NAMESPACE
Remplacez les éléments suivants :
BACKUP_PLAN_NAME
: nom du plan de sauvegarde à supprimer.NAMESPACE
: espace de noms du cluster de base de données.
Pour suspendre un plan de sauvegarde sans le supprimer, définissez l'attribut paused
de la ressource du plan de sauvegarde sur true
. Un plan de sauvegarde suspendu continue de stocker des sauvegardes et permet de créer des sauvegardes manuelles.