Partilhar via


Restaurar dados e viajar no tempo

Importante

Esta funcionalidade está na Pré-visualização Pública nas seguintes regiões: westus, westus2, eastus, eastus2, centralussouthcentralusnortheuropewesteuropeaustraliaeastbrazilsouthcanadacentralcentralindiasoutheastasiauksouth.

Esta página explica como usar instâncias-filho para restaurar dados e efetuar viagens no tempo na sua instância de base de dados Lakebase.

Quando você deve criar uma instância filho?

A criação de uma instância filho é útil nos seguintes cenários:

  • Recuperação acidental de perda de dados: Se uma tabela crítica foi apagada às 10h23 de ontem, pode-se criar uma instância secundária definida para as 10h22 para extrair apenas os dados ausentes e integrá-los de volta.
  • Ambientes de teste e QA: Clone um ambiente semelhante à produção a partir de qualquer ponto nos últimos X dias (conforme definido pela janela de restauração) para validar alterações de esquema ou executar testes de integração.
  • Conformidade e auditoria: Provisione uma instância filho que reflita o estado do banco de dados em uma data passada para auditorias internas, reconciliações financeiras ou análise forense.

O que é uma instância infantil?

Uma instância filha é um clone "copy-on-write" da instância original do banco de dados. Ele pode ser criado a partir do point-in-time atual ou de um point-in-time histórico dentro da janela de restauração. Uma janela de restauração especifica o intervalo de tempo (2 a 35 dias) a partir do qual você pode executar a recuperação point-in-time. A janela de restauração é definida ao criar uma instância de banco de dados. Você pode criar uma instância filho a qualquer momento dentro dessa janela de restauração, sem esperar por instantâneos manuais ou exportações completas de banco de dados.

Depois de criar uma instância filho, ela fica disponível para consulta até ser excluída. Não existe uma expiração automática ligada à janela de restauro do progenitor. Isto garante que tem sempre acesso aos dados no momento em que a instância filha foi criada, mesmo que a janela de restauro do pai tenha expirado.

As instâncias filho são isoladas do pai. Todas as leituras ou gravações que você executa em uma instância filho não têm efeito sobre a instância de origem. As modificações feitas numa instância filha utilizam o método copy-on-write para que as alterações sejam armazenadas como um "delta". Isso mantém dados não modificados compartilhados e minimiza o armazenamento extra.

Criar uma instância filha para viajar no tempo e restaurar dados

A criação de uma instância filho é útil nos seguintes cenários:

  • Recuperação acidental de perda de dados: Se uma tabela crítica foi apagada às 10h23 de ontem, pode-se criar uma instância secundária definida para as 10h22 para extrair apenas os dados ausentes e integrá-los de volta.
  • Ambientes de teste e QA: Clone um ambiente semelhante à produção a partir de qualquer ponto nos últimos X dias (conforme definido pela janela de restauração) para validar alterações de esquema ou executar testes de integração.
  • Conformidade e auditoria: Provisione uma instância filho que reflita o estado do banco de dados em uma data passada para auditorias internas, reconciliações financeiras ou análise forense.

Instruções passo a passo

Passo 1: (Opcional) Configurar a janela de restauro numa instância de base de dados pai

Os valores válidos para a janela de restauração são entre 2 a 35 dias, inclusive. A janela padrão é de 7 dias. Você pode especificar a janela de restauração em uma instância de banco de dados ao criar a instância. Consulte Criar uma instância de banco de dados.

Use a interface do usuário ou a API para modificar a janela de restauração de uma instância de banco de dados:

IU

  1. Clique em Computação na barra lateral do espaço de trabalho.
  2. Clique no separador Lakebase Provisioned.
  3. Selecione a instância do banco de dados que você deseja atualizar.
  4. Clique em Editar no canto superior direito.
  5. Em Janela de restauração (dias), defina o número de dias para a janela de restauração.
  6. Clique em Salvar.

encaracolar

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

Etapa 2: Criar uma instância filha

As funções e permissões de uma instância filho são as mesmas do pai no ponto de restauração escolhido. Isso pode fazer com que os usuários tenham privilégios que não correspondem aos privilégios concedidos atualmente na instância pai. Exiba as funções de identidade do Azure Databricks e revogue quaisquer privilégios desatualizados na instância filha.

Crie uma instância filho habilitando Criar do pai durante a criação regular da instância de banco de dados. Consulte Criar e gerenciar uma instância de banco de dados.

IU

Com Criar a partir do pai ativado, há dois parâmetros adicionais para especificar:

  • Nome da instância pai: O nome da instância pai a partir da qual você deseja criar um banco de dados filho.
  • Inclua dados do pai até: O ponto histórico específico do tempo do qual você deseja dados.
    • Ponto temporal atual: Isso cria uma instância-filho com os dados mais recentes de uma instância de base de dados.
    • Data e hora específicas: Isso cria uma instância filho em um momento específico dentro da janela de restauração de uma instância de banco de dados. A instância filho contém todos os dados nesse ponto específico no tempo.
    • Número de sequência de log específico: Cria uma instância filho a partir de um número de sequência de log (LSN) de write-ahead-log (WAL) específico na janela de restauração. O PostgreSQL usa WAL para dar suporte à recuperação e atribui um LSN a cada registro WAL. A instância filha contém todos os dados nesse WAL LSN. Para obter mais informações sobre WALs, consulte Internos da WAL. Para obter o valor LSN atual, consulte Funções de controle de backup.

encaracolar

Crie uma subinstância usando os dados mais recentes de uma instância de banco de dados.

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"}}'

Crie uma instância filha com dados de uma data e hora específicas, especificadas em 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"}}'

Crie uma instância filha com dados de um WAL LSN específico de uma instância de banco de dados.

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"}}'

Python SDK

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"
        }
    )
)

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"
    }
  }'

Passo 3 (Opcional): Restaurar dados

Depois de criar uma instância filha num ponto específico, pode restaurar dados da instância filha de volta para a sua instância de produção. Isto é útil para recuperar de perda ou corrupção acidental de dados.

Para restaurar dados:

  1. Liga-te à instância filho usando o teu cliente ou método de ligação PostgreSQL preferido. Consulte Conectar e consultar.
  2. Escreve um script para copiar os dados necessários da instância filha para a tua instância de produção. O guião deve fazer o seguinte:
    • Consulta as tabelas ou dados específicos de que precisas da instância filha
    • Insera ou atualize os dados na sua instância de produção
    • Tratar de quaisquer conflitos ou transformações de dados conforme necessário
  3. Teste primeiro a operação de restauro num pequeno subconjunto de dados para garantir a correção.
  4. Executa o script completo de restauração para copiar todos os dados necessários de volta para produção.
  5. Apague a instância filha após restaurar com sucesso os dados e verificar se a instância de produção está correta. Para eliminar a sua instância, veja Eliminar uma instância.

Limitações

  • Apenas uma instância filha pode ser criada uma de cada vez para uma instância de banco de dados.
  • As instâncias pai não podem ser excluídas, a menos que a instância filho seja excluída.
  • As instâncias filhas são projetadas para testes ou recuperação de curto prazo. Modificações pesadas na criança ou no pai podem fazer com que o sistema reduza o compartilhamento de dados e mantenha uma cópia completa para a criança. O uso e o custo do armazenamento podem aumentar para corresponder aos de uma instância de banco de dados autônoma.