Effectuer une restauration à un instant dans le passé

Utilisez la limite de restauration dans le temps (PITR) pour créer une base de données en tant que copie d’une autre base de données datant d’un moment donné dans le passé dans la limite de la période de rétention. Cet article explique comment effectuer une restauration jusqu’à une date et heure d’une base de données dans SQL Managed Instance avec Azure Arc.

La limite de restauration dans le temps peut restaurer une base de données :

  • à partir d’une base de données existante ;
  • Vers une nouvelle base de données sur la même instance SQL Managed Instance avec Azure Arc

Vous pouvez restaurer une base de données à une limite dans le temps dans le cadre d’un paramètre de rétention préconfiguré. Vous pouvez vérifier le paramètre de rétention d’une instance SQL Managed Instance avec Azure Arc comme suit :

Pour le mode de connexion directe :

az sql mi-arc show --name <SQL instance name> --resource-group <resource-group>
#Example
az sql mi-arc show --name sqlmi --resource-group myresourcegroup

Pour le mode de connexion indirecte :

az sql mi-arc show --name <SQL instance name> --k8s-namespace <SQL MI namespace> --use-k8s
#Example
az sql mi-arc show --name sqlmi --k8s-namespace arc --use-k8s

Actuellement, la limite de restauration dans le temps peut restaurer une base de données :

  • à partir d’une base de données existante sur une instance ;
  • vers une nouvelle base de données sur la même instance.

Sauvegardes automatiques

La fonctionnalité intégrée de sauvegardes automatiques est activée sur l’instance SQL Managed Instance avec Azure Arc. Quand vous créez ou que vous restaurez une nouvelle base de données, l’instance SQL Managed Instance avec Azure Arc lance immédiatement une sauvegarde complète et planifie automatiquement des sauvegardes différentielles et du journal des transactions. L’instance gérée SQL stocke ces sauvegardes dans la classe de stockage spécifiée pendant le déploiement.

La restauration à un instant dans le passé permet de restaurer une base de données à un point spécifique dans le temps, au cours de la période de rétention. Pour restaurer une base de données à un instant spécifique dans le passé, les services de données avec Azure Arc appliquent les fichiers de sauvegarde dans un ordre spécifique. Par exemple :

  1. Sauvegarde complète
  2. Sauvegarde différentielle
  3. Une ou plusieurs sauvegardes de fichier journal

Restauration dans le temps

Actuellement, les sauvegardes complètes sont effectuées une fois par semaine, les sauvegardes différentielles sont effectuées toutes les 12 heures et les sauvegardes du journal des transactions toutes les 5 minutes.

Période de rétention

La période de rétention par défaut pour une nouvelle instance SQL Managed Instance avec Azure Arc est de 7 jours, et elle peut être ajustée à des valeurs de 0 ou de 1 à 35 jours. La période de conservation peut être définie lors du déploiement de l’instance managée SQL en spécifiant la propriété --retention-days. Les fichiers de sauvegarde antérieurs à la période de rétention configurée sont automatiquement supprimés.

Créer une base de données à partir d’un instant dans le passé avec CLI

az sql midb-arc restore --managed-instance <SQL managed instance> --name <source DB name> --dest-name <Name for new db> --k8s-namespace <namespace of managed instance> --time "YYYY-MM-DDTHH:MM:SSZ" --use-k8s
#Example
az sql midb-arc restore --managed-instance sqlmi1 --name Testdb1 --dest-name mynewdb --k8s-namespace arc --time "2021-10-29T01:42:14.00Z" --use-k8s

Vous pouvez également utiliser l’option --dry-run pour valider votre opération de restauration sans réellement restaurer la base de données.

az sql midb-arc restore --managed-instance <SQL managed instance> --name <source DB name> --dest-name <Name for new db> --k8s-namespace <namespace of managed instance> --time "YYYY-MM-DDTHH:MM:SSZ" --use-k8s --dry-run
#Example
az sql midb-arc restore --managed-instance sqlmi1 --name Testdb1 --dest-name mynewdb --k8s-namespace arc --time "2021-10-29T01:42:14.00Z" --use-k8s --dry-run

Créer une base de données à partir d’un instant dans le passé avec kubectl

  1. Pour effectuer une restauration à un instant dans le passé avec les outils natifs Kubernetes, vous pouvez utiliser kubectl. Créez un fichier YAML de spécifications de tâche. Par exemple :

    apiVersion: tasks.sql.arcdata.microsoft.com/v1
    kind: SqlManagedInstanceRestoreTask                 
    metadata:                                       
      name: myrestoretask20220304
      namespace: test                              
    spec:                                           
      source:                                       
        name: miarc1                                
        database: testdb                            
      restorePoint: "2021-10-12T18:35:33Z"          
      destination:                                  
        name: miarc1                           
        database: testdb-pitr
      dryRun: false  
    
  2. Modifiez les propriétés comme suit :

    1. name: Chaîne unique pour chaque ressource personnalisée (CR). Requis par Kubernetes.
    2. Espace de noms Kubernetes namespace: où se trouve l’instance.
    3. source: ... name: Nom de l’instance source.
    4. source: ... database: Nom de la base de données source à partir de laquelle la restauration doit être appliquée.
    5. restorePoint: Instant dans le passé pour l’opération de restauration en heure UTC.
    6. destination: ... name: Nom de l’instance gérée SQL avec Azure Arc de destination. La restauration à un instant dans le passé est uniquement prise en charge pour l’instance gérée SQL avec Arc. Elle doit être la même que l’instance gérée SQL source.
    7. destination: ... database: Nom de la nouvelle base de données sur laquelle la restauration doit être appliquée.
  3. Créez une tâche pour démarrer l’opération de restauration à un instant dans le passé. L’exemple suivant initialise la tâche définie dans myrestoretask20220304.yaml.

    kubectl apply -f myrestoretask20220304.yaml
    
  4. Vérifiez l’état de la tâche de restauration comme suit :

    kubectl get sqlmirestoretask -n <namespace>
    

L’état de la tâche de restauration sera mis à jour toutes les 10 secondes, en fonction de la progression de PITR. L’état passe de Waiting à Restoring, puis à Completed ou Failed.

Créer une base de données à partir d’un instant dans le passé avec Azure Data Studio

Vous pouvez également restaurer une base de données à un instant dans le passé à partir d’Azure Data Studio comme suit :

  1. Lancer Azure Data Studio
  2. Vérifiez que vous disposez des extensions Arc nécessaires, comme décrit dans Outils.
  3. Se connecter au contrôleur de données Azure Arc
  4. Développez le nœud du contrôleur de données, cliquez avec le bouton droit sur l’instance, puis sélectionnez Gérer. Azure Data Studio lance le tableau de bord de l’instance gérée SQL.
  5. Cliquez sur l’onglet Sauvegardes dans le tableau de bord
  6. Vous devriez voir une liste de bases de données sur l’instance gérée SQL, ainsi que leurs fenêtres de temps de restauration les plus anciennes et récentes, ainsi qu’une icône pour lancer la restauration
  7. Cliquez sur l’icône de la base de données à partir de laquelle vous souhaitez effectuer la restauration. Azure Data Studio lance un panneau sur le côté droit
  8. Fournissez l’entrée requise dans le panneau, puis cliquez sur Restaurer

Surveiller la progression

Lorsqu’une restauration est lancée, une tâche est créée dans le cluster Kubernetes qui exécute les opérations de restauration réelles de sauvegardes complètes, différentielles et de journal. La progression de cette activité peut être analysée à partir de votre cluster Kubernetes, comme suit :

kubectl get sqlmirestoretask -n <namespace>
#Example
kubectl get sqlmirestoretask -n arc

Vous pouvez obtenir plus de détails sur le travail en exécutant kubectl describe sur la tâche. Par exemple :

kubectl describe sqlmirestoretask <nameoftask> -n <namespace>

Configurer la période de rétention

La période de rétention d’une instance SQL Managed Instance avec Azure Arc peut être reconfigurée comme suit :

Avertissement

Si vous réduisez la période de rétention actuelle, vous perdez la possibilité de restaurer à des points dans le temps antérieurs à la nouvelle période de rétention. Les sauvegardes qui ne sont plus nécessaires pour fournir la fonctionnalité PITR dans la nouvelle période de rétention sont supprimées. Si vous augmentez la période de rétention actuelle, vous n’avez pas immédiatement la possibilité de restaurer à des points dans le temps antérieurs dans la nouvelle période de rétention. Vous obtenez cette possibilité dans le temps, car le système commence à conserver les sauvegardes plus longtemps.

--retention-period peut être modifié pour une instance SQL Managed Instance - Azure Arc comme suit. La commande ci-dessous s’applique aux deux modes connectés direct et indirect.

az sql mi-arc update  --name <SQLMI name> --k8s-namespace <namespace>  --use-k8s --retention-days <retentiondays>

Par exemple :

az sql mi-arc update  --name sqlmi --k8s-namespace arc  --use-k8s --retention-days 10

Désactiver les sauvegardes automatiques

Vous pouvez désactiver les sauvegardes automatiques intégrées pour une instance spécifique de SQL Managed Instance avec Azure Arc en définissant la propriété --retention-days sur 0, comme suit. La commande ci-dessous s’applique aux deux modes direct et indirect.

Avertissement

Si vous désactivez les sauvegardes automatiques pour une instance SQL Managed Instance avec Azure Arc, toutes les sauvegardes automatiques configurées sont supprimées et vous perdez la possibilité d’effectuer une restauration jusqu’à une date et heure. Vous pouvez modifier la propriété retention-days pour relancer les sauvegardes automatiques si nécessaire.

az sql mi-arc update  --name <SQLMI name> --k8s-namespace <namespace>  --use-k8s --retention-days 0

Par exemple :

az sql mi-arc update  --name sqlmi --k8s-namespace arc  --use-k8s --retention-days 0

Surveiller les sauvegardes

Les sauvegardes sont stockées sous le dossier /var/opt/mssql/backups/archived/<dbname>/<datetime>, où <dbname> est le nom de la base de données et <datetime> serait un timestamp au format UTC, pour le début de chaque sauvegarde complète. Chaque fois qu’une sauvegarde complète est lancée, un nouveau dossier est créé contenant la sauvegarde complète et toutes les sauvegardes différentielles et de fichier journal ultérieures. La sauvegarde complète la plus récente et ses sauvegardes différentielles et de fichier journal ultérieures sont stockées dans le dossier /var/opt/mssql/backups/current/<dbname><datetime>.

Limites

La restauration jusqu’à une date et heure sur SQL Managed Instance avec Azure Arc a les limitations suivantes :

  • La restauration à un point dans le temps est une fonctionnalité au niveau de la base de données et non pas une fonctionnalité au niveau de l’instance. Vous ne pouvez pas restaurer l’intégralité de l’instance avec la restauration à un point dans le temps.
  • Vous pouvez restaurer seulement vers la même instance SQL Managed Instance avec Azure Arc depuis là où la sauvegarde a été effectuée.

En savoir plus sur les fonctionnalités et les capacités de SQL Managed Instance avec Azure Arc

Commencer en créant un contrôleur de données

Créer une instance SQL Managed Instance avec Azure Arc