Migrar bancos de dados em escala usando automação (Visualização)

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

  • Um mecanismo de avaliação aprimorado pode avaliar instâncias do SQL Server, identificando bancos de dados prontos para migração para os diferentes destinos SQL do Azure.

  • Um mecanismo de recomendação de SKU (Visualização) que coleta dados de desempenho da instância local do SQL Server de origem, gerando recomendações de SKU de tamanho certo com base em seu destino SQL do Azure.

  • Um serviço confiável do Azure alimentado 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 modos de migração online (para migrações que exigem tempo de inatividade mínimo) ou offline (para migrações em que o tempo de inatividade persiste durante a migração) para atender às suas necessidades de negócios.

  • A flexibilidade para criar e configurar um tempo de execução de integração auto-hospedado para fornecer sua própria computação para acessar o SQL Server de origem e backups em seu ambiente local.

Com ferramentas de automação como o PowerShell - Azure DataMigration Service Module ou a CLI do Azure, você pode aplicar os recursos da extensão de Migração SQL do Azure junto com o 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 exemplo 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 Linguagem de script
Avaliação do SQL Server CLI do Azure do PowerShell /
SQL Server para Instância Gerenciada SQL do Azure (usando compartilhamento de arquivos) CLI do Azure do PowerShell /
SQL Server para Instância Gerenciada SQL do Azure (usando o armazenamento do Azure) CLI do Azure do PowerShell /
SQL Server para SQL Server em Máquinas Virtuais do Azure (usando compartilhamento de arquivos) CLI do Azure do PowerShell /
SQL Server para SQL Server em Máquinas Virtuais do Azure (usando o Armazenamento do Azure) CLI do Azure do PowerShell /
SQL Server para Banco de Dados SQL do Azure CLI do Azure do PowerShell /
Recomendações de SKU (Pré-visualização) CLI do Azure do PowerShell /
Automação de migração de ponta a ponta CLI do Azure do PowerShell /
Automação de migração de ponta a ponta para vários bancos de dados CLI do Azure do PowerShell /

Pré-requisitos

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

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

    • Colaborador da Instância Gerenciada SQL do Azure de destino, do SQL Server em Máquinas Virtuais do Azure ou do Banco de Dados SQL do Azure e da 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 SQL do Azure de destino, o SQL Server em Máquinas Virtuais do Azure ou o Banco de Dados SQL do Azure.

    • Função de Proprietário ou de Contribuidor para a subscrição do Azure.

    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 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

    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 a extensão do SQL IaaS Agent no modo de gerenciamento completo.

  • Se o seu destino for a Instância Gerenciada 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 CONTROL SERVER permissão.

  • 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 o db_datareader logon e para o SQL Server de destino é db_owner.

  • Use uma das seguintes opções de armazenamento para o banco de dados completo e os arquivos de backup do log de transações:

    • Compartilhamento de rede SMB

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

      • Se os arquivos de backup do banco de dados forem fornecidos em um compartilhamento de rede SMB, crie uma conta de armazenamento do Azure que permita que o serviço DMS carregue os arquivos de backup do banco de dados. Certifique-se de criar a Conta de Armazenamento do Azure na mesma região em que a instância do Serviço de Migração de Banco de Dados do Azure é criada.

      • Verifique se o contêiner de blob da conta de armazenamento do Azure é usado exclusivamente para armazenar somente arquivos de backup. Qualquer outro tipo de ficheiros (txt, png, jpg, etc.) irá interferir com o processo de restauro, levando a uma falha.

      • O Serviço de Migração de Banco de Dados do Azure não inicia nenhum backup e, em vez disso, usa backups existentes, que você pode já ter como parte do seu plano de recuperação de desastres, para a migração.

      • Cada cópia de segurança pode ser escrita num ficheiro de cópia de segurança separado ou em vários ficheiros de cópia de segurança. No entanto, não há suporte para anexar vários backups (ou seja, completos e t-log) em uma única mídia de backup.

      • Use backups compactados para reduzir a probabilidade de problemas potenciais associados à migração de backups grandes.

  • Verifique se a conta de serviço que executa a instância do 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 de instância do SQL Server de origem de um banco de dados protegido pela TDE (Criptografia de Dados Transparente) deve ser migrado para a Instância Gerenciada SQL do Azure ou para o SQL Server na Máquina Virtual do Azure de destino antes de migrar dados. Para obter mais informações sobre como migrar bancos de dados habilitados para TDE, consulte Tutorial: Migrar bancos de dados habilitados para TDE (visualização) para o SQL do Azure no Azure Data Studio.

    Gorjeta

    Se o seu banco de dados contiver dados confidenciais protegidos pelo Always Encrypted, o processo de migração usando o Azure Data Studio com DMS migrará automaticamente suas chaves Always Encrypted para sua Instância Gerenciada SQL do Azure de destino ou 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 uma máquina para instalar o tempo de execução de integração auto-hospedado para acessar e migrar backups de banco de dados. Os módulos Azure PowerShell ou CLI do Azure fornecem as chaves de autenticação para registrar seu tempo de execução de integração auto-hospedado. Em preparação para a migração, verifique se a máquina onde você planeja instalar o tempo de execução de integração auto-hospedado tem as seguintes regras de firewall de saída e nomes de domínio habilitados:

    Nomes de domínio Portas de saída Description
    Cloud Pública: {datafactory}.{region}.datafactory.azure.net
    ou *.frontend.clouddatahub.net
    Azure Government: {datafactory}.{region}.datafactory.azure.us
    China: {datafactory}.{region}.datafactory.azure.cn
    443 Exigido pelo tempo de execução de integração auto-hospedado para se conectar ao serviço de Migração de Dados.
    Para o novo Data Factory criado na nuvem pública, localize o FQDN da sua chave Self-hosted Integration Runtime, que está no formato {datafactory}.{region}.datafactory.azure.net. Para o Data factory antigo, se você não vir o FQDN em sua chave de integração auto-hospedada, use *.frontend.clouddatahub.net em vez disso.
    download.microsoft.com 443 Exigido pelo tempo de execução de integração auto-hospedado para baixar as atualizações. Se tiver desativado a atualização automática, pode ignorar a configuração deste domínio.
    *.core.windows.net 443 Usado pelo tempo de execução de integração auto-hospedado que se conecta à conta de armazenamento do Azure para carregar backups de banco de dados do seu compartilhamento de rede

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

  • Ao usar o tempo de execução de integração auto-hospedado, certifique-se de que a máquina onde o tempo de execução está instalado possa se conectar à instância do SQL Server de origem e ao compartilhamento de arquivos de rede onde os arquivos de backup estão localizados.

  • A porta de saída 445 deve ser habilitada para acessar o compartilhamento de arquivos de rede.

  • Se estiver a utilizar o Serviço de Migração de Base de Dados do Azure pela primeira vez, certifique-se de que o fornecedor de recursos Microsoft.DataMigration está registado na sua subscrição. Você pode seguir as etapas para registrar o provedor de recursos

    Se o seu destino de 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 (realizada pelo DMS).

Automatize migrações de banco de dados

Usando o Azure PowerShell Az.DataMigration ou Azure CLI az datamigration, 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 substituição. Há vários outros comandos e funcionalidades documentados em Exemplos do Azure.

Exemplo de automatização da migração de um banco de dados do SQL Server usando a CLI do Azure: Etapa 1: Criar o Serviço de Migração de Banco de Dados do Azure, 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 a Instância Gerenciada 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: Execute uma substituição de migração depois que todos os backups forem restaurados para a Instância Gerenciada 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 está registrada para usar o namespace 'Microsoft.DataMigration'. Veja https://aka.ms/rps-not-found como registrar assinaturas", execute o seguinte comando:

Register-AzResourceProvider -ProviderNamespace "Microsoft.DataMigration"