Перенос базы данных SQL Server в Базу данных SQL Azure с помощью Azure PowerShell
В этой статье описано, как перенести базу данных Adventureworks2012, восстановленную на локальном экземпляре SQL Server версии 2016 и выше, в Базу данных SQL Azure с помощью Microsoft Azure PowerShell. Вы можете выполнить перенос баз данных из экземпляра SQL Server в Базу данных SQL Azure с помощью модуля Az.DataMigration
в Microsoft Azure PowerShell.
Вы узнаете, как выполнять следующие задачи:
- Создайте группу ресурсов.
- создание экземпляра Azure Database Migration Service;
- создание проекта миграции в экземпляре Azure Database Migration Service;
- выполнение миграции.
Предварительные требования
Для выполнения этих действий вам потребуется следующее:
- SQL Server 2016 или более поздней версии (любой выпуск).
- При установке SQL Server Express включите протокол TCP/IP, который отключен по умолчанию. Для этого выполните инструкции в разделе Использование диспетчера конфигурации SQL Server статьи "Включение или отключение сетевого протокола сервера".
- Настройте брандмауэр Windows для доступа к ядру СУБД.
- Экземпляр Базы данных SQL Azure. Экземпляр Базы данных SQL Azure можно создать, как описано в статье Создание отдельной базы данных в Базе данных SQL Azure.
- Помощник по миграции данных 3.3 или более поздней версии.
- Создайте виртуальную сеть Microsoft Azure с моделью развертывания Azure Resource Manager, которая обеспечивает для Azure Database Migration Service возможность подключения "сеть — сеть" к локальным исходным серверам через ExpressRoute или VPN.
- Выполните оценку миграции локальной базы данных и схемы, как описано в статье Выполнение оценки миграции SQL Server с Помощником по миграции данных.
- Скачайте и установите модуль Az.DataMigration из коллекции PowerShell с помощью командлета PowerShell Install-Module. Убедитесь, что вы открыли командное окно PowerShell от имени администратора.
- Убедитесь, что учетные данные, используемые для подключения к исходному экземпляру SQL Server, имеют разрешение CONTROL SERVER.
- Убедитесь, что учетные данные, используемые для подключения к целевому экземпляру Базы данных SQL Azure, имеют разрешение на управление базами данных в целевой базе данных SQL Azure.
- Подписка Azure. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись, прежде чем начать работу.
Вход в подписку Microsoft Azure
Чтобы войти в подписку Azure с помощью PowerShell, следуйте инструкциям в статье Вход с помощью Azure PowerShell.
Создание группы ресурсов
Группа ресурсов Azure является логическим контейнером, в котором происходит развертывание ресурсов Azure и управление ими. Прежде чем создать виртуальную машину, создайте группу ресурсов.
Создайте группу ресурсов с помощью команды New-AzResourceGroup.
В следующем примере создается группа ресурсов с именем myResourceGroup в регионе EastUS.
New-AzResourceGroup -ResourceGroupName myResourceGroup -Location EastUS
Создание экземпляра Azure Database Migration Service
Вы можете создать экземпляр Azure Database Migration Service, выполнив командлет New-AzDataMigrationService
.
Для этого командлета нужно передать следующие обязательные параметры:
- ResourceGroupName. Вы можете выполнить команду New-AzResourceGroup, чтобы создать группу ресурсов Azure, как описано в предыдущем разделе, и указать ее имя в качестве параметра.
- ServiceName. Строка, соответствующая требуемому уникальному имени службы для Azure Database Migration Service.
- Расположение. Указывает расположение службы. Укажите расположение центра обработки данных Azure, например западная часть США или Юго-Восточная Азия.
- Sku. Этот параметр соответствует имени SKU DMS. Поддерживаемое сейчас имя Sku — GeneralPurpose_4vCores.
- VirtualSubnetId. Вы можете создать подсеть, выполнив командлет New-AzVirtualNetworkSubnetConfig.
В следующем примере создается служба с именем MyDMS в группе ресурсов MyDMSResourceGroup , расположенной в регионе "Восточная часть США ", с помощью виртуальной сети с именем MyVNET и подсети MySubnet.
$vNet = Get-AzVirtualNetwork -ResourceGroupName MyDMSResourceGroup -Name MyVNET
$vSubNet = Get-AzVirtualNetworkSubnetConfig -VirtualNetwork $vNet -Name MySubnet
$service = New-AzDms -ResourceGroupName MyDMSResourceGroup `
-ServiceName MyDMS `
-Location EastUS `
-Sku GeneralPurpose_4vCores `
-VirtualSubnetId $vSubNet.Id`
Создание проекта миграции
Создав экземпляр Azure Database Migration Service, создайте проект миграции. Для проекта Azure Database Migration Service необходимо иметь сведения о подключении для исходных и целевых экземпляров, а также список баз данных, которые требуется перенести как часть проекта.
Создание объекта сведений о подключении к базе данных для исходных и целевых подключений
Объект сведений о подключении к базе данных можно создать, выполнив командлет New-AzDmsConnInfo
. Для этого командлета требуются следующие параметры:
- ServerType. Тип запрошенного подключения к базе данных, например SQL, Oracle или MySQL. Используйте SQL для SQL Server и SQL Azure.
- DataSource. Имя или IP-адрес экземпляра SQL Server или Базы данных SQL Azure.
- AuthType. Тип проверки подлинности для подключения. Это может быть SqlAuthentication или WindowsAuthentication.
- Параметр TrustServerCertificate задает значение, указывающее, будет ли шифроваться канал при проходе по цепочке сертификатов для проверки доверия. Значение может быть true или false.
В приведенном ниже примере создается объект сведений о подключении для исходного SQL Server MySourceSQLServer с использованием проверки подлинности SQL:
$sourceConnInfo = New-AzDmsConnInfo -ServerType SQL `
-DataSource MySourceSQLServer `
-AuthType SqlAuthentication `
-TrustServerCertificate:$true
Примечание
Если миграция завершается ошибкой при предоставлении источника DataSource в качестве общедоступного IP-адреса или DNS SQL Server, используйте имя виртуальной машины Azure, на котором выполняется SQL Server.
В следующем примере показано, как предоставить сведения о подключении для сервера с именем SQLAzureTarget с использованием проверки подлинности SQL:
$targetConnInfo = New-AzDmsConnInfo -ServerType SQL `
-DataSource "sqlazuretarget.database.windows.net" `
-AuthType SqlAuthentication `
-TrustServerCertificate:$false
Указание баз данных для проекта миграции
Создайте список объектов , указывающих AzDataMigrationDatabaseInfo
базы данных в составе проекта миграции баз данных Azure, которые можно указать в качестве параметра для создания проекта. Объекты AzDataMigrationDatabaseInfo можно создать с помощью командлета New-AzDataMigrationDatabaseInfo
.
В следующем примере создается проект AzDataMigrationDatabaseInfo
для базы данных AdventureWorks2016, который добавляется в список, чтобы его можно было предоставить в виде параметра для создания проекта.
$dbInfo1 = New-AzDataMigrationDatabaseInfo -SourceDatabaseName AdventureWorks2016
$dbList = @($dbInfo1)
Создание объекта проекта
Наконец, можно создать проект миграции баз данных Azure с именем MyDMSProject, который расположен в восточной части США, выполнив команду New-AzDataMigrationProject
и добавив раннее созданные исходные и целевые подключения и список баз данных для миграции.
$project = New-AzDataMigrationProject -ResourceGroupName myResourceGroup `
-ServiceName $service.Name `
-ProjectName MyDMSProject `
-Location EastUS `
-SourceType SQL `
-TargetType SQLDB `
-SourceConnection $sourceConnInfo `
-TargetConnection $targetConnInfo `
-DatabaseInfo $dbList
Создание и запуск задачи миграции
Наконец, создайте и запустите задачу миграции баз данных Azure. Помимо информации, предоставленной с проектом, созданным в качестве предварительного условия, для задачи миграции баз данных Azure необходимо иметь учетные данные для исходного и целевого подключения, а также список таблиц базы данных, которые необходимо перенести.
Создание параметров учетных данных для исходного и целевого подключения
Учетные данные безопасности подключения можно создать в качестве объекта PSCredential.
В следующем примере показано создание объектов PSCredential для исходного и целевого подключения. Пароли представлены в качестве строковых переменных $sourcePassword и $targetPassword.
$secpasswd = ConvertTo-SecureString -String $sourcePassword -AsPlainText -Force
$sourceCred = New-Object System.Management.Automation.PSCredential ($sourceUserName, $secpasswd)
$secpasswd = ConvertTo-SecureString -String $targetPassword -AsPlainText -Force
$targetCred = New-Object System.Management.Automation.PSCredential ($targetUserName, $secpasswd)
Создание сопоставления таблицы и выбор исходных и целевых параметров для миграции
Еще один параметр, необходимый для миграции, — это сопоставление исходных и целевых таблиц для миграции. Создайте словарь таблиц, который обеспечивает сопоставление между исходными и целевыми таблицами для миграции. В следующем примере показано сопоставление между исходными и целевыми таблицами схемы управления персоналом для базы данных AdventureWorks 2016.
$tableMap = New-Object 'system.collections.generic.dictionary[string,string]'
$tableMap.Add("HumanResources.Department", "HumanResources.Department")
$tableMap.Add("HumanResources.Employee","HumanResources.Employee")
$tableMap.Add("HumanResources.EmployeeDepartmentHistory","HumanResources.EmployeeDepartmentHistory")
$tableMap.Add("HumanResources.EmployeePayHistory","HumanResources.EmployeePayHistory")
$tableMap.Add("HumanResources.JobCandidate","HumanResources.JobCandidate")
$tableMap.Add("HumanResources.Shift","HumanResources.Shift")
Теперь необходимо выбрать исходную и целевую базы данных и обеспечить сопоставление мигрируемых таблиц в качестве параметра, выполнив командлет New-AzDmsSelectedDB
, как показано в следующем примере:
$selectedDbs = New-AzDmsSelectedDB -MigrateSqlServerSqlDb -Name AdventureWorks2016 `
-TargetDatabaseName AdventureWorks2016 `
-TableMap $tableMap
Создание и запуск задачи миграции
Выполните командлет New-AzDataMigrationTask
, чтобы создать и запустить задачу миграции. Для этого командлета требуются следующие параметры:
- TaskType. Для типа миграции "из SQL Server в Базу данных SQL Azure" в создаваемой задаче миграции ожидается тип MigrateSqlServerSqlDb.
- ResourceGroupName. Имя группы ресурсов Azure, в которой будет создана задача.
- ServiceName. Экземпляр Azure Database Migration Service, в котором будет создана задача.
- ProjectName. Имя проекта Azure Database Migration Service, в котором будет создана задача.
- TaskName. Имя задачи, которая будет создана.
- SourceConnection. Объект AzDmsConnInfo, представляющий подключение к источнику SQL Server.
- TargetConnection. Объект AzDmsConnInfo, представляющий подключение к целевой Базе данных SQL Azure.
- SourceCred. Объект PSCredential для подключения к исходному серверу.
- TargetCred. Объект PSCredential для подключения к целевому серверу.
- SelectedDatabase. Объект AzDataMigrationSelectedDB, представляющий сопоставление исходной и целевой баз данных.
- SchemaValidation (необязательный параметр-переключатель). После миграции будет выполнено сравнение данных схемы для исходной и целевой баз данных.
- DataIntegrityValidation (необязательный параметр-переключатель). После миграции будет выполнена проверка целостности по контрольной сумме данных в исходной и целевой базах данных.
- QueryAnalysisValidation (необязательный параметр-переключатель). После миграции будет выполнен быстрый интеллектуальный анализ запросов путем извлечения запросов из исходной базы данных и их выполнения в целевой базе данных.
В следующем примере создается и запускается задача миграции с именем myDMSTask:
$migTask = New-AzDataMigrationTask -TaskType MigrateSqlServerSqlDb `
-ResourceGroupName myResourceGroup `
-ServiceName $service.Name `
-ProjectName $project.Name `
-TaskName myDMSTask `
-SourceConnection $sourceConnInfo `
-SourceCred $sourceCred `
-TargetConnection $targetConnInfo `
-TargetCred $targetCred `
-SelectedDatabase $selectedDbs `
Следующий пример создает и запускает ту же задачу миграции, что и ранее, но дополнительно выполняет все три проверки:
$migTask = New-AzDataMigrationTask -TaskType MigrateSqlServerSqlDb `
-ResourceGroupName myResourceGroup `
-ServiceName $service.Name `
-ProjectName $project.Name `
-TaskName myDMSTask `
-SourceConnection $sourceConnInfo `
-SourceCred $sourceCred `
-TargetConnection $targetConnInfo `
-TargetCred $targetCred `
-SelectedDatabase $selectedDbs `
-SchemaValidation `
-DataIntegrityValidation `
-QueryAnalysisValidation `
Мониторинг миграции
Вы можете отслеживать выполняемую задачу миграции, запросив свойство состояния задачи, как показано в следующем примере:
if (($mytask.ProjectTask.Properties.State -eq "Running") -or ($mytask.ProjectTask.Properties.State -eq "Queued"))
{
write-host "migration task running"
}
Удаление экземпляра DMS
После завершения миграции можно удалить экземпляр Azure Database Migration Service.
Remove-AzDms -ResourceGroupName myResourceGroup -ServiceName MyDMS
Следующий шаг
- Просмотрите руководство по миграции базы данных Майкрософт.