Compartilhar via


Backup e restauração de bancos de dados no SQL do Azure no Edge

Importante

O SQL do Azure no Edge será desativado em 30 de setembro de 2025. Para obter mais informações e opções de migração, confira o aviso de desativação.

Observação

O SQL do Azure no Edge encerrou o suporte à plataforma ARM64.

O SQL do Azure no Edge foi criado com base nas versões mais recentes do Mecanismo de Banco de Dados do SQL da Microsoft. Ele fornece recursos de backup e restauração de banco de dados semelhantes para o SQL Server em Linux e no SQL Server em execução em contêineres. O componente de backup e restauração oferece uma proteção essencial para dados críticos armazenados nos bancos de dados do SQL do Azure no Edge.

Para minimizar o risco de perda catastrófica de dados, você deve fazer backup de seus bancos de dados periodicamente para preservar as modificações em seus dados regularmente. Uma estratégia de backup e restauração bem planejada ajuda a proteger bancos de dados contra perda de dados causada por várias falhas. Teste a estratégia restaurando um conjunto de backups e, em seguida, recuperando o banco de dados para se preparar para responder com eficiência a um desastre.

Para saber mais sobre por que os backups são importantes, veja Backup e restauração de bancos de dados do SQL Server.

O SQL do Azure no Edge permite que você faça o backup e a restauração do armazenamento local e dos blobs do Azure. Para obter mais informações, veja Backup e restauração do SQL Server com o Armazenamento de Blobs do Azure e Backup do SQL Server para URL.

Fazer backup de um banco de dados no SQL do Azure no Edge

O SQL do Azure no Edge dá suporte aos mesmos tipos de backup que o SQL Server. Para obter uma lista completa, veja Visão geral do backup.

Importante

Os bancos de dados criados no SQL do Azure no Edge usam o modelo de recuperação simples por padrão. Dessa forma, não é possível executar backups de logs nesses bancos de dados. Se precisar fazer isso, será necessário que um administrador altere o modelo de recuperação de bancos de dados para o modelo de recuperação completa. Para obter uma lista completa dos modelos de recuperação com suporte pelo SQL Server, veja Visão geral dos modelos de recuperação.

Backup para o disco local

No exemplo a seguir, é usado o BACKUP DATABASE do Transact-SQL para criar o backup de um banco de dados no contêiner. Para este exemplo, você cria uma nova pasta chamada backup para armazenar os arquivos de backup.

  1. Crie uma pasta para os backups. Execute esse comando no host onde o contêiner do SQL do Azure no Edge está em execução. No comando a seguir, substitua <AzureSQLEdge_Container_Name> pelo nome do contêiner do SQL do Azure no Edge em sua implantação.

    sudo docker exec -it <AzureSQLEdge_Container_Name> mkdir /var/opt/mssql/backup
    
  2. Conecte-se à instância do SQL do Azure no Edge usando o SQL Server Management Studio (SSMS) ou usando o Azure Data Studio. Execute o comando BACKUP DATABASE para fazer o backup do banco de dados de usuários. No exemplo a seguir, você está fazendo o backup do banco de dados IronOreSilicaPrediction.

    BACKUP DATABASE [IronOreSilicaPrediction] TO DISK = N'/var/opt/mssql/backup/IronOrePredictDB.bak'
    WITH NOFORMAT,
        NOINIT,
        NAME = N'IronOreSilicaPrediction-Full Database Backup',
        SKIP,
        NOREWIND,
        NOUNLOAD,
        COMPRESSION,
        STATS = 10;
    GO
    
  3. Depois de executar o comando, se o backup do banco de dados for bem-sucedido, você verá mensagens semelhantes às seguintes na seção de resultados do SSMS ou do Azure Data Studio.

    10 percent processed.
    20 percent processed.
    30 percent processed.
    40 percent processed.
    50 percent processed.
    60 percent processed.
    70 percent processed.
    80 percent processed.
    90 percent processed.
    100 percent processed.
    Processed 51648 pages for database 'IronOreSilicaPrediction', file 'IronOreSilicaPrediction' on file 1.
    Processed 2 pages for database 'IronOreSilicaPrediction', file 'IronOreSilicaPrediction_log' on file 1.
    BACKUP DATABASE successfully processed 51650 pages in 3.588 seconds (112.461 MB/sec).
    
    Completion time: 2020-04-09T23:54:48.4957691-07:00
    

Fazer backup na URL

O SQL do Azure no Edge dá suporte a backups para blobs de página e blobs de blocos. Para obter mais informações, veja Backup para blob de blocos vs. blob de páginas. No exemplo a seguir, o backup do banco de dados IronOreSilicaPrediction está sendo feito em um blob de blocos.

  1. Para configurar os backups para blobs de blocos, é preciso primeiro gerar um token SAS (assinatura de acesso compartilhado) que pode ser usado para criar uma credencial do SQL Server no SQL do Azure no Edge. O script cria uma SAS que é associada a uma política de acesso armazenada. Para obter mais informações, veja Assinaturas de acesso compartilhado, parte 1: Entender o modelo SAS. O script também grava o comando T-SQL necessário para criar a credencial no SQL Server. O script a seguir pressupõe que você já tenha uma assinatura do Azure com uma conta de armazenamento e um contêiner de armazenamento para os backups.

    # Define global variables for the script
    $subscriptionName='<your subscription name>'   # the name of subscription name you will use
    $resourcegroupName = '<your resource group name>' # the name of resource group you will use
    $storageAccountName= '<your storage account name>' # the storage account name you will use for backups
    $containerName= '<your storage container name>'  # the storage container name to which you will attach the SAS policy with its SAS token
    $policyName = 'SASPolicy' # the name of the SAS policy
    
    # adds an authenticated Azure account for use in the session
    Login-AzAccount
    
    # set the tenant, subscription and environment for use in the rest of
    Select-AzSubscription -Subscription $subscriptionName
    
    # Generate the SAS token
    $sa = Get-AzStorageAccount -ResourceGroupName $resourcegroupName -Name $storageAccountName
    $storagekey = Get-AzStorageAccountKey -ResourceGroupName $resourcegroupName -Name $storageAccountName
    $storageContext = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storagekey[0].Value
    $cbc = Get-AzStorageContainer -Name $containerName -Context $storageContext
    $policy = New-AzStorageContainerStoredAccessPolicy -Container $containerName -Policy $policyName -Context $storageContext -ExpiryTime $(Get-Date).ToUniversalTime().AddYears(10) -Permission "rwld"
    $sas = New-AzStorageContainerSASToken -Policy $policyName -Context $storageContext -Container $containerName
    Write-Host 'Shared Access Signature= '$($sas.Substring(1))''
    
    # Outputs the Transact SQL to the clipboard and to the screen to create the credential using the Shared Access Signature
    Write-Host 'Credential T-SQL'
    $tSql = "CREATE CREDENTIAL [{0}] WITH IDENTITY='Shared Access Signature', SECRET='{1}'" -f $cbc.CloudBlobContainer.Uri.AbsoluteUri,$sas.Substring(1)
    $tSql | clip
    Write-Host $tSql
    

    Depois de executar o script com êxito, copie o comando CREATE CREDENTIAL para uma ferramenta de consulta. Em seguida, conecte-se a uma instância do SQL Server e execute o comando para criar a credencial com a SAS.

  2. Conecte-se à instância do SQL do Azure no Edge usando o SSMS ou usando o Azure Data Studio e crie a credencial usando o comando da etapa anterior. Substitua o comando CREATE CREDENTIAL pela saída real da etapa anterior.

    IF NOT EXISTS
    (SELECT * FROM sys.credentials
    WHERE name = 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>')
    CREATE CREDENTIAL [https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>]
       WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
       SECRET = '<SAS_TOKEN>';
    
  3. O comando a seguir faz um backup do IronOreSilicaPrediction no contêiner de armazenamento do Azure.

    BACKUP DATABASE IronOreSilicaPrediction
    TO URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/IronOreSilicaPrediction.bak'
    With MAXTRANSFERSIZE = 4194304,BLOCKSIZE=65536;
    GO
    

Restaurar um banco de dados no SQL do Azure no Edge

No SQL do Azure no Edge, é possível fazer a restauração a partir de um disco local, de um local de rede ou de uma conta do Armazenamento de blobs do Azure. Para obter informações sobre o cenários de restauração e recuperação no SQL Server, veja Visão geral da restauração e recuperação. Para obter uma visão geral do modelo de recuperação simples no SQL Server, veja Restaurações completas do banco de dados (modelo de recuperação simples).

Importante

Os bancos de dados criados no SQL do Azure no Edge não podem ser restaurados em uma instância do Microsoft SQL Server ou do SQL do Azure. Além disso, um banco de dados criado no Microsoft SQL Server ou no SQL do Azure pode ser restaurado no SQL do Azure no Edge, desde que o banco de dados não contenha nenhum dos recursos sem suporte do SQL do Azure no Edge.

Restaurar de um disco local

Este exemplo usa o backup do IronOreSilicaPrediction que você fez no exemplo anterior. Agora, você vai restaurá-lo como um novo banco de dados com um nome diferente.

  1. Se o arquivo de backup do banco de dados ainda não estiver presente no contêiner, você poderá usar o comando a seguir para copiar o arquivo para o contêiner. O exemplo a seguir pressupõe que o arquivo de backup está presente no host local e está sendo copiado para a pasta /var/opt/mssql/backup em um contêiner do SQL do Azure no Edge chamado sql1.

    sudo docker cp IronOrePredictDB.bak sql1:/var/opt/mssql/backup
    
  2. Conecte-se à instância do SQL do Azure no Edge usando o SSMS ou o Azure Data Studio para executar o comando de restauração. No exemplo a seguir, o IronOrePredictDB.bak é restaurado para criar um novo banco de dados, IronOreSilicaPrediction_2.

    Restore FilelistOnly from disk = N'/var/opt/mssql/backup/IronOrePredictDB.bak'
    
    Restore Database IronOreSilicaPrediction_2
    From disk = N'/var/opt/mssql/backup/IronOrePredictDB.bak'
    WITH MOVE 'IronOreSilicaPrediction' TO '/var/opt/mssql/data/IronOreSilicaPrediction_Primary_2.mdf',
    MOVE 'IronOreSilicaPrediction_log' TO '/var/opt/mssql/data/IronOreSilicaPrediction_Primary_2.ldf';
    
  3. Depois de executar o comando de restauração, se a operação de restauração tiver sido bem-sucedida, você verá mensagens parecidas com as mostradas a seguir na janela de saída.

    Processed 51648 pages for database 'IronOreSilicaPrediction_2', file 'IronOreSilicaPrediction' on file 1.
    Processed 2 pages for database 'IronOreSilicaPrediction_2', file 'IronOreSilicaPrediction_log' on file 1.
    RESTORE DATABASE successfully processed 51650 pages in 6.543 seconds (61.670 MB/sec).
    
    Completion time: 2020-04-13T23:49:21.1600986-07:00
    

Restauração a partir da URL

O SQL do Azure no Edge também dá suporte à restauração de um banco de dados de uma conta de armazenamento do Azure. É possível restaurar de backups de blobs de blocos ou de blobs de páginas. No exemplo a seguir, o arquivo de backup do banco de dados IronOreSilicaPrediction_2020_04_16.bak em um blob de blocos é restaurado para criar o banco de dados, IronOreSilicaPrediction_3.

RESTORE DATABASE IronOreSilicaPrediction_3
FROM URL = 'https://mystorageaccount.blob.core.windows.net/mysecondcontainer/IronOreSilicaPrediction_2020_04_16.bak'
WITH MOVE 'IronOreSilicaPrediction' TO '/var/opt/mssql/data/IronOreSilicaPrediction_Primary_3.mdf',
MOVE 'IronOreSilicaPrediction_log' TO '/var/opt/mssql/data/IronOreSilicaPrediction_Primary_3.ldf',
STATS = 10;