В этой статье рассматриваются сценарии миграции базы данных 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, а администратору остается выбрать подходящую утилиту или скрипт.
Если говорить о том, какие лучшие дистрибутивы Linux мы знаем, то этот список может быть…
Хотя Ubuntu и поставляется со встроенным обозревателем Firefox многие пользователи считают что это не самая…
Что такое Remmina? Remmina — это совершенно бесплатный и свободный клиент так называемого удаленного рабочего…
Как мы знаем, Ubuntu это самая популярная сборка из систем на базе ядра Linux. У…
Выбор ноутбука для каждого пользователя это довольно кропотливый процесс. Люди стараются подобрать ноутбук который будет…
Если вы решили ознакомиться с операционной системой Linux более детально и задались вопросом как установить…