Partager via


Restaurer des données et des déplacements temporels

Important

Cette fonctionnalité est en préversion publique dans les régions suivantes : westus, , westus2eastuseastus2, , centralus, southcentralus, , northeuropewesteurope, , australiaeastbrazilsouth, , canadacentral, centralindia, , . southeastasiauksouth

Cette page explique comment utiliser des instances enfants pour restaurer des données et effectuer des déplacements dans le temps sur votre instance de base de données Lakebase.

Quand devez-vous créer une instance enfant ?

La création d’une instance enfant est utile dans les scénarios suivants :

  • Récupération accidentelle des pertes de données : Si une table critique a été supprimée à 10h23 hier, vous pouvez générer une instance enfant définie sur 10:22 pour extraire uniquement les données manquantes et la fusionner.
  • Environnements de test et d’assurance qualité : Clonez un environnement de type production à partir de n’importe quel point au cours des derniers X jours (tel que défini par votre fenêtre de restauration) pour valider les modifications de schéma ou exécuter des tests d’intégration.
  • Conformité et audit : Provisionnez une instance enfant reflétant l’état de la base de données à une date antérieure pour les audits internes, les rapprochements financiers ou l’analyse légale.

Qu’est-ce qu’une instance enfant ?

Une instance enfant est un clone de copie en écriture de l’instance de base de données d’origine. Il peut être créé à partir du point actuel dans le temps ou à partir d’un point dans le temps historique dans la fenêtre de restauration. Une fenêtre de restauration spécifie l’intervalle de temps (2 à 35 jours) à partir duquel vous pouvez effectuer une récupération à un point dans le temps. La fenêtre de restauration est définie lors de la création d’une instance de base de données. Vous pouvez créer une instance enfant à tout moment dans cette fenêtre de restauration, sans attendre des instantanés manuels ou des exportations complètes de base de données.

Une fois que vous avez créé une instance enfant, elle est disponible pour la requête jusqu’à ce qu’elle soit supprimée. Aucune expiration automatique n’est liée à la fenêtre de restauration du parent. Cela garantit que vous avez toujours accès aux données de point dans le temps où l’instance enfant a été créée, même si la fenêtre de restauration du parent a expiré.

Les instances enfants sont isolées du parent. Les lectures ou écritures que vous effectuez sur une instance enfant n’ont aucun effet sur l’instance source. Les modifications apportées sur une instance enfant utilisent la copie en écriture afin que les modifications soient stockées sous la forme d’un « delta ». Cela conserve les données non modifiées partagées et réduit le stockage supplémentaire.

Créer une instance enfant pour voyager dans le temps et restaurer des données

La création d’une instance enfant est utile dans les scénarios suivants :

  • Récupération accidentelle des pertes de données : Si une table critique a été supprimée à 10h23 hier, vous pouvez générer une instance enfant définie sur 10:22 pour extraire uniquement les données manquantes et la fusionner.
  • Environnements de test et d’assurance qualité : Clonez un environnement de type production à partir de n’importe quel point au cours des derniers X jours (tel que défini par votre fenêtre de restauration) pour valider les modifications de schéma ou exécuter des tests d’intégration.
  • Conformité et audit : Provisionnez une instance enfant reflétant l’état de la base de données à une date antérieure pour les audits internes, les rapprochements financiers ou l’analyse légale.

Instructions pas à pas

Étape 1 : (facultatif) Configurer la fenêtre de restauration sur une instance de base de données parente

Les valeurs valides pour la fenêtre de restauration sont comprises entre 2 et 35 jours, inclus. La fenêtre par défaut est de 7 jours. Vous pouvez spécifier la fenêtre de restauration sur une instance de base de données lorsque vous créez l’instance. Consultez Créer une instance de base de données.

Utilisez l’interface utilisateur ou l’API pour modifier la fenêtre de restauration d’une instance de base de données :

IU

  1. Cliquez sur Calcul dans la barre latérale de l’espace de travail.
  2. Cliquez sur l’onglet Lakebase Provisionné.
  3. Sélectionnez l’instance de base de données à mettre à jour.
  4. Cliquez sur Modifier dans le coin supérieur droit.
  5. Sous Fenêtre Restauration (jours), définissez le nombre de jours pour la fenêtre de restauration.
  6. Cliquez sur Enregistrer.

friser

curl -s -X PATCH --header "Authorization: Bearer ${DATABRICKS_TOKEN}" $DBR_URL/database/instances/my-instance -d '{"retention_window_in_days": 14}'

Étape 2 : Créer une instance enfant

Les rôles et autorisations d’une instance enfant sont identiques aux rôles et autorisations du parent au point de restauration choisi. Cela peut entraîner des utilisateurs disposant de privilèges qui ne correspondent pas aux privilèges actuellement accordés sur l’instance parente. Affichez les rôles d’identité Azure Databricks et révoquez les privilèges obsolètes sur l’instance enfant.

Créez une instance enfant en activant Create from parent lors de la création d’une instance de base de données standard. Consultez Créer et gérer une instance de base de données.

IU

Une fois la création à partir du parent activée, il existe deux paramètres supplémentaires à spécifier :

  • Nom de l’instance parente : Nom de l’instance parente à partir de laquelle vous souhaitez créer une base de données enfant.
  • Incluez les données du parent jusqu’à : Point historique spécifique dans le temps à partir duquel vous souhaitez obtenir des données.
    • Point dans le temps actuel : crée une instance enfant avec les données les plus récentes d’une instance de base de données.
    • Date et heure spécifiques : Cela crée une instance enfant à un moment spécifique dans la fenêtre de restauration d’une instance de base de données. L’instance enfant contient toutes les données à ce moment précis dans le temps.
    • Numéro de séquence de journal spécifique : Crée une instance enfant à partir d’un numéro de séquence de journal wal (WRITE-ahead-log) particulier dans la fenêtre de restauration. PostgreSQL utilise WAL pour prendre en charge la récupération et assigne un LSN à chaque enregistrement WAL. L’instance enfant contient toutes les données au niveau de ce numéro de séquence de journal WAL. Pour plus d'informations sur le fonctionnement interne des WAL, consultez WAL internals. Pour obtenir la valeur LSN actuelle, consultez les fonctions de contrôle de sauvegarde.

friser

Créez une instance enfant à l’aide des données les plus récentes d’une instance de base de données.

curl -s -X POST --header "Authorization: Bearer ${DATABRICKS_TOKEN}" $DBR_URL/database/instances -d '{"name": "test", "capacity": "CU_2", "parent_instance_ref": {"name": "test-child"}}'

Créez une instance enfant avec des données à partir d’une date et d’une heure spécifiques, spécifiées au format UTC.

curl -s -X POST --header "Authorization: Bearer ${DATABRICKS_TOKEN}" $DBR_URL/database/instances -d '{"name": "test", "capacity": "CU_2", "parent_instance_ref": {"name": "test-child", "branch_timestamp":"2025-05-23T17:21:00Z"}}'

Créez une instance enfant avec des données à partir d’un LSN WAL spécifique d’une instance de base de données.

curl -s -X POST --header "Authorization: Bearer ${DATABRICKS_TOKEN}" $DBR_URL/database/instances -d '{"name": "test", "capacity": "CU_2", "parent_instance_ref": {"name": "test-child", "lsn":"0/2A156E"}}'

Kit de développement logiciel (SDK) Python

from databricks.sdk import WorkspaceClient
from databricks.sdk.service.database import DatabaseInstance

# Initialize the Workspace client
w = WorkspaceClient()

parent_instance_name = "test-child"
instance_name = "test"

# Create a child instance using the most recent data from a database instance.
instance = w.database.create_database_instance(
    DatabaseInstance(
        name="my-database-instance",
        capacity="CU_1",
        parent_instance_ref={
            "name": parent_instance_name
        }
    )
)

# Create a child instance with data from a specific date and time, specified in UTC.
instance = w.database.create_database_instance(
    DatabaseInstance(
        name=instance_name,
        capacity="CU_1",
        parent_instance_ref={
            "name": parent_instance_name,
            "branch_timestamp": "2025-05-23T17:21:00Z"
        }
    )
)

# Create a child instance with data from a specific WAL LSN of a database instance.
instance = w.database.create_database_instance(
    DatabaseInstance(
        name=instance_name,
        capacity="CU_1",
        parent_instance_ref={
            "name": parent_instance_name,
            "lsn": "0/2A156E"
        }
    )
)

Interface de ligne de commande (CLI)

# Create a database instance from the most recent data of a parent instance
databricks database create-database-instance my-database-instance \
  --capacity CU_1 \
  --parent-instance-ref '{"name": "my-parent-instance"}'

# Create a database instance from a specific date and time, specified in UTC
databricks database create-database-instance \
  --json '{
    "name": "my-database-instance",
    "capacity": "CU_2",
    "parent_instance_ref": {
      "name": "my-parent-instance",
      "branch_timestamp": "2025-05-23T17:21:00Z"
    }
  }'

# Create a database instance from a specific WAL LSN of a parent instance
databricks database create-database-instance \
  --json '{
    "name": "my-database-instance",
    "capacity": "CU_2",
    "parent_instance_ref": {
      "name": "my-parent-instance",
      "lsn": "0/2A156E"
    }
  }'

Étape 3 (facultatif) : Restaurer des données

Après avoir créé une instance enfant à un moment spécifique, vous pouvez restaurer des données de l’instance enfant vers votre instance de production. Cela est utile pour récupérer contre une perte ou une altération accidentelle des données.

Pour restaurer des données :

  1. Connectez-vous à l’instance enfant à l’aide de votre client PostgreSQL ou de votre méthode de connexion préférée. Consultez Se connecter et interroger.
  2. Écrivez un script pour copier les données requises de l’instance enfant vers votre instance de production. Le script doit effectuer les opérations suivantes :
    • Interroger les tables ou données spécifiques dont vous avez besoin à partir de l’instance enfant
    • Insérer ou mettre à jour les données dans votre instance de production
    • Gérer les conflits ou les transformations de données en fonction des besoins
  3. Testez d’abord l’opération de restauration sur un petit sous-ensemble de données pour garantir l’exactitude.
  4. Exécutez le script de restauration complète pour copier toutes les données requises en production.
  5. Supprimez l’instance enfant après avoir restauré correctement les données et vérifié que l’instance de production est correcte. Pour supprimer votre instance, consultez Supprimer une instance.

Limites

  • Une seule instance enfant peut être créée à la fois pour une instance de base de données.
  • Les instances parentes ne peuvent pas être supprimées, sauf si l’instance enfant est supprimée.
  • Les instances enfants sont conçues pour des tests ou une récupération à court terme. Les modifications importantes sur l’enfant ou le parent peuvent entraîner le système à réduire le partage des données et à conserver une copie complète pour l’enfant. L’utilisation et le coût du stockage peuvent augmenter pour correspondre à celle d’une instance de base de données autonome.