Je souhaite utiliser AWS Database Migration Service (AWS DMS) pour effectuer une migration depuis une instance de base de données Amazon Relational Database Service (Amazon RDS). L'instance de base de données exécute SQL Server.
Brève description
Utilisez tout d'abord l'utilisateur principal de l'instance RDS for SQL Server pour configurer la base de données et les tables. Utilisez ensuite la console AWS DMS ou l'interface de ligne de commande AWS (AWS CLI) pour créer votre point de terminaison source. Pour plus d'informations, consultez la section Capture des modifications de données pour SQL Server autogéré sur site ou sur Amazon EC2.
Remarque : Si vous recevez des messages d'erreurs lors de l'exécution des commandes AWS CLI, vérifiez que vous utilisez la version la plus récente de l’interface de ligne de commande AWS (AWS CLI).
Résolution
Configurer la base de données et les tables
AWS DMS propose deux méthodes pour capturer les modifications en cours : MS-réplication et MS-CDC.
**Remarque :**Amazon RDS ne prend pas en charge les privilèges d'administrateur système. Cela signifie que les instances Amazon RDS qui exécutent SQL Server en tant que source doivent utiliser MS-CDC.
1. Pour activer MS-CDC au niveau de la base de données, exécutez cette commande en tant qu'utilisateur principal :
EXEC msdb.dbo.rds_cdc_enable_db 'DBName';
GO
2. Pour activer CDC au niveau de la table, exécutez cette commande pour chaque table :
EXECUTE sys.sp_cdc_enable_table @source_schema = N'SchemaName', @source_name =N'TableName', @role_name = NULL;
GO
3. Pour augmenter la durée de conservation des transactions dans T-Log, exécutez cette commande :
EXEC sys.sp_cdc_change_job @job_type = 'capture' ,@pollinginterval = 3599;
GO
Lorsque vous configurez la réplication continue pour une instance de SQL Server, il est recommandé de définir pollinginterval de manière à conserver les modifications pendant un jour (86 400 secondes). Assurez-vous qu'il y a suffisamment d'espace de stockage pour les T-logs pendant la période de conservation spécifiée. Par exemple, si votre période de conservation est de 24 heures, ajustez les valeurs de maxscans et maxtrans dans la tâche de capture. maxtrans x maxscans doit être égal au nombre moyen d'événements de table générés qu'AWS DMS réplique à partir de la base de données source pour chaque jour. Comparez cette taille totale de T-log calculée sur 24 heures avec votre espace de stockage disponible et déterminez si vous disposez de suffisamment d'espace de stockage pour le traitement des transactions.
Certaines versions de SQL Server présentent un problème connu. Si la valeur de pollinginterval est supérieure à 3 599 secondes, elle est réinitialisée à la valeur par défaut qui est de cinq secondes. Dans ce cas, les entrées du T-Log sont purgées avant qu'AWS DMS ne les lise. Pour plus d'informations sur ce problème, consultez la rubrique KB4459220 - FIX : Des résultats incorrects se produisent lorsque vous convertissez le paramètre « pollinginterval » de secondes en heures dans sys.sp_cdc_scan dans SQL Server sur le site Web de Microsoft.
Après avoir créé une tâche AWS DMS, surveillez le statut de votre tâche de migration. Si vous arrêtez la tâche et que vous la reprenez au bout d'une heure, elle risque d'échouer. Le T-Log est tronqué et AWS DMS ne possède pas les numéros de séquence de journal (LSN) requis en raison du problème mentionné précédemment. Pour éviter que ce problème ne se produise, procédez comme suit :
1. Pour arrêter la tâche de capture, exécutez cette commande :
use [DBName]
exec sys.sp_cdc_stop_job;
2. Arrêtez la tâche AWS DMS et attendez que toutes les activités restantes s'arrêtent.
3. Reprenez la tâche DMS et surveillez la latence de la source de la tâche AWS DMS pour attendre qu'elle soit synchronisée.
4. Pour redémarrer la tâche de capture, exécutez cette commande :
use [DBName]
exec sys.sp_cdc_start_job;
Créer votre point de terminaison source
Pour créer votre point de terminaison source, suivez les étapes décrites dans la section Comment créer des points de terminaison source ou cible à l'aide d'AWS DMS ?
Informations connexes
Résolution des problèmes liés à Microsoft SQL Server
Migration de bases de données Microsoft SQL Server vers AWS Cloud
Paramètres recommandés lors de l'utilisation d'Amazon RDS for SQL Server comme source pour AWS DMS
Comment puis-je résoudre les problèmes de T-Log saturé sur ma source RDS pour SQL Server lorsque la CDC est activée pour ma tâche AWS DMS ?