Vous pouvez utiliser Alibaba Cloud CLI pour créer et configurer des tâches Data Transmission Service (DTS) dédiées à la migration, à la synchronisation, à l'abonnement et à la validation des données.
Présentation
Pour créer une tâche DTS via Alibaba Cloud CLI, procédez comme suit :
Achetez une instance DTS : appelez l'opération CreateDtsInstance pour acquérir une instance DTS du type souhaité et obtenez son ID d'instance.
Configurez la tâche DTS : appelez l'opération ConfigureDtsJob afin de définir les informations de connexion des bases de données source et de destination, ainsi que les objets à migrer ou synchroniser et d'autres paramètres.
Démarrez la tâche DTS : appelez l'opération StartDtsJob pour lancer la tâche, puis utilisez l'opération DescribeDtsJobDetail pour consulter son statut.
Les exemples présentés dans cette rubrique illustrent le transfert de données depuis une base de données source RDS for MySQL vers une base de données de destination RDS for MySQL. Ils couvrent les tâches de migration, de synchronisation, d'abonnement et de validation. Vous pouvez adapter les paramètres des bases de données source et de destination selon vos besoins.
Prérequis
Alibaba Cloud CLI est installé et configuré. Pour plus d'informations, consultez les rubriques Installer ou mettre à jour Alibaba Cloud CLI et Configurer et gérer les identifiants.
L'utilisateur RAM associé à votre AccessKey dispose des autorisations nécessaires pour gérer DTS. Pour en savoir plus, reportez-vous à la section Accorder des autorisations à un utilisateur RAM pour gérer DTS via des politiques système.
Les instances de bases de données source et de destination sont créées et les préparatifs requis pour DTS sont finalisés. Consultez la page Préparatifs pour plus de détails.
Remarques
Les paramètres
SourceRegionetDestinationRegionde l'opération CreateDtsInstance doivent correspondre aux régions de vos bases de données source et de destination.Le paramètre
Typede l'opération CreateDtsInstance indique le type de tâche. Les valeurs valides sont :MIGRATION(migration de données),SYNC(synchronisation de données) etSUBSCRIBE(abonnement aux données).Le paramètre
DbListde l'opération ConfigureDtsJob est au format JSON et spécifie les objets à migrer ou synchroniser. Pour connaître le format exact, consultez la rubrique Objets à migrer, synchroniser ou auxquels s'abonner.Les tâches de migration de données prennent uniquement en charge le mode de facturation paiement à l'utilisation. Les tâches de synchronisation et d'abonnement aux données acceptent les deux modes : paiement à l'utilisation et abonnement.
Transmettez les mots de passe des bases de données, tels que
SourceEndpointPasswordetDestinationEndpointPassword, via des variables d'environnement afin d'éviter leur exposition en texte clair dans la ligne de commande.
Créer une tâche de migration de données
L'exemple suivant crée une tâche de migration de données d'une base de données RDS for MySQL vers une autre.
Étape 1 : Acheter une instance de migration
Exécutez la commande suivante pour appeler l'opération CreateDtsInstance et acheter une instance de migration de données.
aliyun dts CreateDtsInstance \
--Type MIGRATION \
--SourceRegion cn-hangzhou \
--DestinationRegion cn-shanghai \
--SourceEndpointEngineName MySQL \
--DestinationEndpointEngineName MySQL \
--PayType PostPaid \
--InstanceClass small
Exemple de sortie :
{
"InstanceId": "dtsse7s11v26j****",
"JobId": "se7s11v26j****",
"RequestId": "E52C5BD7-AF7D-4F5D-A8F5-D3B5F0****",
"Success": true
}
Notez la valeur de InstanceId. Il s'agit de l'ID de l'instance DTS, qui servira de paramètre DtsInstanceId dans les étapes suivantes.
Étape 2 : Configurer la tâche de migration
Exécutez la commande ci-dessous pour appeler l'opération ConfigureDtsJob et configurer les bases de données source et de destination.
aliyun dts ConfigureDtsJob \
--DtsInstanceId dtsse7s11v26j**** \
--DtsJobName "rds_mysql_migration_demo" \
--JobType MIGRATION \
--SourceEndpointInstanceType RDS \
--SourceEndpointInstanceID rm-bp1imrtn6fq**** \
--SourceEndpointEngineName MYSQL \
--SourceEndpointRegion cn-hangzhou \
--SourceEndpointDatabaseName source_db \
--SourceEndpointUserName dts_user \
--SourceEndpointPassword '${SOURCE_DB_PASSWORD}' \
--DestinationEndpointInstanceType RDS \
--DestinationEndpointInstanceID rm-bp1k5v0rm3d**** \
--DestinationEndpointEngineName MYSQL \
--DestinationEndpointRegion cn-shanghai \
--DestinationEndpointDataBaseName target_db \
--DestinationEndpointUserName dts_user \
--DestinationEndpointPassword '${DEST_DB_PASSWORD}' \
--StructureInitialization true \
--DataInitialization true \
--DataSynchronization true \
--DbList '{"source_db":{"name":"source_db","all":true}}'
Exemple de sortie :
{
"RequestId": "1D234B10-5C84-4F26-B06A-3E48D2****",
"DtsJobId": "se7s11v26j****",
"ErrCode": "",
"Success": "true",
"HttpStatusCode": 200
}
Étape 3 : Démarrer la tâche de migration
Lancez la commande suivante pour appeler l'opération StartDtsJob et démarrer la tâche de migration.
aliyun dts StartDtsJob \
--DtsJobId se7s11v26j****
Exemple de sortie :
{
"RequestId": "A7B3E61D-2C2F-4B3B-A5D8-F7E49D****",
"ErrCode": "",
"Success": "true",
"HttpStatusCode": 200
}
Étape 4 : Consulter le statut de la tâche
Exécutez la commande ci-après pour appeler l'opération DescribeDtsJobDetail et vérifier le statut de la tâche de migration.
aliyun dts DescribeDtsJobDetail \
--DtsJobId se7s11v26j****
Assurez-vous que le champ Status renvoyé affiche la valeur Migrating, ce qui signifie que la tâche de migration est en cours d'exécution.
Créer une tâche de synchronisation de données
L'exemple ci-dessous crée une tâche de synchronisation de données entre deux bases de données RDS for MySQL.
Étape 1 : Acheter une instance de synchronisation
Exécutez la commande suivante pour appeler l'opération CreateDtsInstance et acheter une instance de synchronisation de données.
aliyun dts CreateDtsInstance \
--Type SYNC \
--SourceRegion cn-hangzhou \
--DestinationRegion cn-hangzhou \
--SourceEndpointEngineName MySQL \
--DestinationEndpointEngineName MySQL \
--PayType PostPaid \
--InstanceClass small \
--SyncArchitecture oneway
Exemple de sortie :
{
"InstanceId": "dtsbi6e22ay24****",
"JobId": "bi6e22ay24****",
"RequestId": "6C2FE2A1-B9D3-4E5C-8A1B-C3F28E****",
"Success": true
}
Étape 2 : Configurer la tâche de synchronisation
Utilisez la commande suivante pour appeler l'opération ConfigureDtsJob et configurer les bases de données source et de destination pour la tâche de synchronisation.
aliyun dts ConfigureDtsJob \
--DtsInstanceId dtsbi6e22ay24**** \
--DtsJobName "rds_mysql_sync_demo" \
--JobType SYNC \
--SourceEndpointInstanceType RDS \
--SourceEndpointInstanceID rm-bp1imrtn6fq**** \
--SourceEndpointEngineName MYSQL \
--SourceEndpointRegion cn-hangzhou \
--SourceEndpointDatabaseName source_db \
--SourceEndpointUserName dts_user \
--SourceEndpointPassword '${SOURCE_DB_PASSWORD}' \
--DestinationEndpointInstanceType RDS \
--DestinationEndpointInstanceID rm-bp1k5v0rm3d**** \
--DestinationEndpointEngineName MYSQL \
--DestinationEndpointRegion cn-hangzhou \
--DestinationEndpointDataBaseName target_db \
--DestinationEndpointUserName dts_user \
--DestinationEndpointPassword '${DEST_DB_PASSWORD}' \
--StructureInitialization true \
--DataInitialization true \
--DataSynchronization true \
--DbList '{"source_db":{"name":"source_db","all":true}}'
Exemple de sortie :
{
"RequestId": "8E2D3A9C-4B5F-4C6A-9D7E-A1B2C3****",
"DtsJobId": "bi6e22ay24****",
"ErrCode": "",
"Success": "true",
"HttpStatusCode": 200
}
Étape 3 : Démarrer la tâche de synchronisation
Exécutez la commande ci-dessous pour appeler l'opération StartDtsJob et lancer la tâche de synchronisation.
aliyun dts StartDtsJob \
--DtsJobId bi6e22ay24****
Étape 4 : Consulter le statut de la tâche
Lancez la commande suivante pour appeler l'opération DescribeDtsJobDetail et vérifier le statut de la tâche de synchronisation.
aliyun dts DescribeDtsJobDetail \
--DtsJobId bi6e22ay24****
Vérifiez que le champ Status de la réponse indique Synchronizing, confirmant ainsi que la tâche de synchronisation est en cours.
Créer une tâche d'abonnement aux données
L'exemple suivant crée une tâche d'abonnement aux données pour une base de données RDS for MySQL.
Étape 1 : Acheter une instance d'abonnement
Exécutez la commande suivante pour appeler l'opération CreateDtsInstance et acheter une instance d'abonnement aux données.
aliyun dts CreateDtsInstance \
--Type SUBSCRIBE \
--SourceRegion cn-hangzhou \
--DestinationRegion cn-hangzhou \
--SourceEndpointEngineName MySQL \
--PayType PostPaid \
--InstanceClass small
Exemple de sortie :
{
"InstanceId": "dtsk3m1zb527a****",
"JobId": "k3m1zb527a****",
"RequestId": "3F5A8B2C-6D7E-4A9B-8C1D-E2F3A4****",
"Success": true
}
Étape 2 : Configurer la tâche d'abonnement
Utilisez la commande ci-dessous pour appeler l'opération ConfigureSubscription et configurer la tâche d'abonnement aux données.
aliyun dts ConfigureSubscription \
--RegionId cn-hangzhou \
--DtsInstanceId dtsk3m1zb527a**** \
--DtsJobName "rds_mysql_subscribe_demo" \
--SourceEndpointInstanceType RDS \
--SourceEndpointInstanceID rm-bp1imrtn6fq**** \
--SourceEndpointEngineName MYSQL \
--SourceEndpointRegion cn-hangzhou \
--SourceEndpointDatabaseName source_db \
--SourceEndpointUserName dts_user \
--SourceEndpointPassword '${SOURCE_DB_PASSWORD}' \
--DbList '{"source_db":{"name":"source_db","all":true}}' \
--SubscriptionDataTypeDDL true \
--SubscriptionDataTypeDML true \
--SubscriptionInstanceNetworkType vpc \
--SubscriptionInstanceVPCId vpc-bp1opxu1zkhn00g**** \
--SubscriptionInstanceVSwitchId vsw-bp1s5fnvk4gn2tw****
Exemple de sortie :
{
"RequestId": "B4C5D6E7-8F9A-4B1C-2D3E-F4A5B6****",
"DtsJobId": "k3m1zb527a****",
"ErrCode": "",
"Success": "true",
"HttpStatusCode": 200
}
Le paramètre SubscriptionInstanceNetworkType est obligatoire et ne prend actuellement en charge que la valeur vpc. Lorsque vous définissez ce paramètre sur vpc, vous devez également spécifier les paramètres SubscriptionInstanceVPCId et SubscriptionInstanceVSwitchId.
Étape 3 : Démarrer la tâche d'abonnement
Exécutez la commande suivante pour appeler l'opération StartDtsJob et lancer la tâche d'abonnement.
aliyun dts StartDtsJob \
--DtsJobId k3m1zb527a****
Étape 4 : Consulter le statut de la tâche
Lancez la commande ci-après pour appeler l'opération DescribeDtsJobDetail et vérifier le statut de la tâche d'abonnement.
aliyun dts DescribeDtsJobDetail \
--DtsJobId k3m1zb527a****
Vérifiez que le champ Status de la réponse affiche la valeur Normal, indiquant que la tâche d'abonnement est active.
Créer une tâche de validation des données
Une tâche de validation des données permet de vérifier la cohérence des données entre les bases de données source et de destination après une migration ou une synchronisation. L'exemple suivant crée une tâche de validation pour une tâche de migration de données existante.
Étape 1 : Acheter une instance de validation
Exécutez la commande suivante pour appeler l'opération CreateDtsInstance et acheter une instance de validation des données.
aliyun dts CreateDtsInstance \
--Type CHECK \
--SourceRegion cn-hangzhou \
--DestinationRegion cn-shanghai \
--SourceEndpointEngineName MySQL \
--DestinationEndpointEngineName MySQL \
--PayType PostPaid \
--InstanceClass small
Exemple de sortie :
{
"InstanceId": "dtsp2w8rx6315****",
"JobId": "p2w8rx6315****",
"RequestId": "D5E6F7A8-9B0C-4D1E-2F3A-B4C5D6****",
"Success": true
}
Étape 2 : Configurer la tâche de validation
Utilisez la commande ci-dessous pour appeler l'opération ConfigureDtsJob et configurer les bases de données source et de destination pour la tâche de validation.
aliyun dts ConfigureDtsJob \
--DtsInstanceId dtsp2w8rx6315**** \
--DtsJobName "rds_mysql_check_demo" \
--JobType CHECK \
--SourceEndpointInstanceType RDS \
--SourceEndpointInstanceID rm-bp1imrtn6fq**** \
--SourceEndpointEngineName MYSQL \
--SourceEndpointRegion cn-hangzhou \
--SourceEndpointDatabaseName source_db \
--SourceEndpointUserName dts_user \
--SourceEndpointPassword '${SOURCE_DB_PASSWORD}' \
--DestinationEndpointInstanceType RDS \
--DestinationEndpointInstanceID rm-bp1k5v0rm3d**** \
--DestinationEndpointEngineName MYSQL \
--DestinationEndpointRegion cn-shanghai \
--DestinationEndpointDataBaseName target_db \
--DestinationEndpointUserName dts_user \
--DestinationEndpointPassword '${DEST_DB_PASSWORD}' \
--StructureInitialization false \
--DataInitialization true \
--DataSynchronization false \
--DbList '{"source_db":{"name":"source_db","all":true}}'
Exemple de sortie :
{
"RequestId": "E6F7A8B9-0C1D-4E2F-3A4B-C5D6E7****",
"DtsJobId": "p2w8rx6315****",
"ErrCode": "",
"Success": "true",
"HttpStatusCode": 200
}
Étape 3 : Démarrer la tâche de validation
Exécutez la commande suivante pour appeler l'opération StartDtsJob et lancer la tâche de validation.
aliyun dts StartDtsJob \
--DtsJobId p2w8rx6315****
Étape 4 : Consulter les résultats de la validation
Lancez la commande ci-après pour appeler l'opération DescribeDtsJobDetail et obtenir les résultats de la tâche de validation.
aliyun dts DescribeDtsJobDetail \
--DtsJobId p2w8rx6315****
Assurez-vous que le champ Status indique Finished, signifiant que la validation est terminée. Examinez les détails de la réponse pour déterminer si les données sont cohérentes.