Intermédiaire9 min de lecture

Sauvegarde et Point-in-Time Recovery DynamoDB : le guide complet

DynamoDB protège tes données de deux façons. Les sauvegardes à la demande sont des instantanés complets que tu prends et conserves indéfiniment. La restauration à un instant dans le passé (PITR) est une sauvegarde continue et automatique qui te permet de restaurer la table à n'importe quelle seconde à l'intérieur d'une fenêtre glissante. Les deux restaurent vers une nouvelle table — ce sont des outils de récupération, pas un bouton d'annulation.

Pour le journal d'audit, c'est non négociable. C'est un enregistrement de conformité immuable ; une mauvaise migration qui réécrit des événements, ou une suppression en masse accidentelle, doit être récupérable jusqu'à l'instant précédant l'erreur.

Comment fonctionnent la sauvegarde et la restauration à un instant dans le passé de DynamoDB ?

DynamoDB propose deux types de sauvegarde. La restauration à un instant dans le passé (PITR) prend des sauvegardes automatiques continues, te permettant de restaurer à n'importe quelle seconde dans une fenêtre configurable de 1 à 35 jours. Les sauvegardes à la demande sont des instantanés complets manuels conservés indéfiniment. Les deux restaurent vers une nouvelle table, jamais par-dessus l'originale, ce qui en fait des outils de récupération plutôt qu'une annulation sur place.

  • PITR = sauvegarde continue, restauration à n'importe quelle seconde dans une fenêtre configurable de 1 à 35 jours (c'était autrefois un 35 fixe).
  • Sauvegardes à la demande = instantanés complets manuels conservés aussi longtemps que tu veux, indépendamment de la fenêtre PITR.
  • Les restaurations créent une nouvelle table. Tu restaures vers un nouveau nom, puis tu bascules — l'originale reste intacte.
  • La PITR est tarifée sur la taille de la table, pas sur le nombre de points de restauration — estime-la avec le calculateur de tarifs DynamoDB.

Le problème : une erreur que tu ne peux pas annuler sur place

DynamoDB n'a aucun journal de transactions que tu peux dérouler en arrière et aucun « annuler » sur une écriture. Si un script de migration réécrit le champ action de chaque événement, ou si quelqu'un lance une suppression plus large que prévu, la table est simplement dans le mauvais état. Sans sauvegardes, les données sont perdues.

Pour un journal d'audit — dont toute la valeur est d'être un enregistrement digne de confiance — « on ne peut pas récupérer les événements de mardi dernier » est un échec de conformité, pas juste un désagrément.

Comment fonctionnent la sauvegarde et la PITR

La restauration à un instant dans le passé, une fois activée, prend des sauvegardes automatiques continues. Selon les docs AWS, la PITR te donne des sauvegardes continues entièrement gérées des données de table avec une granularité de restauration à la seconde. La fenêtre est configurable de 1 à 35 jours via RecoveryPeriodInDays, et tu peux restaurer à n'importe quelle seconde à l'intérieur — jusqu'à environ cinq minutes derrière le temps réel (LatestRestorableDateTime) — y compris vers une région différente.

Une limite importante : diminuer la période de récupération réduit immédiatement le point de restauration le plus ancien, et désactiver puis réactiver la PITR réinitialise l'heure de début récupérable — tu perds l'historique continu antérieur.

La PITR conditionne aussi l'export vers S3 géré : l'export lit les mêmes sauvegardes continues, donc avec la PITR désactivée, ExportTableToPointInTime échoue avec PointInTimeRecoveryUnavailableException.

Les sauvegardes à la demande sont distinctes : des instantanés manuels de table complète que tu crées explicitement et conserves indéfiniment, utiles pour un point de contrôle avant migration ou une archive de conformité à long terme au-delà de la fenêtre PITR de 35 jours. La demande est traitée instantanément et la sauvegarde devient restaurable en quelques minutes, ne consomme aucun débit de la table, et il n'y a aucune limite au nombre que tu en conserves. Une réserve honnête tirée des docs : les sauvegardes à la demande ne garantissent pas la cohérence causale entre les éléments — l'écart entre les mises à jour est "usually much less than a second", mais une sauvegarde prise en plein pic d'écritures n'est pas un instant unique figé.

Ce qu'une restauration ne rétablit pas

Une restauration recrée les données de la table et ses index — pas son câblage opérationnel. D'après les docs AWS, tu dois reconfigurer manuellement sur la table restaurée : les politiques d'auto-scaling, les politiques IAM, les métriques et alarmes CloudWatch, les tags, les paramètres de stream, le TTL, la protection contre la suppression, et la PITR elle-même. Restaurer depuis une sauvegarde en oubliant de réactiver la PITR, c'est ainsi que le prochain incident devient irrécupérable.

Au moment de la restauration, tu peux délibérément changer certains paramètres — mode de facturation, capacité provisionnée, clés de chiffrement — et tu peux exclure tout ou partie des index secondaires, ce qui rend la restauration plus rapide et moins chère si tu peux les reconstruire ensuite. Une restauration peut aussi cibler une région différente, et elle n'écrase jamais une table existante.

Sauvegardes planifiées avec AWS Backup

Les sauvegardes à la demande natives de DynamoDB n'ont aucun planificateur. Pour des sauvegardes récurrentes avec rétention, DynamoDB s'intègre nativement avec AWS Backup (docs AWS) : les plans de sauvegarde te donnent des sauvegardes planifiées avec des règles de cycle de vie (y compris le passage en stockage froid), des copies inter-comptes et inter-régions automatiques pour le PRA, une clé KMS indépendante via le coffre de sauvegarde, et Vault Lock pour une posture de conformité WORM que personne ne peut discrètement supprimer. Deux pièges opérationnels : AWS Backup demande une activation explicite par compte et par région, et les sauvegardes qu'il crée (type AWS_BACKUP) ne peuvent pas être supprimées depuis la console DynamoDB — gère-les dans AWS Backup.

Les deux restaurent vers une nouvelle table, pas par-dessus l'existante :

Restauration PITR à T-5 minvérifier, puis basculeraudit-log (corrompue)audit-log-restored (nouvelle table)l'app pointe vers la table restaurée

Un exemple travaillé : récupérer d'une mauvaise migration

Une migration censée ajouter un attribut expiresAt a plutôt écrasé action sur chaque événement avec une chaîne vide. La PITR est activée avec une fenêtre de 35 jours, donc tu restaures à la seconde précédant l'exécution de la migration :

stepresult
restore PITR to 09:59:00new table audit-log-restored with correct actions
diff against liveconfirm only the migration's rows differ
cut app over to restoredoriginal left intact for forensics

La table corrompue reste intacte pendant que tu vérifies la restauration — tu compares les événements restaurés aux événements en direct, tu confirmes que les valeurs action sont revenues, puis tu repointes l'appli. Rien n'est détruit dans la récupération elle-même.

Si la perte n'était qu'une poignée d'éléments plutôt qu'une corruption de table entière, tu pourrais plutôt inspecter les données en direct et la copie restaurée et copier uniquement les lignes affectées — voir copier une table DynamoDB.

Fais-le dans DynoTable

Une restauration ne vaut que la vérification que tu en fais. Après avoir restauré vers audit-log-restored, tu dois réellement regarder les événements récupérés et confirmer qu'ils correspondent à ce qu'ils auraient dû être avant l'erreur.

DynoTable se connecte à la table restaurée comme à n'importe quelle autre, donc tu peux interroger les événements du tenant affecté, confirmer que les valeurs action sont correctes, et comparer à la table en direct avant de basculer — transformant une restauration d'un acte de foi en une récupération vérifiée.

Inspection d'une table de journal d'audit restaurée par PITR dans DynoTable, pour vérifier les événements récupérés avant de basculer l'appli.
Inspection d'une table de journal d'audit restaurée par PITR dans DynoTable, pour vérifier les événements récupérés avant de basculer l'appli.

Tu peux aussi exporter les événements récupérés pour un enregistrement de conformité hors ligne — voir exporter DynamoDB en CSV.

Pièges et étapes suivantes

  • Active la PITR avant d'en avoir besoin. Elle ne protège qu'à partir du moment où elle est activée — il n'y a pas de récupération rétroactive. Active-la pour toute table dont tu ne peux pas te permettre de perdre les données.
  • Désactiver la PITR réinitialise la fenêtre. La couper puis la rallumer efface l'historique continu ; l'heure de début récupérable repart à partir de la réactivation.
  • Les restaurations ne sont ni instantanées ni gratuites. Une restauration provisionne toute une nouvelle table et prend un temps proportionnel à la taille ; prévois la durée et la table supplémentaire.
  • 35 jours n'est pas de l'archivage. Pour une rétention au-delà de la fenêtre PITR, prends des sauvegardes à la demande ou exporte vers S3 — la PITR est une fenêtre de récupération, pas un stockage à long terme.

Cela boucle la boucle des opérations du journal d'audit : les transactions pour la cohérence, les Streams pour la réaction, le TTL pour l'expiration, le bon mode de capacité pour le coût, les tables globales pour la résilience régionale, et la PITR pour la récupération des données. Reviens à la vue d'ensemble Opérations & Coût pour voir comment ils s'articulent.

Télécharge DynoTable pour te connecter à une table restaurée et vérifier ta récupération avant de lui faire confiance.

Mis à jour