Azure: Guia y enlaces para Migracion de datos (Database Migration Services)

En este articulo, voy a publicar una recopilación de enlaces que pueden ser utiles para escenarios de migracion de bases de datos a Azure.

Como sabeis, Azure dispone de Azure Database Migration Service para hacer un evaluación y herramientas que podemos utilizar para llevar nuestros datos a la nube según cada tipo de base de datos a migrar como MariaDB, MySQL, SQL Server, Mongo, Oracle y otras.

En general, el proceso de migración de base de datos consiste en las siguientes fases:

  • Analisis de requisitos previos: conectividad, usuarios, permisos, versiones soportadas, etc.
  • Pre Migración: Evaluar la base de datos a migrar mediante algún asistente y haciendo inspección manual que nos indica cada guia según la base de datos.
  • Realizar Migracion: Si todo es correcto y no hay discrepancias o problemas detectados durante la evaluación previa se realiza la migración con la herramienta adecuda para cada base de datos.
  • Post Migración: Validar que todos los son correctos, si tenemos test ejecutarlos para asegurar que los datos se han volcado correctamente. Importante tambien validar el SKU, DTU,etc. de la base de datos en Azure para detectar problemas de rendimiento en funcion de la capa de precios seleccionada.
  • Herramientas: En la documentacion de Azure encontraremos una lista de tooling, pdf, excel, herramientas de comparación de esquemas y datos, otros «assets» para ayudarnos en los procesos de migración que recomienda Microsoft como, por ejemplo: Azure Data Studio.

Lo bueno de tener la lista de enlaces es que nos ahorra tiempo de busqueda a la hora de encontrar todos los pasos y procesos que recomienda Microsoft para cada tipo de base de datos que os comparto aqui.

Migrar Access a Azure

Migrar SQL Server a Azure

Migrar Oracle a Azure

Migrar MariaDB a Azure

Migrar MySQL a Azure

Migrar PostgreSQL a Azure

Migrar desde NoSQL a Azure

Migrar desde DB2 a Azure

Como siempre, espero que os sea de utilidad.

Azure: Error Data Factory V2 expression limit exceeded maximum ‘8192’

Esta semana realizando unas actividades con Azure DataFactory hemos encontrado un error a la hora de procesar una pipeline para la carga y movimiento de datos entre cuentas storage y bases de datos.

El error que aparecía era: «ErrorMessage=The expression limit exceeded: maximum ‘8192’ and actual ‘8280’, al principio nos despisto un poco, pero después de investigarlo os comparto el origen del problema y como solucionarlo.

Azure subscription y Data Factory limites

Como sabéis, los recursos en Azure están limitados por Microsoft para cada suscripción y evitar afectar al rendimiento de los datacenters distribuidos globalmente, por ello, existen limites para cada servicio contratado.

Lo cierto, es que muchas veces no encontramos a la primera en la documentación el detalle del error o incluso el portal de Azure no informa adecuadamente del problema para depurarlo.

Afortunadamente, Microsoft nos ofrece una pagina bastante extensa donde encontrar y consultar toda la información referente a los limites de servicios que nos sirve de ayuda para estos temas.

Azure Data Factory V2 limits

En el caso de Azure DataFactory V2 tenemos todas estas limitaciones (copia del original) y podéis encontrar en la lista «Characters per expression = 8192″

ResourceDefault limitMaximum limit
Total number of entities, such as pipelines, data sets, triggers, linked services, Private Endpoints, and integration runtimes, within a data factory5,000Contact support.
Total CPU cores for Azure-SSIS Integration Runtimes under one subscription256Contact support.
Concurrent pipeline runs per data factory that’s shared among all pipelines in the factory10,00010,000
Concurrent External activity runs per subscription per Azure Integration Runtime region
External activities are managed on integration runtime but execute on linked services, including Databricks, stored procedure, Web, and others. This limit does not apply to Self-hosted IR.
3,0003,000
Concurrent Pipeline activity runs per subscription per Azure Integration Runtime region
Pipeline activities execute on integration runtime, including Lookup, GetMetadata, and Delete. This limit does not apply to Self-hosted IR.
1,0001,000
Concurrent authoring operations per subscription per Azure Integration Runtime region
Including test connection, browse folder list and table list, preview data. This limit does not apply to Self-hosted IR.
200200
Concurrent Data Integration Units1 consumption per subscription per Azure Integration Runtime regionRegion group 12: 6,000
Region group 22: 3,000
Region group 32: 1,500
Managed virtual network2: 2,400
Region group 12: 6,000
Region group 22: 3,000
Region group 32: 1,500
Managed virtual network: Contact support.
Maximum activities per pipeline, which includes inner activities for containers4040
Maximum number of linked integration runtimes that can be created against a single self-hosted integration runtime100Contact support.
Maximum number of node that can be created against a single self-hosted integration runtime4Contact support
Maximum parameters per pipeline5050
ForEach items100,000100,000
ForEach parallelism2050
Maximum queued runs per pipeline100100
Characters per expression8,1928,192
Minimum tumbling window trigger interval5 min15 min
Maximum timeout for pipeline activity runs7 days7 days
Bytes per object for pipeline objects3200 KB200 KB
Bytes per object for dataset and linked service objects3100 KB2,000 KB
Bytes per payload for each activity run4896 KB896 KB
Data Integration Units1 per copy activity run256256
Write API calls1,200/h1,200/h

This limit is imposed by Azure Resource Manager, not Azure Data Factory.
Read API calls12,500/h12,500/h

This limit is imposed by Azure Resource Manager, not Azure Data Factory.
Monitoring queries per minute1,0001,000
Maximum time of data flow debug session8 hrs8 hrs
Concurrent number of data flows per integration runtime50Contact support.
Concurrent number of data flows per integration runtime in managed vNet20Contact support.
Concurrent number of data flow debug sessions per user per factory33
Data Flow Azure IR TTL limit4 hrs4 hrs
Meta Data Entity Size limit in a factory2 GBContact support.

La solución en nuestro caso, por temas de timming, fue rediseñar la actividad en Datafactory para hacerla más pequeña y no llegar al limite establecido.

También tenéis la posibilidad de abrir un ticket a Microsoft para aumentar la cuota del limite, aunque no siempre es posible en todos los escenarios: New support request desde el Portal de Azure

El link con todos los limites de servicios, que os recomiendo guardar en favoritos es este: https://docs.microsoft.com/en-us/azure/azure-resource-manager/management/azure-subscription-service-limits

Espero que os sea de utilidad.