Executar uma Restauração pontual

Use a restauração pontual para criar um banco de dados como cópia de outro banco de dados em algum momento no passado, que está dentro do período de retenção. Este artigo descreve como fazer uma restauração pontual de um banco de dados em uma Instância Gerenciada de SQL habilitada para o Azure Arc.

A restauração pontual pode restaurar um banco de dados:

  • De um banco de dados existente
  • Para um novo banco de dados na mesma instância gerenciada de SQL habilitada para Azure Arc

Você pode fazer a restauração pontual de um banco de dados em uma configuração de retenção pré-configurada. Você pode verificar a configuração de retenção para uma Instância Gerenciada de SQL habilitada para Azure Arc da seguinte forma:

Para o modo de conexão Direta:

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

Para o modo de conexão indireta:

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

No momento, a restauração pontual pode restaurar um banco de dados:

  • De um banco de dados em uma instância
  • Para um novo banco de dados na mesma instância

Backups automáticos

A Instância Gerenciada de SQL habilitada para Azure Arc tem o recurso de backups automáticos integrado habilitado. Sempre que você cria ou restaura um novo banco de dados, a Instância Gerenciada de SQL habilitada para Azure Arc inicia um backup completo imediatamente e agenda backups diferenciais e de log de transações automaticamente. A instância gerenciada do SQL armazena esses backups na classe de armazenamento especificada durante a implantação.

A restauração pontual permite que um banco de dados seja restaurado para um ponto específico no tempo, dentro do período de retenção. Para restaurar um banco de dados para um ponto específico no tempo, os serviços de dados habilitados para Azure Arc aplicam os arquivos de backup em uma ordem específica. Por exemplo:

  1. Backup completo
  2. Backup diferencial
  3. Um ou mais backups de log de transações

Point-in-time restore

Atualmente, backups completos são feitos uma vez por semana, backups diferenciais são feitos a cada 12 horas e backups do log de transações a cada 5 minutos.

Período de retenção

O período de retenção padrão para uma nova Instância Gerenciada de SQL habilitada para Azure Arc é de sete dias e pode ser ajustado com valores de 0 ou de 1 a 35 dias. O período de retenção pode ser definido durante a implantação da instância gerenciada do SQL especificando a propriedade --retention-days. Arquivos de backup mais antigos do que o período de retenção configurado são excluídos automaticamente.

Criar um banco de dados a partir de um ponto no tempo usando a CLI do Azure

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

Você também pode usar a opção --dry-run para validar sua operação de restauração sem realmente restaurar o banco de dados.

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

Criar um banco de dados a partir de um ponto no tempo usando kubectl

  1. Para executar uma restauração pontual com ferramentas nativas do Kubernetes, você pode usar kubectl. Crie um arquivo yaml de especificação de tarefa. Por exemplo:

    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. Edite as propriedades da seguinte maneira:

    1. name: Cadeia de caracteres exclusiva para cada CR (recurso personalizado). Exigido pelo Kubernetes.
    2. namespace: Namespace do Kubernetes em que a instância gerenciada de SQL habilitada para Azure Arc está em execução.
    3. source: ... name: Nome da instância de origem.
    4. source: ... database: Nome do banco de dados de origem a partir do qual a restauração seria aplicada.
    5. restorePoint: Ponto no tempo para a operação de restauração na data e hora UTC.
    6. destination: ... name: Nome da Instância Gerenciada de SQL habilitada para Azure Arc. Atualmente, só há suporte para a restauração pontual para Instância gerenciada de SQL do Arc. Ela deve ser a mesma da instância gerenciada de SQL de origem.
    7. destination: ... database: Nome do novo banco de dados ao qual a restauração será aplicada.
  3. Crie uma tarefa para iniciar a restauração pontual. O exemplo a seguir inicia a tarefa definida em myrestoretask20220304.yaml.

    kubectl apply -f myrestoretask20220304.yaml
    
  4. Verifique o status da tarefa de restauração da seguinte forma:

    kubectl get sqlmirestoretask -n <namespace>
    

O status da tarefa de restauração será atualizado a cada 10 segundos com base no progresso da PITR. O status progride de Waiting para Restoring, Completed e Failed.

Criar um banco de dados a partir de um ponto no tempo usando o Azure Data Studio

Você também pode restaurar um banco de dados para um ponto no tempo Azure Data Studio da seguinte forma:

  1. Inicie o Azure Data Studio
  2. Verifique se você tem as extensões do Arc necessárias, conforme descrito em Ferramentas.
  3. Conectar-se ao controlador de dados do Azure Arc
  4. Expanda o nó do controlador de dados e clique com o botão direito do mouse na Instância Gerenciada de SQL habilitada para Azure Arc e selecione "Gerenciar". Azure Data Studio inicia o painel SQL instância gerenciada.
  5. Clique na guia Backups no painel
  6. Você deve ver uma lista de bancos de dados de instância gerenciada do SQL e suas janelas de tempo de restauração mais antigas e mais recentes e um ícone para iniciar a Restauração
  7. Clique no ícone do banco de dados do que você deseja restaurar. O Azure Data Studio inicia uma folha no lado direito
  8. Forneça a entrada necessária na folha e clique em Restaurar

Monitorar o progresso

Quando uma restauração é iniciada, uma tarefa é criada no cluster kubernetes que executa as operações de restauração reais de backups completos, diferenciais e de log. O progresso dessa atividade pode ser monitorado do cluster kubernetes da seguinte forma:

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

Você pode obter mais detalhes da tarefa executando kubectl describe na tarefa. Por exemplo:

kubectl describe sqlmirestoretask <nameoftask> -n <namespace>

Configurar período de retenção

O período de retenção para uma Instância gerenciada do SQL habilitada para Azure Arc pode ser reconfigurado com base na configuração original da seguinte forma:

Aviso

Se você reduzir o período de retenção atual, perderá a capacidade de restaurar para pontos no tempo mais antigos do que o novo período de retenção. Os backups que não são mais necessários para fornecer PITR no novo período de retenção são excluídos. Se você aumentar o período de retenção atual, não obterá imediatamente a capacidade de restaurar para os pontos mais antigos no novo período de retenção. Você pode obter essa capacidade ao longo do tempo, à medida que o sistema começa a reter backups por mais tempo.

Altere o período de retenção para instância gerenciada do SQL conectada Direta

az sql mi-arc edit  --name <SQLMI name> --custom-location dn-octbb-cl --resource-group dn-testdc --location eastus --retention-days 10
#Example
az sql mi-arc edit  --name sqlmi --custom-location dn-octbb-cl --resource-group dn-testdc --location eastus --retention-days 10

Altere o período de retenção para instância gerenciada do SQL conectada Indireta

az sql mi-arc edit  --name <SQLMI name> --k8s-namespace <namespace>  --use-k8s --retention-days <retentiondays>
#Example
az sql mi-arc edit  --name sqlmi --k8s-namespace arc  --use-k8s --retention-days 10

Desabilitar backups automáticos

Você pode desabilitar os backups automatizados para uma instância específica da instância gerenciada do SQL habilitada para Azure Arc ao definir a propriedade --retention-days para 0, conforme a seguir.

Aviso

Se você desabilitar backups automáticos para uma instância gerenciada do SQL habilitada para Azure Arc, todos os backups automáticos configurados serão excluídos, e você perderá a capacidade de fazer uma restauração pontual. Você pode alterar a propriedade retention-days para reacionar backups automáticos, se necessário.

Desabilitar os backups automáticos para instância gerenciada do SQL conectada Direta

az sql mi-arc edit  --name <SQLMI name> --custom-location dn-octbb-cl --resource-group dn-testdc --location eastus --retention-days 0
#Example
az sql mi-arc edit  --name sqlmi --custom-location dn-octbb-cl --resource-group dn-testdc --location eastus --retention-days 0

Desabilitar os backups automáticos para instância gerenciada do SQL conectada Indireta

az sql mi-arc edit  --name <SQLMI name> --k8s-namespace <namespace>  --use-k8s --retention-days 0
#Example
az sql mi-arc edit  --name sqlmi --k8s-namespace arc  --use-k8s --retention-days 0

Monitorar backups

Os backups são armazenados na pasta /var/opt/mssql/backups/archived/<dbname>/<datetime>, em que <dbname> é o nome do banco de dados e <datetime> seriam um carimbo de data/hora no formato UTC para o início de cada backup completo. Sempre que um backup completo é iniciado, é criada uma pasta com o back completo e todos os backups de log de transações e diferenciais subsequentes dentro dessa pasta. O backup completo mais atual e seus backups diferenciais e de log de transações subsequentes são armazenados na pasta /var/opt/mssql/backups/current/<dbname><datetime>.

Limitações

A restauração pontual para uma Instância Gerenciada de SQL habilitada para Azure Arc tem as seguintes limitações:

  • Não é possível realizar a restauração pontual de uma Instância Gerenciada de SQL habilitada para Azure Arc inteira.
  • No momento, uma instância gerenciada de SQL habilitada para Azure Arc que seja implantada com alta disponibilidade não dá suporte à restauração pontual.
  • Você só pode restaurar para a mesma instância gerenciada de SQL habilitada para Azure Arc.
  • Remove e criar bancos de dados diferentes com os mesmos nomes não é tratado corretamente no momento.
  • Fornecer uma data futura ao executar a operação de restauração usando --dry-run resultará em um erro

Próximas etapas

Saiba mais sobre os recursos e as funcionalidades da Instância Gerenciada de SQL habilitada para Azure Arc

Comece criando um Controlador de Dados

Já criou um Controlador de Dados? Criar uma Instância Gerenciada de SQL habilitada para Azure Arc