В этой статье рассматриваются сценарии миграции базы данных SQL Server из локальной (on-premises) инфраструктуры в облачную базу Azure SQL.
Использование SQL Azure по модели PaS позволяет вам получить собственный облачный инстанс SQL без развёртывания виртуальных серверов в облаке.
Чем полезен SQL Azure?
Перед тем, как разворачивать базу данных в облаке, необходимо создать сервер базы данных в Microsoft Azure.
Для этого нужно выполнить следующие действия:
Создать облачный SQL сервер можно и при помощи PowerShell. Перед использованием PowerShell сначала нужно установить несколько модулей.
Сначала загружаем модуль Az при помощи команды
Install-Module -Name Az -AllowClobber
Затем загружаем модуль Az.Resources командой
Import-Module Az.Resources
И аутентифицируемся в Microsoft Azure:
Connect-AzAccount
Первым шагом мы создаем ресурсную группу Azure с именем ResourceGroup1:
AzureResourceGroup -Name "ResourceGroup1" -Location "NorthEurope"
Следующий шаг — создание сервера и настройка брандмауэра. В скрипте указываем созданную ресурсную группу, месторасположение, логин и пароль администратора, а также задаем параметр брандмауэра, позволяющий подключаться к серверу из Интернет.
Write-host "Creating primary server..."
$resourcegroupname = "ResourceGroup1"
$location = "NorthEurope"
$adminlogin = "sqladmin"
$password = "Azure1345678!"
$servername = "mysqlserver-1558185950"
$startIp = "0.0.0.0"
$endIp = "0.0.0.0"
Write-host "Creating primary server..."
$server = New-AzSqlServer -ResourceGroupName $resourceGroupName -ServerName $serverName -Location $location -SqlAdministratorCredentials $(New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $adminLogin, $(ConvertTo-SecureString -String $password -AsPlainText -Force))
$server
Write-host "Configuring server firewall rule..."
echo $resourcegroupname
$serverFirewallRule = New-AzSqlServerFirewallRule -ResourceGroupName $resourcegroupname -ServerName $servername -FirewallRuleName "AllowedIPs" -StartIpAddress $startIp -EndIpAddress $endIp
$serverFirewallRule
После создания ресурсной группы и сервера SQL можно переходить к миграции.
Наиболее простой способ миграции базы данных на on-prem SQL Server в Azure SQL– это использование средств SQL Management Studio.
Перенос базы данных в облако закончен.
Приложение уровня данных (Data-tier Application DAC Package) это инструмент управления жизненным циклом базы данных. Разработчики создают базу данных в проекте базы данных SQL Server Data Tool, а затем передают пакет DAC администратору баз данных. Администраторы баз данных разворачивают приложение DAC на тестовый или продуктивный экземпляр SQL Server или используют пакет DAC для обновления ранее развернуой базы данных. В случае изменений в приложении, которые ведут к изменению схемы базы данных, администраторы также могут извлечь базу данных в пакет DAС и передать этот пакет разработчикам.
Если в жизненный цикл базы данных входит миграция в облако Azure, можно воспользоваться следующей инструкцией.
Microsoft рекомендует этот способ, если размер базы данных не превышает 150 Гб.
Если у вас большая база данных, и ее размер превышает 150 Гб, то Microsoft рекомендует использовать утилиту SqlPackage
.
sqlpackage.exe /a:import /tcs:"Data Source=<serverName>.database.windows.net;Initial Catalog=<migratedDatabase>;User Id=<userId>;Password=<password>" /sf:AdventureWorks2016.bacpac /p:DatabaseEdition=Free /p:DatabaseServiceObjective=S0
Эта команда импортирует базу данных AdventureWorks2016 в Azure SQL с именем myMigrateDatabase с уровнем служб Free и уровнем обслуживания S0.
Для миграции базы данных в SQL Azure можно использовать командлет New-AzSqlDatabaseImport
. Перед использованием этого командлета необходимо сохранить bacpac-файл в хранилище azure.
Пример команда импорта:
New-AzSqlDatabaseImport -ResourceGroupName "RG01" -ServerName " Server01" -DatabaseName "Database01" -StorageKeyType "StorageAccessKey" -StorageKey "StorageKey01" -StorageUri "http://account01.blob.core.contoso.net/bacpacs/database01.bacpac" -AdministratorLogin "User" -AdministratorLoginPassword $SecureString -Edition Standard -ServiceObjectiveName S0 -DatabaseMaxSizeBytes 5000000
Параметры командлета:
Увидеть процесс миграции поможет командлет Get-AzSqlDatabaseImportExportStatus
. Командлет возвращает статус операции: InProgress или Succeeded.
Отменить операцию можно при помощи командлета Stop-AzSqlDatabaseActivity
. Пример использования в скрипте:
function Cancel-AzSQLImportExportOperation
{
param
(
[parameter(Mandatory=$true)][string]$ResourceGroupName
,[parameter(Mandatory=$true)][string]$ServerName
,[parameter(Mandatory=$true)][string]$DatabaseName
)
$Operation = Get-AzSqlDatabaseActivity -ResourceGroupName $ResourceGroupName -ServerName $ServerName -DatabaseName $DatabaseName | Where-Object {($_.Operation -eq "ExportDatabase" -or $_.Operation -eq "ImportDatabase") -and $_.State -eq "InProgress"}
if(-not [string]::IsNullOrEmpty($Operation))
{
do
{
Write-Host -ForegroundColor Cyan ("Operation " + $Operation.Operation + "with OperationID: " + $Operation.OperationId + " is now " + $Operation.State)
$UserInput = Read-Host -Prompt "Should I cancel this operation? (Y/N)"
} while($UserInput -ne "Y" -and $UserInput -ne "N")
if($UserInput -eq "Y")
{
"Canceling operation"
Stop-AzSqlDatabaseActivity -ResourceGroupName $ResourceGroupName -ServerName $ServerName -DatabaseName $DatabaseName -OperationId $Operation.OperationId
}
else
{"Exiting without canceling the operation"}
}
else
{
"No import or export operation is now running"
}
}
Пример вызова скрипта, который останавливает миграцию базы данных, выполненную предыдущего командлета:
Cancel-AzSQLImportExportOperation -ResourceGroupName RG01 –ServerName Server01 -DatabaseName Database01
После миграции базы данных необходимо обеспечить безопасность базы данных. Защита баз данных SQL Azure включает в себя следующие операции:
Наша следующая статья будет посвящена безопасности в SQL Azure .
Как мы видим, утилиты и другие возможности предоставляют большой выбор инструментов для миграции ваших данных в Microsoft Azure, а администратору остается выбрать подходящую утилиту или скрипт.
Как менялся логотип Apple на протяжении многих лет. Логотип Apple — это не просто символ,…
Security Boot Fail при загрузке Acer — решение проблемы При загрузке ноутбука Acer с флешки,…
Ноутбук не включается — варианты решения Если при попытке включить ноутбук вы обнаруживаете, что он…
The AC power adapter wattage and type cannot be determined — причины и решение При…
Свистит или звенит блок питания компьютера — причины и решения Некоторые владельцы ПК могут обратить…
Мигает Caps Lock на ноутбуке HP — почему и что делать? При включении ноутбука HP…