Migración de bases de datos a escala mediante automatización (versión preliminar)

La extensión Azure SQL Migration de Azure Data Studio reúne una experiencia simplificada de evaluación, migración y recomendación que ofrece las siguientes funcionalidades:

  • Un mecanismo de evaluación mejorado que puede evaluar instancias de SQL Server e identificar las bases de datos que están listas para la migración a los distintos destinos de Azure SQL.
  • Un motor de recomendaciones de SKU (versión preliminar) que recopila datos de rendimiento de la instancia de SQL Server de origen en el entorno local, lo que genera recomendaciones de SKU del tamaño correcto en función del destino de Azure SQL.
  • Un servicio de Azure confiable con tecnología de Azure Database Migration Service que orquesta las actividades de movimiento de datos para ofrecer una experiencia de migración fluida.
  • La capacidad de ejecutar modos de migración en línea (para migraciones que requieren un tiempo de inactividad mínimo) o sin conexión (para migraciones en las que el tiempo de inactividad persiste mientras dura la migración) para satisfacer los requisitos empresariales.
  • La flexibilidad para crear y configurar el entorno de ejecución de integración autohospedado a fin de proporcionar su propio proceso para el acceso a la instancia de SQL Server de origen y a las copias de seguridad del entorno local.

Con herramientas de automatización como PowerShell: módulo azure DataMigration Service o la CLI de Azure, puede aplicar las funcionalidades de la extensión de migración de Azure SQL junto con Azure Database Migration Service para migrar una o varias bases de datos a escala (incluidas las bases de datos en varias instancias de SQL Server).

Se puede hacer referencia a los siguientes scripts de ejemplo para adaptarse a su escenario de migración mediante Azure PowerShell o la CLI de Azure:

Escenario de migración Lenguaje de scripting
Evaluación de SQL Server PowerShell / CLI de Azure
De SQL Server a Azure SQL Managed Instance (mediante el recurso compartido de archivos) PowerShell / CLI de Azure
De SQL Server a Azure SQL Managed Instance (mediante almacenamiento de Azure) PowerShell / CLI de Azure
De SQL Server a SQL Server en Máquinas Virtuales de Azure (mediante un recurso compartido de archivos) PowerShell / CLI de Azure
De SQL Server a SQL Server en Máquinas Virtuales de Azure (mediante Almacenamiento de Azure) PowerShell / CLI de Azure
De SQL Server a Azure SQL Database PowerShell / CLI de Azure
Recomendaciones de SKU (versión preliminar) PowerShell / CLI de Azure
Automatización de la migración de un extremo a otro PowerShell / CLI de Azure
Automatización de la migración de un extremo a otro para varias bases de datos PowerShell / CLI de Azure

Requisitos previos

Los requisitos previos comunes a todos los escenarios de migración admitidos mediante Azure PowerShell o la CLI de Azure son:

  • Tener una cuenta de Azure que esté asignada a uno de los roles integrados que se enumeran a continuación:

    • Colaborador de la Instancia administrada de Azure SQL de destino, SQL Server en Azure Virtual Machines o Azure SQL Database y, cuenta de almacenamiento para cargar los archivos de copia de seguridad de la base de datos desde el recurso compartido de red SMB (no aplicable a Azure SQL Database).
    • Rol de lector para los grupos de recursos de Azure que contienen Azure SQL Managed Instance de destino, SQL Server en Azure Virtual Machines o Azure SQL Database.
    • Propietario y colaborador de la suscripción de Azure.

    Importante

    La cuenta de Azure solo es necesaria al configurar los pasos de migración y no hace falta para los pasos de evaluación o recomendación de Azure.

  • Creación de una instancia de Azure SQL de destino Instancia administrada, SQL Server en azure Virtual Machine o Azure SQL Database

    Importante

    Si el destino es Azure SQL Database, debe migrar el esquema de base de datos de origen a destino mediante la extensión dacpac de SQL Server o la extensión proyectos de SQL Database para Azure Data Studio.

    Si tiene una máquina virtual de Azure existente, debe registrarse con la extensión Agente de IaaS de SQL en modo de administración completa.

  • Si el destino es Azure SQL Managed Instance o SQL Server en la máquina virtual de Azure, asegúrese de que los inicios de sesión usados para conectar el SQL Server de origen son miembros del rol de servidor sysadmin o tienen CONTROL SERVER permiso.

  • Si el destino es Azure SQL Database, asegúrese de que el inicio de sesión usado para conectar el servidor SQL Server de origen es miembro y el db_datareader inicio de sesión de y para el servidor SQL server de destino es db_owner.

  • Usar una de las siguientes opciones de almacenamiento para los archivos de copia de seguridad de la base de datos completa y del registro de transacciones:

    • Recurso compartido de red SMB.
    • Recurso compartido de archivos o contenedor de blobs de la cuenta de almacenamiento de Azure.

    Importante

    • Si los archivos de copia de seguridad de la base de datos se proporcionan en un recurso compartido de red SMB, cree una cuenta de almacenamiento de Azure que permita al servicio DMS cargar los archivos de copia de seguridad de la base de datos. Asegúrese de crear la cuenta Azure Storage en la misma región en la que se creó la instancia de Azure Database Migration Service.
    • Asegúrese de que el contenedor de blobs de la cuenta de almacenamiento de Azure se usa exclusivamente para almacenar solo los archivos de copia de seguridad. Cualquier otro tipo de archivo (txt, png, jpg, etc.) interferirá con el proceso de restauración que conduce a un error.
    • Azure Database Migration Service no se inicia copias de seguridad y en su lugar usa las copias de seguridad existentes, que puede que ya tenga como parte de su plan de recuperación ante desastres, para la migración.
    • Cada copia de seguridad se puede escribir en un archivo de copia de seguridad independiente o en varios archivos de copia de seguridad. Sin embargo, no se admite la anexación de varias copias de seguridad (es decir, el registro completo y de transacciones) en un único medio de copia de seguridad.
    • Use copias de seguridad comprimidas para reducir la probabilidad de problemas asociados a la migración de copias de seguridad de gran tamaño.
  • Asegurarse de que la cuenta de servicio que ejecuta la instancia de SQL Server de origen tenga permisos de lectura y escritura en el recurso compartido de red SMB que contiene los archivos de copia de seguridad de la base de datos.

  • El certificado de la instancia de SQL Server de origen de una base de datos protegida con Cifrado de datos transparente (TDE) debe migrarse a la instancia de destino de Azure SQL Managed Instance o SQL Server en Azure Virtual Machines antes de migrar los datos. Para más información sobre la migración de bases de datos habilitadas para TDE, consulte Tutorial: Migración de bases de datos habilitadas para TDE (versión preliminar) a Azure SQL en Azure Data Studio.

    Sugerencia

    Si la base de datos contiene datos confidenciales protegidos por Always Encrypted, el proceso de migración mediante Azure Data Studio con DMS migrará automáticamente las claves de Always Encrypted a la instancia de destino de Azure SQL Managed Instance o SQL Server en Azure Virtual Machines.

  • Si las copias de seguridad de la base de datos están en un recurso compartido de archivos de red, proporcione una máquina para instalar el entorno de ejecución de integración autohospedado con el fin de acceder a las copias de seguridad de la base de datos y migrarlas. Los módulos de Azure PowerShell o la CLI de Azure proporcionan las claves de autenticación para registrar el tiempo de ejecución de integración auto-hospedada. Como preparación para la migración, asegúrese de que la máquina donde tiene previsto instalar el entorno de ejecución de integración autohospedado tenga habilitados los siguientes nombres de dominio y reglas de firewall de salida:

    Nombres de dominio Puertos de salida Descripción
    Nube pública: {datafactory}.{region}.datafactory.azure.net
    o bien *.frontend.clouddatahub.net
    Azure Government: {datafactory}.{region}.datafactory.azure.us
    China: {datafactory}.{region}.datafactory.azure.cn
    443 El entorno de ejecución de integración autohospedado lo necesita para conectarse al servicio Data Migration.
    Para las nuevas factorías de datos creadas en la nube pública, busque el FQDN en la clave del entorno de ejecución de integración autohospedado, que tiene el formato {datafactory}.{region}.datafactory.azure.net. En el caso de factorías de datos antiguas, si no ve el FQDN en la clave del entorno de ejecución de integración autohospedado, use *.frontend.clouddatahub.net.
    download.microsoft.com 443 Lo necesita el entorno de ejecución de integración autohospedado para descargar las actualizaciones. Si ha deshabilitado la actualización automática, puede omitir la configuración de este dominio.
    *.core.windows.net 443 Lo utiliza el entorno de ejecución de integración autohospedado que se conecta a la cuenta de almacenamiento de Azure para cargar las copias de seguridad de la base de datos desde el recurso compartido de red.

    Sugerencia

    Si los archivos de copia de seguridad de la base de datos ya se proporcionan en una cuenta de almacenamiento de Azure, no se necesita el entorno de ejecución de integración autohospedado durante el proceso de migración.

  • Cuando use el entorno de ejecución de integración autohospedado, asegúrese de que la máquina donde está instalado el entorno de ejecución pueda conectarse a la instancia de SQL Server de origen y al recurso compartido de archivos de red en el que se encuentran los archivos de copia de seguridad.

  • El puerto 445 de salida debe estar habilitado para acceder al recurso compartido de archivos de red.

  • Si es la primera vez que usa Azure Database Migration Service, asegúrese de que el proveedor de recursos Microsoft.DataMigration esté registrado en su suscripción. Puede seguir los pasos para registrar el proveedor de recursos.

    Importante

    Si el destino de la migración es Azure SQL Database, no necesita copias de seguridad para realizar esta migración. La migración a Azure SQL Database se considera una migración lógica que implica la creación previa de la base de datos y el movimiento de datos (que realiza DMS).

Automatización de migraciones de bases de datos

Con Az.DataMigration de Azure PowerShell o az datamigration de la CLI de Azure puede migrar bases de datos mediante la automatización de la creación de Azure Database Migration Service, la configuración de migraciones de base de datos para la migración en línea y la realización de una migración total. Hay varios comandos y funcionalidades más documentados en Ejemplos de Azure.

Ejemplo de automatización de la migración de una base de datos de SQL Server mediante la CLI de Azure: Paso 1: Creación de Azure Database Migration Service, que organizará las actividades de migración de la base de datos.

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

Paso 2: configurar e iniciar la migración de la base de datos en línea del SQL Server local (con copias de seguridad en Azure Storage) a Azure SQL Managed Instance.

#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

Paso 3: realizar una migración total una vez restauradas todas las copias de seguridad a Azure SQL Managed Instance.

#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

Si recibe el error "La suscripción no está registrada para usar el espacio de nombres "Microsoft.DataMigration". Consulte https://aka.ms/rps-not-found para obtener información sobre cómo registrar suscripciones", ejecute el siguiente comando:

   Register-AzResourceProvider -ProviderNamespace "Microsoft.DataMigration"

Pasos siguientes

  • Para obtener documentación de referencia sobre Azure PowerShell para migraciones de bases de datos SQL Server, consulte Az.DataMigration.
  • Para obtener documentación de referencia sobre la CLI de Azure para migraciones de bases de datos SQL Server, consulte az datamigration.
  • Para el repositorio de código de ejemplos de Azure, consulte data-migration-sql