Резервное копирование и восстановление баз данных в SQL Azure для пограничных вычислений

Важно!

Azure SQL Edge больше не поддерживает платформу ARM64.

Решение SQL Azure для пограничных вычислений основано на последней версии ядра СУБД Microsoft SQL. Он предоставляет аналогичные возможности резервного копирования и восстановления базы данных для SQL Server на Linux и SQL Server, работающих в контейнерах. Компонент резервного копирования и восстановления обеспечивает необходимую защиту данных, которые хранятся в базах данных SQL Azure для пограничных вычислений.

Чтобы свести к минимуму риск катастрофической потери данных, следует периодически создавать резервные копии баз данных, чтобы регулярно сохранять изменения данных. Хорошо запланированная стратегия резервного копирования и восстановления помогает защитить базы данных от потери данных, вызванных различными сбоями. Протестируйте стратегию, выполнив восстановление набора резервных копий и вернув базу данных в исходное состояние. Так вы будете готовы эффективно реагировать на проблемы.

Дополнительные сведения о важности резервного копирования см. в статье Резервное копирование и восстановление баз данных SQL Server.

SQL Azure для пограничных вычислений позволяет выполнять резервное копирование и восстановление из локального хранилища и больших двоичных объектов Azure. Дополнительные сведения см. в статьях Резервное копирование и восстановление SQL Server с помощью хранилища BLOB-объектов Azure и Резервное копирование SQL Server по URL-адресу.

Резервное копирование базы данных в SQL Azure для пограничных вычислений

SQL Azure для пограничных вычислений поддерживает те же типы резервных копий, что и SQL Server. Полный список см. в разделе Общие сведения о резервном копировании.

Важно!

Базы данных, созданные в SQL Azure для пограничных вычислений, по умолчанию используют простую модель восстановления. Таким образом, выполнять резервное копирование журналов в этих базах данных нельзя. В таких случаях администратору потребуется изменить модель восстановления базы данных на модель полного восстановления. Полный список моделей восстановления, поддерживаемых SQL Server, см. в общих сведениях о моделях восстановления.

Резервное копирование на локальный диск

В этом примере мы используем команду BACKUP DATABASE Transact-SQL, чтобы создать резервную копию базы данных в контейнере. В этом примере создается новая папка с именем резервного копирования для хранения файлов резервных копий.

  1. Создайте папку для файлов резервных копий. Эту команду необходимо выполнить на узле, где выполняется контейнер SQL Azure для пограничных вычислений. В следующей команде замените <AzureSQLEdge_Container_Name> именем контейнера SQL Azure в развертывании.

    sudo docker exec -it <AzureSQLEdge_Container_Name> mkdir /var/opt/mssql/backup
    
  2. Подключитесь к экземпляру SQL Azure для пограничных вычислений с помощью SQL Server Management Studio (SSMS) или Azure Data Studio (ADS). Выполните команду BACKUP DATABASE, чтобы создать резервную копию пользовательской базы данных. В следующем примере выполняется резервное копирование 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. После выполнения команды и при успешном резервном копировании базы данных в разделе результатов среды SSMS или 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
    

Резервное копирование по URL-адресу

SQL Azure для пограничных вычислений поддерживает резервное копирование как в страничные, так и в блочные BLOB-объекты. Дополнительные сведения см. в статье о резервном копировании в блочные и страничные BLOB-объекты. В следующем примере база данных IronOreSilicaPrediction выполняется резервное копирование в блочный большой двоичный объект.

  1. Первым шагом при настройке резервного копирования в блочные BLOB-объекты является создание маркера подписанного URL-адреса (SAS), который можно использовать для создания учетных данных SQL Server в SQL Azure для пограничных вычислений. Этот скрипт создает подписанный URL-адрес, связанный с хранимой политикой доступа. Дополнительные сведения см. в статье Подписанные URL-адреса. Часть 1. Общие сведения о модели SAS. Кроме того, скрипт записывает команду T-SQL, необходимую для создания учетных данных в SQL Server. В скрипте ниже предполагается, что у вас уже есть подписка Azure с учетной записью хранения и контейнером хранилища для резервных копий.

    # 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
    

    После успешного выполнения скрипта скопируйте команду CREATE CREDENTIAL в инструмент запроса. Затем подключитесь к экземпляру SQL Server и выполните команду для создания учетных данных в SAS.

  2. Подключитесь к экземпляру SQL для пограничных вычислений с помощью SSMS or Azure Data Studio и создайте учетные данные, используя команду с предыдущего шага. Обязательно замените команду CREATE CREDENTIAL фактическими данными, полученными на предыдущем этапе.

    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. Следующая команда создает резервную копию IronOreSilicaPrediction контейнера хранилища Azure.

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

Восстановление базы данных в SQL Azure для пограничных вычислений

В SQL Azure для пограничных вычислений можно восстанавливать данные с локального диска, из расположения в сети или из учетной записи хранилища BLOB-объектов Azure. Дополнительные сведения о сценариях восстановления в SQL Server см. в обзоре процессов восстановления. Общие сведения о простой модели восстановления в SQL Server см. в этой статье.

Важно!

Базы данных, созданные в Azure SQL Edge, не могут быть восстановлены в экземпляре Microsoft SQL Server или SQL Azure. Кроме того, базу данных, созданную на Microsoft SQL Server или SQL Azure, можно восстановить на пограничных серверах SQL Azure, если база данных не содержит ни одной из функций, не поддерживаемых Azure SQL Edge.

Восстановление с локального диска

В этом примере используется резервная IronOreSilicaPrediction копия, созданная в предыдущем примере. Теперь мы восстановим ее как новую базу данных с другим именем.

  1. Если файла резервной копии базы данных еще нет в контейнере, можно воспользоваться командой ниже, чтобы скопировать его в контейнер. В приведенном ниже примере предполагается, что файл резервной копии находится на локальном узле и копируется в папку /var/opt/mssql/backup в контейнере SQL Azure для пограничных вычислений с именем sql1.

    sudo docker cp IronOrePredictDB.bak sql1:/var/opt/mssql/backup
    
  2. Подключитесь к экземпляру SQL Azure для пограничных вычислений с помощью SSMS or Azure Data Studio и выполните команду восстановления. В следующем примере IronOrePredictDB.bak восстанавливается создание новой базы данных 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. После успешного выполнения операции восстановления в окне вывода появятся сообщения, подобные приведенным ниже.

    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
    

Восстановление из URL-адреса

SQL Azure для пограничных вычислений также поддерживает восстановление базы данных из учетной записи службы хранилища Azure. Восстановление можно выполнять из блочных BLOB-объектов или страничных резервных копий. В следующем примере IronOreSilicaPrediction_2020_04_16.bak файл резервной копии базы данных в блочных BLOB-объектах восстанавливается для создания базы данных 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;