Migrar bancos de dados em escala usando a automação (versão prévia)

A extensão de migração do SQL do Azure para Azure Data Studio reúne uma experiência simplificada de avaliação, recomendação e migração que oferece as seguintes funcionalidades:

  • Um mecanismo de avaliação aprimorado que pode avaliar as instâncias do SQL Server, identificando os bancos de dados prontos para migração para os diferentes destinos do SQL do Azure.
  • Um mecanismo de recomendação de SKU (versão prévia) que coleta dados de desempenho da instância do SQL Server de origem local, gerando recomendações de SKU de tamanho adequado com base no destino do SQL do Azure.
  • Um serviço confiável do Azure desenvolvido pelo Serviço de Migração de Banco de Dados do Azure que orquestra as atividades de movimentação de dados para oferecer uma experiência de migração perfeita.
  • A capacidade de executar migrações online (para as migrações que exigem tempo de inatividade mínimo) ou offline (para as migrações em que o tempo de inatividade persiste durante a migração) a fim de atender às suas necessidades comerciais.
  • A flexibilidade de criar e configurar um runtime de integração auto-hospedada para fornecer uma computação própria de acesso ao SQL Server de origem e aos backups no ambiente local.

Com ferramentas de automação como o PowerShell – Módulo de Serviço de Migração de Dados ou a CLI do Azure, você pode aplicar os recursos da extensão de Migração do SQL do Azure juntamente com Serviço de Migração de Banco de Dados do Azure para migrar um ou mais bancos de dados em escala (incluindo bancos de dados em várias instâncias do SQL Server).

Os scripts de amostra a seguir podem ser referenciados para se adequar ao seu cenário de migração usando o Azure PowerShell ou a CLI do Azure:

Cenário de migração Idioma do script
Avaliação do SQL Server PowerShell / CLI do Azure
SQL Server para Instância Gerenciada de SQL do Azure (usando o compartilhamento de arquivos) PowerShell / CLI do Azure
SQL Server para Instância Gerenciada de SQL do Azure (usando o armazenamento do Azure) PowerShell / CLI do Azure
SQL Server para SQL Server em Máquinas Virtuais do Azure (usando compartilhamento de arquivo) PowerShell / CLI do Azure
SQL Server para SQL Server em Máquinas Virtuais do Azure (usando o Armazenamento do Azure) PowerShell / CLI do Azure
SQL Server para o Banco de Dados SQL do Azure PowerShell / CLI do Azure
Recomendações de SKU (versão prévia) PowerShell / CLI do Azure
Automação de migração de ponta a ponta PowerShell / CLI do Azure
Automação de migração de ponta a ponta para vários bancos de dados PowerShell / CLI do Azure

Pré-requisitos

Os pré-requisitos que são comuns em todos os cenários de migração com suporte usando Azure PowerShell ou CLI do Azure são:

  • Tenha uma conta do Azure atribuída a uma das funções internas listadas abaixo:

    • Colaborador para a Instância Gerenciada SQL do Azure de destino, SQL Server em Máquinas Virtuais do Azure ou Banco de Dados SQL do Azure e, Conta de Armazenamento para carregar seus arquivos de backup de banco de dados do compartilhamento de rede SMB (Não aplicável ao Banco de Dados SQL do Azure).
    • Função de leitor para os grupos de recursos do Azure que contêm a Instância Gerenciada de SQL do Azure, o SQL Server em Máquinas Virtuais do Azure ou o Banco de Dados SQL do Azure de destino.
    • Função Proprietário ou Colaborador da assinatura do Azure.

    Importante

    A conta do Azure só é necessária ao executar as etapas de migração e não é necessária para o processo de avaliação ou de etapas de recomendação do Azure.

  • Criar uma Instância Gerenciada SQL do Azure de destino, o SQL Server na Máquina Virtual do Azure ou o Banco de Dados SQL do Azure

    Importante

    Se o seu destino for o Banco de Dados SQL do Azure, você precisará migrar o esquema de banco de dados da origem para o destino usando a extensão dacpac do SQL Server ou a extensão Projetos do Banco de Dados SQL para o Azure Data Studio.

    Se você tiver uma Máquina Virtual do Azure existente, ela deverá ser registrada com SQL do Agente IaaS no modo de gerenciamento completo.

  • Se o destino for a Instância Gerenciada de SQL do Azure ou o SQL Server na Máquina Virtual do Azure, verifique se os logons usados para conectar o SQL Server de origem são membros da função de servidor sysadmin ou têm permissão de CONTROL SERVER.

  • Se o seu destino for o Banco de Dados SQL do Azure, verifique se o logon usado para conectar o SQL Server de origem é um membro e se o db_datareader logon do SQL Server de destino é db_owner.

  • Use uma das seguintes opções de armazenamento para os arquivos completos de backup de log de transações ou banco de dados:

    • Compartilhamento de rede SMB
    • Compartilhamento de arquivos ou contêiner de blob da conta de armazenamento do Azure

    Importante

    • Se os arquivos de backup de banco de dados forem fornecidos em um compartilhamento de rede do SMB, Crie uma conta de armazenamento do Azure que permita que o serviço de DMS carregue os arquivos de backup do banco de dados. Crie a conta do Armazenamento do Azure na mesma região da instância do Serviço de Migração de Banco de Dados do Azure.
    • Verifique se o contêiner de blob da conta de armazenamento do Azure é usado exclusivamente para armazenar apenas arquivos de backup. Qualquer outro tipo de arquivos (txt, png, jpg etc.) interferirá no processo de restauração, levando a uma falha.
    • O Serviço de Migração de Banco de Dados do Azure não inicia backups, mas em vez disso, usa os backups existentes, que você já possa ter como parte de seu plano de recuperação de desastre, para a migração.
    • Cada backup pode ser gravado em um arquivo de backup separado ou em vários arquivos de backup. No entanto, não há suporte para a adoção de vários backups (ou seja, completo e t-log) em apenas uma mídia de backup.
    • Use backups compactados para reduzir a probabilidade de ocorrência de problemas potenciais associados à migração de backups de grande porte.
  • Verifique se a conta de serviço executando a instância de SQL Server de origem tem permissões de leitura e gravação no compartilhamento de rede SMB que contém arquivos de backup de banco de dados.

  • O certificado da instância do SQL Server de origem de um banco de dados protegido por TDE (Transparent Data Encryption) deve ser migrado para a Instância Gerenciada de SQL do Azure de destino ou o SQL Server na Máquina Virtual do Azure antes de migrar dados. Para obter mais informações sobre como migrar bancos de dados habilitados para TDE, confira Tutorial: Migrar bancos de dados habilitados para TDE (versão prévia) para o SQL do Azure no Azure Data Studio.

    Dica

    Se o banco de dados contiver dados confidenciais protegidos por Always Encrypted, o processo de migração usando o Azure Data Studio com o DMS migrará automaticamente suas chaves Always Encrypted para a Instância Gerenciada de SQL do Azure de destino ou o SQL Server na Máquina Virtual do Azure.

  • Se os backups de banco de dados estiverem em um compartilhamento de arquivos de rede, forneça um computador para instalar o runtime de integração auto-hospedada para acessar e migrar backups de banco de dados. Os módulos do Azure PowerShell ou da CLI do Azure fornecem as chaves de autenticação para registrar seu runtime de integração auto-hospedada. Na preparação para a migração, verifique se as seguintes regras de firewall de saída e nomes de domínio estão habilitados no computador em que você planeja instalar o runtime de integração auto-hospedada:

    Nomes de domínios Portas de saída Descrição
    Nuvem pública: {datafactory}.{region}.datafactory.azure.net
    ou *.frontend.clouddatahub.net
    Azure Governamental: {datafactory}.{region}.datafactory.azure.us
    China: {datafactory}.{region}.datafactory.azure.cn
    443 Necessárias para que o runtime de integração auto-hospedada se conecte ao serviço de Migração de Dados.
    Para o novo Data Factory criado na nuvem pública, localize o FQDN de sua chave do Runtime de Integração Auto-Hospedada, que está no formato {datafactory}.{region}.datafactory.azure.net. Para o Data Factory antigo, se você não vir o FQDN na sua chave de Integração Auto-Hospedada, use *.frontend.clouddatahub.net.
    download.microsoft.com 443 Exigido pelo runtime de integração auto-hospedada para fazer o download das atualizações. Se você tiver desabilitado a atualização automática, poderá ignorar a configuração desse domínio.
    *.core.windows.net 443 Usado pelo runtime de integração auto-hospedada que se conecta à conta de armazenamento do Azure para carregar backups de banco de dados do compartilhamento de rede

    Dica

    Se os arquivos de backup de banco de dados já foram fornecidos em uma conta de armazenamento do Azure, o runtime de integração auto-hospedada não será necessário durante o processo de migração.

  • Ao usar o runtime de integração auto-hospedada, verifique se o computador em que o runtime está instalado pode se conectar à instância do SQL Server de origem e ao compartilhamento de arquivo de rede em que os arquivos de backup estão localizados.

  • A porta de saída 445 deve ser habilitada para permitir o acesso ao compartilhamento de arquivo de rede.

  • Se você estiver usando o Serviço de Migração de Banco de Dados do Azure pela primeira vez, verifique se o provedor de recursos Microsoft.DataMigration está registrado em sua assinatura. Você pode seguir as etapas para registrar o provedor de recursos

    Importante

    Se o destino da migração for o Banco de Dados SQL do Azure, você não precisará de backups para executar essa migração. A migração para o Banco de Dados SQL do Azure é considerada uma migração lógica envolvendo a pré-criação do banco de dados e a movimentação de dados (feita pelo DMS).

Automatizar migrações de banco de dados

Usando Az.DataMigration do Azure PowerShell ou az datamigration da CLI do Azure, você pode migrar bancos de dados automatizando a criação do Serviço de Migração de Banco de Dados do Azure, configurando migrações de banco de dados para migração online e executando uma transferência. Há vários outros comandos e funcionalidades documentados em Exemplos do Azure.

Exemplo de automatização da migração de um banco de dados SQL Server usando a CLI do Azure: Etapa 1: Criar Serviço de Migração de Banco de Dados do Azure, o que orquestrará as atividades de migração do banco de dados.

#STEP 1: Create Database Migration Service
az datamigration sql-service create --resource-group "myRG" --sql-migration-service-name "myMigrationService" --location "EastUS2"

Etapa 2: configurar e iniciar a migração de banco de dados online do SQL Server local (com backups no armazenamento do Azure) para Instância Gerenciada de SQL do Azure.

#STEP 2: Start Migration
az datamigration sql-managed-instance create `
--source-location '{\"AzureBlob\":{\"storageAccountResourceId\":\"/subscriptions/mySubscriptionID/resourceGroups/myRG/providers/Microsoft.Storage/storageAccounts/dbbackupssqlbits\",\"accountKey\":\"myAccountKey\",\"blobContainerName\":\"dbbackups\"}}' `
--migration-service "/subscriptions/mySubscriptionID/resourceGroups/myRG/providers/Microsoft.DataMigration/SqlMigrationServices/myMigrationService" `
--scope "/subscriptions/mySubscriptionID/resourceGroups/myRG/providers/Microsoft.Sql/managedInstances/mySQLMI" `
--source-database-name "AdventureWorks2008" `
--source-sql-connection authentication="SqlAuthentication" data-source="mySQLServer" password="myPassword" user-name="sqluser" `
--target-db-name "AdventureWorks2008" `
--resource-group myRG `
--managed-instance-name mySQLMI

Etapa 3: executar uma transferência de migração quando todos os backups forem restaurados para Instância Gerenciada de SQL do Azure.

#STEP 3: Get migration ID and perform Cutover
$migOpId = az datamigration sql-managed-instance show --managed-instance-name "mySQLMI" --resource-group "myRG" --target-db-name "AdventureWorks2008" --expand=MigrationStatusDetails --query "properties.migrationOperationId"
az datamigration sql-managed-instance cutover --managed-instance-name "mySQLMI" --resource-group "myRG" --target-db-name "AdventureWorks2008" --migration-operation-id $migOpId

Se você receber o erro "A assinatura não foi registrada para usar o namespace 'Microsoft.DataMigration'. Confira https://aka.ms/rps-not-found para saber como registrar assinaturas", execute o seguinte comando:

   Register-AzResourceProvider -ProviderNamespace "Microsoft.DataMigration"

Próximas etapas

  • Para obter a documentação de referência do Azure PowerShell para migrações de banco de dados do SQL Server, consulte Az.DataMigration.
  • Para obter a documentação de referência da CLI do Azure para migrações de banco de dados do SQL Server, consulte az datamigration.
  • Para o repositório de códigos de exemplos do Azure, consulte data-migration-sql