Резервное копирование и восстановление баз данных в SQL Azure для пограничных вычислений
Внимание
Azure SQL Edge будет прекращена 30 сентября 2025 г. Дополнительные сведения и параметры миграции см. в уведомлении о выходе на пенсию.
Примечание.
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, чтобы создать резервную копию базы данных в контейнере. В этом примере создается новая папка с именем резервного копирования для хранения файлов резервных копий.
Создайте папку для файлов резервных копий. Эту команду необходимо выполнить на узле, где выполняется контейнер SQL Azure для пограничных вычислений. В следующей команде замените <AzureSQLEdge_Container_Name> именем контейнера SQL Azure в развертывании.
sudo docker exec -it <AzureSQLEdge_Container_Name> mkdir /var/opt/mssql/backup
Подключитесь к экземпляру 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
После выполнения команды и при успешном резервном копировании базы данных в разделе результатов среды 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
выполняется резервное копирование в блочный большой двоичный объект.
Первым шагом при настройке резервного копирования в блочные 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.Подключитесь к экземпляру 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>';
Следующая команда создает резервную копию
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
копия, созданная в предыдущем примере. Теперь мы восстановим ее как новую базу данных с другим именем.
Если файла резервной копии базы данных еще нет в контейнере, можно воспользоваться командой ниже, чтобы скопировать его в контейнер. В приведенном ниже примере предполагается, что файл резервной копии находится на локальном узле и копируется в папку /var/opt/mssql/backup в контейнере SQL Azure для пограничных вычислений с именем sql1.
sudo docker cp IronOrePredictDB.bak sql1:/var/opt/mssql/backup
Подключитесь к экземпляру 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';
После успешного выполнения операции восстановления в окне вывода появятся сообщения, подобные приведенным ниже.
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;