Compartilhar via


Restaurar dados e viagem no tempo

Importante

Esse recurso está em Visualização Pública nas seguintes regiões: westus, , westus2, eastus, eastus2, centralus, southcentralus, , northeurope, westeurope, , australiaeast, , brazilsouth, , canadacentral, , centralindia, , southeastasiauksouth.

Esta página explica como usar instâncias filho para restaurar dados e executar viagens no tempo em sua instância de banco de dados do Lakebase.

Quando você deve criar uma instância filho?

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

  • Recuperação de perda de dados acidental: Se uma tabela crítica tiver sido excluída às 10h23 de ontem, você poderá gerar uma instância secundária configurada para 10h22 para extrair apenas os dados ausentes e mesclar novamente.
  • Ambientes de teste e de QUALIDADE: Clone um ambiente semelhante à produção 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 filha que reflete o estado do banco de dados de uma data passada para auditorias internas, reconciliações financeiras ou análise forense.

O que é uma instância filho?

Uma instância filho é um clone de cópia em gravação da instância original do banco de dados. Ele pode ser criado a partir do ponto atual no tempo ou de um ponto histórico no tempo dentro da janela de restauração. Uma janela de restauração especifica o intervalo de tempo (2 a 35 dias) do qual você pode executar a recuperação pontual. 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 estará disponível para consulta até que ela seja excluída. Não há expiração automática vinculada à janela de restauração do pai. Isso garante que você sempre tenha acesso aos dados no ponto específico em que a instância filha foi criada, mesmo que a janela de restauração da instância pai tenha expirado.

As instâncias filho são isoladas do pai. Qualquer leitura ou gravação executada em uma instância filho não tem efeito na instância de origem. As modificações feitas em uma instância filha usam o mecanismo de 'copy-on-write', de modo que as alterações sejam armazenadas como um "delta". Isso mantém os dados não modificados compartilhados e minimiza o armazenamento extra.

Criar uma instância filho para fazer viagens no tempo e restaurar dados

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

  • Recuperação de perda de dados acidental: Se uma tabela crítica tiver sido excluída às 10h23 de ontem, você poderá gerar uma instância secundária configurada para 10h22 para extrair apenas os dados ausentes e mesclar novamente.
  • Ambientes de teste e de QUALIDADE: Clone um ambiente semelhante à produção 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 filha que reflete o estado do banco de dados de uma data passada para auditorias internas, reconciliações financeiras ou análise forense.

Instruções passo a passo

Etapa 1: (Opcional) Configurar a janela de restauração em uma instância de banco de dados pai

Os valores válidos para a janela de restauração estão entre 2 e 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:

interface do usuário

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

encurvar

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 secundária

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

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

interface do usuário

Com Criar do elemento pai habilitado, há dois parâmetros adicionais para especificar:

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

encurvar

Crie uma instância filial usando os dados mais recentes no 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 filho 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 filho 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"}}'

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

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

Etapa 3 (opcional): restaurar dados

Depois de criar uma instância secundária em um momento específico, você pode restaurar dados da instância secundária para sua instância de produção. Isso é útil para se recuperar de perda acidental de dados ou corrupção.

Para restaurar dados:

  1. Conecte-se à instância filho usando seu cliente ou método de conexão postgreSQL preferido. Consulte Conectar e consultar.
  2. Escreva um script para copiar os dados necessários da instância filho para a instância de produção. O script deve fazer o seguinte:
    • Consultar as tabelas ou dados específicos de que você precisa da instância filho
    • Inserir ou atualizar os dados em sua instância de produção
    • Lidar com conflitos ou transformações de dados conforme necessário
  3. Teste a operação de restauração em um pequeno subconjunto de dados primeiro para garantir a correção.
  4. Execute o script de restauração completo para copiar todos os dados necessários de volta à produção.
  5. Exclua a instância filha após restaurar os dados com êxito e verificar se a instância de produção está correta. Para excluir sua instância, consulte Excluir uma instância.

Limitações

  • Somente uma instância filho pode ser criada por 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 filho são projetadas para teste ou recuperação de curto prazo. Modificações pesadas no filho ou pai podem fazer com que o sistema reduza o compartilhamento de dados e mantenha uma cópia completa para o filho. O uso e o custo do armazenamento podem aumentar para corresponder ao de uma instância de banco de dados autônoma.