Identificación de la SKU correcta de Azure SQL Database, Azure SQL Managed Instance o SQL Server en una VM de Azure para una base de datos local

La migración de bases de datos a la nube puede ser complicada, especialmente cuando se intenta seleccionar el mejor destino o SKU de Azure SQL Database, SQL Managed Instance o SQL Server en una VM de Azure para la base de datos. Database Migration Assistant (DMA) ayuda a responder estas preguntas y facilita la experiencia de migración de bases de datos al proporcionar estas recomendaciones de SKU en una salida fácil de usar. El uso de DMA de datos de rendimiento ahora puede recomendar una SKU adecuada de Azure SQL de destino y una explicación de la recomendación.

La característica de recomendaciones de SKU permite recopilar datos de rendimiento de las instancias de SQL Server de origen que hospedan las bases de datos y recomienda el mínimo SKU de Azure SQL Database, Azure SQL Managed Instance o SQL Server en una VM de Azure en función de los datos recopilados. La característica proporciona recomendaciones relacionadas con el plan de tarifa, el nivel de proceso y el tamaño de los datos. Esta funcionalidad solo está disponible actualmente a través de la interfaz de la línea de comandos (CLI).

A continuación, se muestran instrucciones que le ayudarán a determinar las recomendaciones de SKU y a aprovisionar las bases de datos correspondientes en Azure mediante DMA.

Nota:

Si va a evaluar todo el patrimonio de datos de SQL Server a gran escala en VMware, use Azure Migrate para obtener recomendaciones de implementación de Azure SQL, el ajuste de tamaño de destino y las estimaciones mensuales.

Requisitos previos

  • Descargue e instale la versión más reciente de DMA. Si ya tiene una versión anterior de la herramienta, ábrala y se le pedirá que actualice DMA.
  • Instale la versión mínima de .NET Core 6.0 en la máquina de herramientas donde se ejecuta la aplicación de consola de recomendaciones de SKU.
  • Asegúrese de que la cuenta usada para conectarse al origen local de SQL Server tiene permiso de administrador de sistema.

Nota:

Se recomienda que la herramienta se use desde una máquina (cliente) de herramientas independiente con conectividad a las instancias de SQL de destino, en lugar de desde la máquina que hospeda la instancia de SQL Server, con el fin de minimizar cualquier sobrecarga potencial. Al recopilar datos de rendimiento para las recomendaciones de SKU, se recomienda que la herramienta se ejecute con valores de opción predeterminados en el intervalo de varias horas, que abarcan cargas de trabajo de poca actividad y máxima actividad y excluyen las tareas de mantenimiento, como la recompilación de índices o la base de datos de copia de seguridad. Las tareas de mantenimiento pueden afectar al consumo de CPU, memoria y E/S y, posteriormente, impulsar niveles de SKU recomendados más altos.

Recopilar datos de rendimiento

Los datos recopilados incluyen información limitada sobre la configuración de hardware del servidor y datos de rendimiento específicos de SQL agregados de vistas de administración dinámica (DMV) del sistema, como CPU, memoria, uso de almacenamiento, rendimiento de E/S y latencia de E/S. Los datos recopilados se almacenan localmente en la máquina para su agregación y análisis posteriores. Las características de rendimiento de la instancia de origen se analizan para habilitar las recomendaciones de SKU para las ofertas de Azure SQL (como SQL Database, SQL Managed Instance y SQL en una VM de Azure) que mejor se adapten a la carga de trabajo, además de ser rentables.

En la ruta de instalación de DMA, busque la carpeta SQLAssessmentConsole y la aplicación SqlAssessment.exe.

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

Para iniciar el proceso de recopilación de datos, especifique la acción PerfDataCollection en la aplicación de consola, con los argumentos siguientes:

  • sqlConnectionStrings: (obligatorio) cadenas de conexión formales entrecomilladas para las instancias de SQL de destino.
  • perfQueryIntervalInSec (opcional): intervalo en el que se consultan los datos de rendimiento, en segundos. (Valor predeterminado: 30).
  • staticQueryIntervalInSec (opcional): intervalo en el que se consultan y conservan los datos de configuración estáticos, en segundos. (Valor predeterminado: 60).
  • numberOfIterations (opcional): número de iteraciones de recopilación de datos de rendimiento que hacer antes de que se conserve en el archivo. Por ejemplo, con valores predeterminados, los datos de rendimiento se conservan cada 30 segundos * 20 iteraciones = 10 minutos. (Valor predeterminado: 20).
  • outputFolder (opcional): carpeta en la que se escriben o leen los datos de rendimiento, los informes y los registros. (Valor predeterminado: %LocalAppData%/Microsoft/SqlAssessmentConsole).

A continuación, se muestra una invocación de ejemplo:

.\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, el proceso de recopilación de datos se puede invocar al proporcionar los argumentos adecuados en un archivo de configuración JSON y al pasar el archivo de configuración a la herramienta mediante la ejecución del archivo ejecutable sin una acción, como se indica a continuación:

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

A continuación, se muestra un archivo ConfigFile de ejemplo equivalente a la acción de recopilación de datos de rendimiento 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"
  }

Los archivos de configuración de ejemplo de todas las acciones se pueden encontrar en la carpeta Example en la ruta de instalación de DMA: GetMetadataSampleConfigFile.json, PerfDataCollectionSampleConfigFile.json y GetSkuRecommendationSampleConfigFile.json.

Una vez ejecutado el comando, los puntos de datos de rendimiento y configuración se guardan como un conjunto de tres archivos *_Counters.csv por instancia de destino, cada uno contiene el servidor y el nombre de la instancia. Puede usar este archivo como entrada para la siguiente parte del proceso, que proporcionará recomendaciones de SKU para Azure SQL Database, Azure SQL Managed Instance o SQL Server en una VM de Azure.

Uso de la aplicación de consola para obtener recomendaciones de SKU

Los puntos de datos que recopila el paso anterior se usan como entrada para el proceso de recomendación de SKU.

Para la opción de base de datos única, DMA proporciona recomendaciones para el nivel de base de datos única de Azure SQL Database, el nivel de proceso y la configuración de almacenamiento recomendada para cada base de datos de la instancia de SQL.

Para Azure SQL Managed Instance y SQL Server en una VM de Azure, las recomendaciones admiten un escenario de migración mediante lift-and-shift. Como resultado, la aplicación de consola de recomendaciones de SKU puede proporcionar recomendaciones para el nivel de Azure SQL Managed Instance o SQL Server en una VM de Azure, el nivel de proceso y la configuración de almacenamiento recomendada para el conjunto de bases de datos en la instancia de SQL. También puede especificar solo un subconjunto de bases de datos que se van a incluir o excluir de las recomendaciones de SKU.

GetSkuRecommendation usa de manera predeterminada una estrategia de línea de base que asigna los valores de datos de rendimiento recopilados representativos de la carga de trabajo (según el valor de percentil especificado) a la SKU correcta de Azure SQL. También ofrecemos una estrategia elástica (enfoque estadístico), que genera una curva de precio-rendimiento única basada en los datos de rendimiento recopilados mediante el análisis de los patrones de carga de trabajo en un modelo basado en los clientes que ya han migrado a Azure SQL.

Para iniciar el proceso de recomendación de SKU, especifique la acción GetSkuRecommendation en la aplicación de consola, con los argumentos siguientes:

  • perfQueryIntervalInSec (opcional): intervalo en el que se han consultado los datos de rendimiento, en segundos. Nota: El valor proporcionado debe coincidir con el valor utilizado originalmente durante la recopilación de datos de rendimiento. (Valor predeterminado: 30)
  • targetPlatform (opcional): plataforma de destino para la recomendación de SKU: AzureSqlDatabase, AzureSqlManagedInstance, AzureSqlVirtualMachine, o bien Any. Elegir Any permite evaluar las recomendaciones de SKU para las tres plataformas de destino y se devuelve la mejor opción. (Valor predeterminado: Any)
  • targetSqlInstance (opcional): nombre de la instancia de SQL a la que tiene como destino la recomendación de SKU. (Valor predeterminado: outputFolder se examina para los archivos creados por la acción PerfDataCollection y se proporcionan recomendaciones para cada instancia encontrada)
  • targetPercentile (opcional): percentil de los puntos de datos que se usarán durante la agregación de los datos de rendimiento. Solo se usa para la estrategia de línea de base (no elástica). Solo se usa para la estrategia de línea de base (no elástica). (Valor predeterminado: 95)
  • scalingFactor (opcional): factor (de "confort") de escalado usado durante la recomendación de SKU. Por ejemplo, si se determina que hay un requisito de CPU de 4 núcleos virtuales con un factor de escalado del 150 %, el requisito de CPU real es de 6 núcleos virtuales. (Valor predeterminado: 100)
  • startTime (opcional): hora de inicio UTC de los puntos de datos de rendimiento que se deben tener en cuenta durante la agregación, en formato yyyy-MM-dd HH:mm. Solo se usa para la estrategia de línea de base (no elástica). (Valor predeterminado: se consideran todos los puntos de datos recopilados)
  • endTime (opcional): hora de finalización UTC de los puntos de datos de rendimiento que se deben tener en cuenta durante la agregación, en formato yyyy-MM-dd HH:mm. Solo se usa para la estrategia de línea de base (no elástica). (Valor predeterminado: se consideran todos los puntos de datos recopilados)
  • elasticStrategy (opcional): indica si se va a usar o no la estrategia elástica para las recomendaciones de SKU en función de la generación de perfiles de uso de recursos y el análisis del rendimiento de los costos. La estrategia elástica está disponible actualmente para Azure SQL Databases y SQL Managed Instance, aún no está disponible para SQL Server en el destino de máquina virtual de Azure. (Valor predeterminado: false)
  • databaseAllowList (opcional): lista separados por espacios de los nombres de bases de datos que se van a permitir para la consideración de recomendación de SKU al excluir a todos los demás. Establezca solo uno de los siguientes o ninguno: databaseAllowList, databaseDenyList. (Valor predeterminado: null)
  • databaseDenyList (opcional): lista separada por espacios de los nombres de bases de datos que se excluirán para las recomendaciones de SKU. Establezca solo uno de los siguientes o ninguno: databaseAllowList, databaseDenyList. (Valor predeterminado: null)
  • overwrite (opcional): indica si se van a sobrescribir o no los informes de recomendación de SKU existentes. (Valor predeterminado: true)
  • displayResult (opcional): indica si se imprimen o no los resultados de la recomendación de SKU en la consola. (Valor predeterminado: true)
  • outputFolder (opcional): carpeta en la que se escribirán o leerán los datos de rendimiento, los informes y los registros. (Valor predeterminado: %LocalAppData%\Microsoft\SqlAssessment)
  • suppressPreviewFeatures (opcional): si se establece en true, cualquier característica de Azure que se encuentra en un período de versión preliminar no se incluye en la recomendación. (Valor predeterminado: false)

La configuración avanzada de las recomendaciones de SKU se puede encontrar en el archivo Console.Settings.json en el directorio raíz. Actualmente, incluye los siguientes parámetros personalizables:

CommandTimeoutGroupSetting: el tiempo, en segundos, que se debe esperar para que se ejecuten los comandos de la consulta SQL antes de que se agote el tiempo de espera.

  • PerfCollectionCommandTimeout: tiempo de espera del comando para las consultas potencialmente de larga duración relacionadas con la recopilación de datos de rendimiento. (Valor predeterminado: 300)
  • DefaultCollectionCommandTimeout: tiempo de espera del comando para todas las demás consultas. (Valor predeterminado: 120)

ThrottlingGroupSetting: número de tareas paralelas que se van a crear en función del número de núcleos de la máquina.

  • ServerInstancesParallelCount: número de instancias de servidor que se van a evaluar en paralelo. (Valor predeterminado: 2)
  • DatabasesParallelCount: número de bases de datos que se van a evaluar en paralelo. (Valor predeterminado: 4)
  • UserDefinedObjectsParallelCountPerDb: número de objetos definidos por el usuario (procedimientos almacenados, vistas, desencadenadores, etc.) que se van a evaluar en paralelo por base de datos. (Valor predeterminado: 4)

AllowTelemetry: indica si se va a permitir o no la recopilación y transmisión de datos anónimos de uso y diagnóstico de características a Microsoft. (Valor predeterminado: true)

Como alternativa, el proceso de recomendación de SKU se puede invocar al proporcionar los argumentos adecuados en un archivo de configuración JSON y al pasar el archivo de configuración a la herramienta mediante la ejecución del archivo ejecutable sin una acción, como se indica a continuación:

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

El siguiente archivo ConfigFile es equivalente a la acción de recomendaciones 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 obtener recomendaciones de SKU para una plataforma de Azure SQL específica en lugar de seleccionar una automáticamente, proporcione un valor para la opción --targetPlatform, como se indica a continuación:

Ejemplo 1: Obtención de recomendaciones de SKU para Azure SQL Database.

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

Ejemplo 2: Obtención de recomendaciones de SKU mediante la estrategia elástica para Azure SQL Managed Instance.

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

Ejemplo 3: Obtención de recomendaciones de SKU para una máquina virtual de Azure SQL.

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

Ejemplo 4: Obtención de recomendaciones de SKU para una máquina virtual de Azure SQL y eliminación de características en versión preliminar.

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

La siguiente captura de pantalla muestra una salida de ejemplo de una recomendación de Azure SQL Database:

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

La siguiente captura de pantalla muestra una salida de ejemplo de una recomendación de Azure SQL Managed Instance:

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

La siguiente captura de pantalla muestra un ejemplo de salida de una recomendación de SQL Server en una VM de Azure:

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

La salida de la recomendación de SKU se guarda como un informe detallado en formato JSON y un archivo HTML resumido fácil de leer. La salida trata las secciones siguientes:

  • Nombre de instancia: nombre de las instancias de SQL Server locales.
  • Nombre de la base de datos: nombre de las bases de datos de SQL Server locales.
  • Recomendación de SKU: la oferta mínima de SKU rentable entre todas las SKU aptas para el rendimiento que podrían dar cabida a las cargas de trabajo.
  • Motivo de recomendación: por cada nivel que se recomienda, proporcionamos los motivos y los valores de los datos recopilados que impulsan las recomendaciones.

Los valores finales de configuración y nivel recomendados para ese nivel reflejan la SKU mínima necesaria para que las consultas se ejecuten en Azure con una tasa de éxito similar a las bases de datos locales.

Pasos siguientes