Effectuer une migration de bases de données à grande échelle en utilisant l’automatisation (préversion)

L’extension de migration Azure SQL dans Azure Data Studio regroupe une expérience d’évaluation, de suggestion et de migration simplifiée qui offre les fonctionnalités suivantes :

  • Mécanisme d’évaluation amélioré qui peut évaluer des instances SQL Server et identifie les bases de données prêtes à être migrées vers les différentes cibles Azure SQL.
  • Moteur de recommandation de référence SKU (préversion) qui collecte des données de performances sur l’instance SQL Server source locale et génère des recommandations de référence SKU appropriées en fonction de votre cible Azure SQL.
  • Service Azure fiable, optimisé par Azure Database Migration Service, qui orchestre les activités de déplacement de données pour offrir une expérience de migration fluide.
  • Possibilité d’exécuter des modes de migration en ligne (pour les migrations nécessitant un temps d’arrêt minime) ou hors connexion (pour les migrations dont les temps d’arrêt durent pendant toute la migration) afin de répondre à vos besoins métier.
  • Possibilité de créer et configurer un runtime d’intégration autohébergé pour fournir votre propre calcul afin d’accéder à l’instance SQL Server source et aux sauvegardes dans votre environnement local.

Avec des outils d’automatisation tels que PowerShell - Azure DataMigration Service Module ou Azure CLI, vous pouvez appliquer les fonctionnalités de l’extension de migration Azure SQL avec Azure Database Migration Service pour migrer une ou plusieurs bases de données à grande échelle (y compris les bases de données sur plusieurs instances SQL Server).

Les exemples de scripts suivants peuvent être référencés pour s’adapter à votre scénario de migration à l’aide d’Azure PowerShell ou d’Azure CLI :

Scénario de migration Langage de script
SQL Server Assessment PowerShell / Azure CLI
SQL Server vers Azure SQL Managed Instance (à l’aide d’un partage de fichiers) PowerShell / Azure CLI
SQL Server vers Azure SQL Managed Instance (à l’aide de Stockage Azure) PowerShell / Azure CLI
SQL Server vers SQL Server sur les machines virtuelles Azure (à l’aide d’un partage de fichiers) PowerShell / Azure CLI
SQL Server vers SQL Server sur les machines virtuelles Azure (à l’aide de Stockage Azure) PowerShell / Azure CLI
SQL Server vers Azure SQL Database PowerShell / Azure CLI
Recommandations de références SKU (préversion) PowerShell / Azure CLI
Automatisation de la migration de bout en bout PowerShell / Azure CLI
Automatisation de la migration de bout en bout pour plusieurs bases de données PowerShell / Azure CLI

Prérequis

Les prérequis qui sont communs à tous les scénarios de migration pris en charge avec Azure PowerShell ou Azure CLI sont les suivants :

  • Disposer d’un compte Azure affecté à l’un des rôles intégrés listés ci-dessous :

    • Contributeur pour Azure SQL Managed Instance cible, SQL Server sur Azure Machines Virtuelles ou Azure SQL Database et, Stockage compte pour charger vos fichiers de sauvegarde de base de données à partir de S Mo partage réseau (non applicable pour Azure SQL Database).
    • Rôle Lecteur pour les groupes de ressources Azure contenant l’instance managée Azure SQL, SQL Server sur Machines Virtuelles Azure ou Azure SQL Database cible.
    • Rôle de propriétaire ou de contributeur pour l’abonnement Azure.

    Important

    Le compte Azure n’est nécessaire que pendant les étapes de migration. Il n’est pas nécessaire pour l’évaluation ni pour les recommandations Azure.

  • Créer une instance managée Azure SQL cible, SQL Server sur une machine virtuelle Azure ou Azure SQL Database

    Important

    Si votre cible est Azure SQL Database, vous devez migrer le schéma de base de données de la source vers la cible à l’aide de l’extension dacpac SQL Server ou de l’extension Sql Database Projects pour Azure Data Studio.

    Si vous disposez d’une machine virtuelle Azure existante, elle doit être inscrite avec l’extension SQL IaaS Agent en mode Administration complète.

  • Si votre cible est Azure SQL Managed Instance ou SQL Server sur machines virtuelles Azure, vérifiez que les connexions utilisées pour connecter la source SQL Server sont membres du rôle serveur sysadmin ou disposent de l’autorisation CONTROL SERVER.

  • Si votre cible est Azure SQL Database, vérifiez que la connexion utilisée pour connecter le serveur SQL Source est membre, et que la db_datareader connexion pour le serveur SQL cible est db_owner.

  • Utilisez l’une des options de stockage suivantes pour la base de données complète et les fichiers de sauvegarde du journal des transactions :

    • Partage réseau SMB
    • Partage de fichiers de compte de stockage Azure ou conteneur d’objets blob

    Important

    • Si vos fichiers de sauvegarde de base de données sont fournis dans un partage réseau SMB, Créez un compte de stockage Azure qui permet au service DMS de charger les fichiers de sauvegarde de la base de données. Veillez à créer le compte de stockage Azure dans la même région que celle où l’instance d’Azure Database Migration Service est créée.
    • Assurez-vous que le conteneur d’objets blob du compte de stockage Azure est utilisé exclusivement pour stocker des fichiers de sauvegarde uniquement. Tout autre type de fichier (txt, png, jpg, etc.) interfère avec le processus de restauration, entraînant ainsi un échec.
    • Azure Database Migration Service ne lance pas les sauvegardes. Il utilise les sauvegardes existantes (qui peuvent déjà faire partie de votre plan de récupération d'urgence) pour la migration.
    • Chaque sauvegarde peut être enregistrée dans un fichier de sauvegarde distinct ou dans plusieurs fichiers de sauvegarde. Toutefois, l’ajout de plusieurs sauvegardes (par exemple, full et t-log) sur un seul support de sauvegarde n’est pas pris en charge.
    • Utilisez des sauvegardes compressées pour réduire le risque de problèmes liés à la migration de sauvegardes volumineuses.
  • Assurez-vous que le compte de service exécutant l’instance source SQL Server dispose des autorisations en lecture et en écriture sur le partage réseau SMB qui contient les fichiers de sauvegarde de base de données.

  • Le certificat d’instance SQL Server source d’une base de données protégée par Transparent Data Encryption (TDE) doit être migré vers Azure SQL Managed Instance ou le SQL Server cible sur une machine virtuelle Azure avant de migrer les données. Pour plus d’informations sur la migration des bases de données avec TDE activé, consultez Tutoriel : Migrer des bases de données avec TDE (Transparent Data Encryption) activé (préversion) vers Azure SQL dans Azure Data Studio.

    Conseil

    Si votre base de données contient des données sensibles qui sont protégées par Always Encrypted, le processus de migration à l’aide d’Azure Data Studio avec DMS migre automatiquement vos clés Always Encrypted vers votre Azure SQL Managed Instance ou SQL Server cible sur une machine virtuelle Azure.

  • Si vos sauvegardes de base de données se trouvent dans un partage de fichiers réseau, fournissez un ordinateur pour installer l’IR auto-hébergé pour accéder et migrer les sauvegardes de base de données. Les modules Azure PowerShell et Azure CLI fournissent les clés d’authentification permettant d’inscrire votre runtime d’intégration auto-hébergé. Pour préparer la migration, assurez-vous que l’ordinateur sur lequel vous prévoyez d’installer l’IR auto-hébergé possède les règles de pare-feu sortantes et les noms de domaine suivants activés :

    Noms de domaine Ports sortants Description
    Cloud public : {datafactory}.{region}.datafactory.azure.net
    ou *.frontend.clouddatahub.net
    Azure Government : {datafactory}.{region}.datafactory.azure.us
    Chine : {datafactory}.{region}.datafactory.azure.cn
    443 Requis par l’IR auto-hébergé pour se connecter au service de migration des données.
    Pour les nouvelles Data Factory créées dans le cloud public, localisez le nom de domaine complet à partir de votre clé de runtime d'intégration auto-hébergée, qui est au format {datafactory}.{region}.datafactory.azure.net. Pour une ancienne fabrique de données, si vous ne voyez pas le nom de domaine complet dans votre clé d’intégration auto-hébergée, utilisez *.frontend.clouddatahub.net à la place.
    download.microsoft.com 443 Exigé par le runtime d’intégration auto-hébergé pour télécharger les mises à jour. Si vous avez désactivé la mise à jour automatique, vous pouvez ignorer la configuration de ce domaine.
    *.core.windows.net 443 Utilisé par l’IR auto-hébergé qui se connecte au compte de stockage Azure pour charger les sauvegardes de base de données à partir de votre partage réseau

    Conseil

    Si vos fichiers de sauvegarde de base de données sont déjà fournis dans un compte de stockage Azure, l’IR auto-hébergé n’est pas requis pendant le processus de migration.

  • Lorsque vous utilisez un runtime d’intégration auto-hébergé, vérifiez que la machine sur laquelle le runtime est installé peut se connecter à l’instance SQL Server source et au partage de fichiers réseau où se trouvent les fichiers de sauvegarde.

  • Le port de sortie 445 doit être activé pour accéder au partage de fichiers réseau.

  • Si vous utilisez l’Azure Database Migration Service pour la première fois, assurez-vous que le fournisseur de ressources Microsoft.DataMigration est inscrit dans votre abonnement. Vous pouvez suivre les étapes pour inscrire le fournisseur de ressources

    Important

    Si votre cible de migration est Azure SQL Database, vous n’avez pas besoin de sauvegardes pour effectuer cette migration. La migration vers Azure SQL Database est considérée comme une migration logique impliquant la précréation de la base de données et le déplacement des données (effectués par DMS).

Automatiser les migrations de bases de données

En utilisant Az.DataMigration d’Azure PowerShell ou az datamigration d’Azure CLI, vous pouvez effectuer la migration de bases de données en automatisant la création d’Azure Database Migration Service, en configurant des migrations de bases de données pour la migration en ligne et en effectuant un basculement. Il existe plusieurs autres commandes et fonctionnalités qui sont documentées dans Exemples Azure.

Exemple d’automatisation de la migration d’une base de données SQL Server à l’aide d’Azure CLI : Étape 1 : Créer Azure Database Migration Service, qui orchestrera les activités de migration de votre base de données.

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

Étape 2 : Configurer et démarrer la migration de base de données en ligne à partir d’une instance locale de SQL Server (avec des sauvegardes dans le Stockage Azure) vers 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

Étape 3 : Effectuer un basculement de la migration une fois toutes les sauvegardes restaurées dans 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 vous recevez l’erreur « L’abonnement n’est pas inscrit pour utiliser l’espace de noms « Microsoft.DataMigration ». Consultez https://aka.ms/rps-not-found pour savoir comment inscrire des abonnements », exécutez la commande suivante :

   Register-AzResourceProvider -ProviderNamespace "Microsoft.DataMigration"

Étapes suivantes

  • Pour consulter la documentation de référence Azure PowerShell sur les migrations de bases de données SQL Server, consultez Az.DataMigration.
  • Pour consulter la documentation de référence Azure CLI sur les migrations de bases de données SQL Server, consultez az datamigration.
  • Pour accéder au dépôt de code Azure Samples, consultez data-migration-sql.