Identificar o SKU ideal do Banco de Dados SQL do Azure, da Instância Gerenciada de SQL do Azure ou do SQL Server na VM do Azure para seu banco de dados local

Migrar bancos de dados para a nuvem pode ser complicado. Especialmente ao tentar escolher o melhor destino e SKU do Banco de Dados SQL do Azure, da Instância Gerenciada de SQL ou do SQL Server na VM do Azure para seu banco de dados. O AMD (Assistente de Migração de Banco de Dados) ajuda a resolver essas questões e facilitar a experiência de migração de banco de dados, fornecendo essas recomendações de SKU em uma saída amigável ao usuário. Usando dados de desempenho, o AMD já pode recomendar um SKU de SQL do Azure de destino apropriado e uma explicação para a recomendação.

O recurso de recomendações de SKU permite coletar dados de desempenho das instâncias do SQL Server de origem que hospedam seus bancos de dados e recomenda o mínimo de SKU do Banco de Dados SQL do Azure, da Instância Gerenciada de SQL do Azure ou do SQL Server na SKU da VM do Azure com base nos dados coletados. O recurso fornece recomendações relacionadas ao tipo de preço, ao nível de computação e ao tamanho dos dados. Atualmente, essa funcionalidade só está disponível por meio da CLI (interface de linha de comando).

Veja a seguir instruções para ajudar você a determinar as recomendações de SKU e a provisionar bancos de dados correspondentes no Azure usando o AMD.

Observação

Se você estiver avaliando todo o conjunto de dados do SQL Server em escala no VMware, use o Migrações para Azure para obter recomendações de implantação do SQL do Azure, dimensionamento de destino e estimativas mensais.

Pré-requisitos

  • Baixar e instalar a última versão do AMD. Se você já tiver uma versão anterior da ferramenta, abra-a e você verá um aviso para atualizar o AMD.
  • Instale a versão mínima do .NET Core 6.0 no computador de ferramentas em que o aplicativo de console de recomendações de SKU está em execução.
  • Verifique se a conta usada para se conectar à fonte local do SQL Server tem a permissão sysadmin.

Observação

É recomendável que a ferramenta seja usada em um computador de ferramentas separadas (cliente) com uma conectividade com as instâncias SQL de destino, em vez do computador que hospeda SQL Server em si, a fim de minimizar qualquer sobrecarga potencial. Ao coletar dados de desempenho para recomendações de SKU, é recomendável que a ferramenta seja executada com os valores de opção padrão ao longo de várias horas, abrangendo cargas de trabalho fora do pico e no pico e excluindo tarefas de manutenção, como recompilação de índice ou banco de dados de backup. As tarefas de manutenção podem afetar o consumo de CPU, memória e E/S e, posteriormente, gerar camadas de SKU mais altas recomendadas.

Coletar dados de desempenho

Os dados coletados incluem informações limitadas sobre a configuração de hardware do servidor e dados de desempenho específicos do SQL agregados de DMVs (exibições de gerenciamento dinâmico) do sistema, como CPU, memória, uso de armazenamento, taxa de transferência de E/S e latência de E/S. Os dados coletados são armazenados localmente no computador para agregação e análise adicionais. As características de desempenho da instância de origem são analisadas para habilitar as recomendações de SKU para ofertas de SQL do Azure (incluindo o Banco de Dados de SQL, a Instância Gerenciada de SQL e o SQL na VM do Azure) que melhor se adaptam à sua carga de trabalho, além de serem econômicas.

No caminho de instalação do AMD, localize a pasta SQLAssessmentConsole e o aplicativo SqlAssessment.exe

Screenshot of SKUConsoleApplication.exe file shown in DMA installation folder location.

Para iniciar o processo de coleta de dados, especifique a ação PerfDataCollection no aplicativo de console, com os seguintes argumentos:

  • sqlConnectionStrings: (obrigatório) Strings de conexão formais entre aspas para as instâncias SQL de destino.
  • perfQueryIntervalInSec (opcional): Intervalo no qual consultar dados de desempenho, em segundos. (Padrão: 30).
  • staticQueryIntervalInSec (opcional): intervalo no qual os dados de configuração estática devem ser consultados e persistidos, em segundos. (Padrão: 60).
  • numberOfIterations (opcional): número de iterações da coleta de dados de desempenho a serem executadas antes da persistência no arquivo. Por exemplo, com os valores padrão, os dados de desempenho serão persistidos a cada 30 segundos * 20 iterações = 10 minutos. (Padrão: 20).
  • outputFolder (opcional): pasta na qual os dados de desempenho, os relatórios e os logs são gravados/lidos. (Padrão: %LocalAppData%/Microsoft/SqlAssessmentConsole).

Este é um exemplo de invocação:

.\SqlAssessment.exe PerfDataCollection
--sqlConnectionStrings "Data Source=Server1;Initial Catalog=master;Integrated Security=True;" "Data Source=Server2;Initial Catalog=master;Integrated Security=True;"
--outputFolder C:\Output

Como alternativa, o processo de coleta de dados pode ser invocado pelo fornecimento dos argumentos apropriados em um arquivo de configuração JSON e pela transmissão do arquivo de configuração para a ferramenta com a execução do executável sem uma ação, da seguinte maneira:

.\SqlAssessment.exe --configFile C:\path\to\config.json

O seguinte exemplo de ConfigFile é equivalente à ação de coleta de dados de desempenho descrita anteriormente:

  {
    "action": "PerfDataCollection",
    "sqlConnectionStrings": [
    "Data Source=Server1;Initial Catalog=master;Integrated Security=True;",
    "Data Source=Server2;Initial Catalog=master;Integrated Security=True;"
    ],
    "outputFolder": "C:\\Output"
  }

Encontre os arquivos de configuração de exemplo para todas as ações na pasta Example no caminho de instalação do AMD: GetMetadataSampleConfigFile.json, PerfDataCollectionSampleConfigFile.json e GetSkuRecommendationSampleConfigFile.json.

Após a execução do comando, os pontos de dados de desempenho e de configuração são salvos como um conjunto de três arquivos *_Counters.csv por instância de destino, cada um contendo o servidor e o nome da instância. Use esse arquivo como entrada para a próxima parte do processo, que fornecerá recomendações de SKU para o Banco de Dados SQL do Azure, a Instância Gerenciada de SQL do Azure ou o SQL Server na VM do Azure.

Usar o aplicativo de console para obter recomendações de SKU

Os pontos de dados coletados pela etapa anterior serão usados como a entrada para o processo de recomendação de SKU.

Para a opção de banco de dados único, o AMD fornecerá recomendações para a camada de banco de dados individual do Banco de Dados SQL do Azure, o nível de computação e a configuração de armazenamento recomendada para cada banco de dados na instância SQL.

Para a Instância Gerenciada de SQL do Azure e o SQL Server na VM do Azure, as recomendações dão suporte a um cenário de lift-and-shift. Como resultado, o aplicativo de console de recomendações de SKU pode fornecer recomendações para a camada da Instância Gerenciada de SQL do Azure ou do SQL Server na VM do Azure, o nível de computação e a configuração de armazenamento recomendada para o conjunto de bancos de dados na instância SQL. Você também pode especificar apenas um subconjunto de bancos de dados a serem incluídos ou excluídos das recomendações de SKU.

O GetSkuRecommendation usa por padrão uma estratégia de linha de base, que mapeia os valores de dados de desempenho coletados representativos para a carga de trabalho (com base no valor de percentil especificado) para o SKU de SQL do Azure à direita. Também oferecemos uma estratégia elástica (abordagem estatística), que gera uma curva exclusiva da relação custo/benefício com base nos dados de desempenho coletados analisando os padrões de carga de trabalho em relação a um modelo baseado em clientes que já migraram para o SQL do Azure.

Para iniciar o processo de recomendação de SKU, especifique a ação GetSkuRecommendation no aplicativo de console, com os seguintes argumentos:

  • perfQueryIntervalInSec (opcional): Intervalo no qual os dados de desempenho foram consultados, em segundos. Observação: o valor fornecido precisa corresponder ao valor originalmente usado durante a coleta de dados de desempenho. (padrão: 30)
  • targetPlatform (opcional): plataforma de destino para recomendação de SKU: AzureSqlDatabase, AzureSqlManagedInstance, AzureSqlVirtualMachine ou Any. A escolha de Any permite que as recomendações de SKU para todas as três plataformas de destino sejam avaliadas e o melhor ajuste seja retornado. (padrão: Any)
  • targetSqlInstance (opcional): nome da instância do SQL à qual a recomendação de SKU é direcionada. (Padrão: outputFolder é verificado em busca de arquivos criados pela ação PerfDataCollection, e as recomendações são fornecidas para cada instância encontrada)
  • targetPercentile (opcional): percentual de pontos de dados a serem usados durante a agregação dos dados de desempenho. Usado apenas para a estratégia de linha de base (não elástica). Usado apenas para a estratégia de linha de base (não elástica). (padrão: 95)
  • scalingFactor (opcional): fator de escala ('conforto') usado durante a recomendação de SKU. Por exemplo, se for determinado que há um requisito de CPU de 4 vCores com um fator de escala de 150%, o requisito de CPU real será de 6 vCores. (padrão: 100)
  • startTime (opcional): hora de início UTC dos pontos de dados de desempenho a serem considerados durante a agregação, em formato yyyy-MM-dd HH:mm. Usado apenas para a estratégia de linha de base (não elástica). (Padrão: todos os pontos de dados coletados serão considerados)
  • endTime (opcional): hora de término UTC dos pontos de dados de desempenho a serem considerados durante a agregação, em formato yyyy-MM-dd HH:mm. Usado apenas para a estratégia de linha de base (não elástica). (Padrão: todos os pontos de dados coletados serão considerados)
  • elasticStrategy (opcional): indica se a estratégia elástica deve ser usada para as recomendações de SKU com base na criação de perfil de uso de recursos e na análise de custo/benefício. Atualmente, a estratégia elástica está disponível para bancos de dados SQL do Azure e a Instância Gerenciada de SQL, ainda não disponíveis para o destino SQL Server na VM do Azure. (padrão: false)
  • databaseAllowList (opcional): a lista separada por espaço de nomes de bancos de dados a serem permitidos para consideração de recomendação de SKU, excluindo todos os outros. Defina apenas um dos seguintes ou nenhum: databaseAllowList ou databaseDenyList. (padrão: null)
  • databaseDenyList (opcional): a lista separada por espaço de nomes de bancos de dados a serem excluídos para recomendação de SKU. Defina apenas um dos seguintes ou nenhum: databaseAllowList ou databaseDenyList. (padrão: null)
  • overwrite (opcional): indica se os relatórios de recomendação de SKU existentes devem ser substituídos. (padrão: true)
  • displayResult (opcional): se deseja ou não imprimir os resultados da recomendação de SKU no console. (padrão: true)
  • outputFolder (opcional): pasta na qual os dados de desempenho, os relatórios e os logs são gravados/lidos. (padrão: %LocalAppData%\Microsoft\SqlAssessment)
  • suppressPreviewFeatures (opcional): se essa opção for definida como true, qualquer recurso do Azure que esteja em um período de versão prévia não será incluído na recomendação. (padrão: false)

Encontre as configurações avançadas para as recomendações de SKU no arquivo Console.Settings.json no diretório raiz. Atualmente, ele inclui os seguintes parâmetros personalizáveis:

CommandTimeoutGroupSetting: o tempo em segundos de espera da execução de uma consulta SQL antes de ela atingir o tempo limite.

  • PerfCollectionCommandTimeout: tempo limite de comando para consultas potencialmente longas relacionadas à coleta de dados de desempenho (padrão: 300)
  • DefaultCollectionCommandTimeout (opcional): tempo limite do comando para todas as outras consultas (padrão: 120)

ThrottlingGroupSetting: número de tarefas paralelas a serem criadas com base no número de núcleos no computador

  • ServerInstancesParallelCount: número de instâncias de servidor a serem avaliadas em paralelo (padrão: 2)
  • DatabasesParallelCount: número de bancos de dados a serem avaliados em paralelo (padrão: 4)
  • UserDefinedObjectsParallelCountPerDb: número de objetos definidos pelo usuário (procedimentos armazenados, exibições, gatilhos etc.) a serem avaliados em paralelo por banco de dados (padrão: 4)

AllowTelemetry: indica se a coleta e a transmissão de dados de diagnóstico e uso de recursos anônimos para a Microsoft devem ser permitidas. (padrão: true)

Como alternativa, o processo de recomendação de SKU pode ser invocado pelo fornecimento dos argumentos apropriados em um arquivo de configuração JSON e pela transmissão do arquivo de configuração para a ferramenta com a execução do executável sem uma ação, da seguinte maneira:

.\SqlAssessment.exe --configFile C:\path\to\config.json

O seguinte ConfigFile é equivalente à ação de recomendações de SKU descrita anteriormente:

{
    "action": "GetSkuRecommendation",
    "outputFolder": "C:\\Output",
    "targetPlatform": "AzureSqlDatabase",
    "targetSqlInstance": "Server1",
    "targetPercentile": 95,
    "scalingFactor": 100,
    "startTime": "2020-01-01 00:00",
    "endTime": "2022-01-01 00:00",
    "perfQueryIntervalInSec": 30,
    "overwrite": "true"
}

Para obter recomendações de SKU para uma plataforma SQL do Azure específica em vez de selecionar uma automaticamente, forneça um valor para a opção --targetPlatform, da seguinte maneira:

Exemplo 1: como obter recomendações de SKU para o Banco de Dados SQL do Azure.

.\SqlAssessment.exe GetSkuRecommendation
--outputFolder C:\Output
--targetPlatform AzureSqlDatabase

Exemplo 2: como obter recomendações de SKU usando a estratégia elástica para a Instância Gerenciada de SQL do Azure.

.\SqlAssessment.exe GetSkuRecommendation
--outputFolder C:\Output
--targetPlatform AzureSqlManagedInstance
--elasticStrategy true

Exemplo 3: como obter recomendações de SKU para a Máquina Virtual do SQL do Azure.

.\SqlAssessment.exe GetSkuRecommendation
--outputFolder C:\Output
--targetPlatform AzureSqlVirtualMachine

Exemplo 4: como obter recomendações de SKU para a Máquina Virtual do SQL do Azure e a versão prévia dos recursos de substituição.

.\SqlAssessment.exe GetSkuRecommendation
--outputFolder C:\Output
--targetPlatform AzureSqlVirtualMachine
--suppressPreviewFeatures True

Veja um exemplo de captura de tela da saída de uma recomendação de banco de dados SQL do Azure:

Screenshot of Azure SQL Database SKU tier and sizing recommendations shown in SQLAssessment console.

Veja um exemplo de captura de tela da saída de uma recomendação de Instância Gerenciada de SQL do Azure:

Screenshot of Azure SQL Managed Instance SKU tier and size recommendations shown in console.

Veja um exemplo de captura de tela da saída de uma recomendação do SQL Server na VM do Azure:

Screenshot of SQL Server on Azure VM SKU tier and size recommendations output shown in console.

A saída da recomendação de SKU é salva como um relatório detalhado no formato JSON e um arquivo HTML resumido fácil de ler. A saída abrange as seguintes seções:

  • Nome da Instância: nome da instância local do SQL Server.
  • Nome do Banco de Dados: nome do banco de dados local do SQL Server.
  • Recomendação de SKU: a oferta mínima de SKU econômica entre todas as SKUs qualificadas para desempenho que podem acomodar suas cargas de trabalho.
  • Motivo da Recomendação: para cada camada recomendada, fornecemos os motivos e os valores de dados coletados que geram as recomendações.

A camada e os valores de configuração finais recomendados para essa camada refletem o SKU mínimo necessário para que suas consultas sejam executadas no Azure com uma taxa de sucesso semelhante aos bancos de dados locais.

Próximas etapas