Tous les produits
Search
Centre de documentation

Data Transmission Service:Synchroniser des données d'une instance ApsaraDB RDS for MySQL vers un projet MaxCompute

Dernière mise à jour :Aug 10, 2026

Utilisez Data Transmission Service (DTS) pour synchroniser en continu les données d'une instance ApsaraDB RDS for MySQL vers un projet MaxCompute. DTS gère l'intégralité du pipeline : réplication du schéma, chargement des données historiques et capture continue des modifications de données (CDC). Vous pouvez ainsi mettre en place un système d'analyse en temps réel sans gérer le pipeline vous-même.

Ce que vous allez faire

  1. Configurez les prérequis (projet MaxCompute, liste d'autorisation IP, AccessKey).

  2. Configurez les connexions source et de destination dans DTS.

  3. Sélectionnez les objets et définissez les options de synchronisation.

  4. Exécutez une prévérification, puis achetez et démarrez l'instance.

Facturation

Type de synchronisation Coût
Synchronisation du schéma et synchronisation complète des données Gratuit
Synchronisation incrémentielle des données Payant. Consultez la page Présentation de la facturation.

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

Au lieu d'utiliser la clé AccessKey du compte racine, vous pouvez créer un utilisateur RAM et le définir comme super administrateur du projet MaxCompute .

Fonctionnement

DTS synchronise les données en trois phases séquentielles :

  1. Synchronisation du schéma — DTS réplique les schémas de table de la base de données source vers MaxCompute, en ajoutant le suffixe _base à chaque nom de table. Par exemple, la table source customer devient customer_base dans MaxCompute.

  2. Synchronisation complète des données — DTS charge toutes les données historiques de la source dans les tables _base (appelées tables de référence complètes). Cet instantané sert de point de départ pour la synchronisation incrémentielle.

  3. Synchronisation incrémentielle des données — DTS crée une table _log correspondante pour chaque table synchronisée (par exemple, customer_log) et y écrit en continu les événements de modification issus du journal binaire de la source.

Pour connaître le schéma de la table _log, consultez la section Schéma de la table de données incrémentielles.

Opérations SQL prises en charge pour la synchronisation incrémentielle

Type d'opération Instructions
LMD (Langage de manipulation de données) INSERT, UPDATE, DELETE
LDD (Langage de définition de données) ADD COLUMN (l'ajout de colonne avec attributs n'est pas pris en charge)
DTS ne synchronise pas les clés étrangères. Les opérations en cascade et les suppressions effectuées sur la source ne sont pas répercutées sur la destination.

Autorisations requises

Le compte de base de données de l'instance ApsaraDB RDS for MySQL source doit disposer des autorisations en lecture et en écriture. Consultez les rubriques Créer un compte et Modifier les autorisations d'un compte.

Si le compte n'a pas été créé via la console ApsaraDB RDS for MySQL, accordez-lui les privilèges suivants : REPLICATION CLIENT, REPLICATION SLAVE, SHOW VIEW et SELECT.

Limitations

Exigences relatives à la base de données source

  • Les tables doivent posséder une contrainte PRIMARY KEY ou UNIQUE garantissant l'unicité de tous les champs. Sans cette contrainte, la destination risque de contenir des enregistrements en double.

  • Lors de la synchronisation de tables impliquant un renommage de colonnes ou de tables, une seule tâche prend en charge jusqu'à 1 000 tables. Si vous exécutez une tâche synchronisant plus de 1 000 tables, une erreur de requête se produit. Utilisez plusieurs tâches ou effectuez la synchronisation au niveau de la base de données.

  • N'exécutez pas d'instructions LDD pendant la synchronisation du schéma ou la synchronisation complète des données, sous peine d'échec de la tâche.

  • Les données générées par des opérations en cascade ou par la restauration d'une sauvegarde physique ne sont pas synchronisées.

  • Si la source exécute MySQL 8.0.23 ou une version ultérieure et que les tables contiennent des colonnes invisibles, ces colonnes sont exclues, ce qui entraîne une perte de données. Exécutez l'instruction ALTER TABLE <table_name> ALTER COLUMN <column_name> SET VISIBLE; pour les rendre visibles avant de démarrer la tâche. Les tables sans clé primaire reçoivent automatiquement des clés primaires invisibles ; rendez-les également visibles. Consultez les pages Invisible Columns et Generated Invisible Primary Keys.

Exigences relatives au journal binaire

Configurez les paramètres MySQL suivants avant de créer la tâche :

Paramètre Valeur requise S'applique à
binlog_row_image full ApsaraDB RDS for MySQL et MySQL autogéré
binlog_format row MySQL autogéré uniquement
log_slave_updates ON MySQL autogéré dans un cluster à deux nœuds principaux

Exigences de rétention des journaux binaires :

  • ApsaraDB RDS for MySQL : conservez les journaux binaires pendant au moins 3 jours ; 7 jours sont recommandés.

  • MySQL autogéré : conservez les journaux binaires pendant au moins 7 jours.

Si les journaux binaires sont purgés avant que DTS ne puisse les lire, la tâche échoue et des incohérences ou pertes de données peuvent survenir. Consultez la page Supprimer les fichiers de journal binaire pour savoir comment définir la période de rétention.

Important

Pour MySQL autogéré, vous devez également activer explicitement la journalisation binaire. Pour MySQL autogéré dans un cluster à deux nœuds principaux, définissez le paramètre log_slave_updates sur ON afin que DTS puisse lire tous les journaux binaires. Consultez la page Créer un compte pour une base de données MySQL autogérée et configurer la journalisation binaire.

Autres limitations

  • Effectuez la synchronisation pendant les heures creuses. La synchronisation complète des données utilise les ressources en lecture et en écriture de la source et de la destination, ce qui augmente la charge du serveur.

  • Une fois la synchronisation complète des données terminée, l'espace de table de la destination est plus volumineux que celui de la source en raison de la fragmentation causée par les opérations INSERT concurrentes.

  • N'exécutez pas l'outil pt-online-schema-change ni d'autres outils LDD en ligne similaires sur les objets synchronisés pendant l'exécution de la tâche, sous peine d'échec.

  • L'écriture de données provenant d'autres sources dans la destination pendant la synchronisation peut provoquer des incohérences de données.

  • Si EncDB est activé sur la source, la synchronisation complète des données n'est pas prise en charge. Le chiffrement transparent des données (TDE) n'est pas soumis à cette restriction : les instances TDE prennent en charge la synchronisation du schéma, complète et incrémentielle.

  • En cas d'échec d'une tâche DTS, l'assistance technique DTS tente de la restaurer dans un délai de 8 heures. Pendant cette période, la tâche peut être redémarrée et ses paramètres (et non ceux de la base de données) peuvent être modifiés.

Cas particuliers pour MySQL autogéré

  • Un basculement principal/secondaire pendant l'exécution de la tâche provoque son échec.

  • La latence de synchronisation est calculée à partir de l'horodatage des dernières données synchronisées dans la destination par rapport à l'horodatage actuel de la source. Si aucune opération LMD n'est exécutée sur la source pendant une période prolongée, la latence affichée peut être inexacte. Pour l'actualiser, exécutez n'importe quelle opération LMD sur la source. Si vous synchronisez une base de données entière, créez une table de heartbeat qui reçoit des mises à jour chaque seconde.

  • DTS exécute périodiquement l'instruction CREATE DATABASE IF NOT EXISTS 'test' sur la source pour faire avancer la position du journal binaire.

Cas particuliers pour ApsaraDB RDS for MySQL

  • Les instances ApsaraDB RDS for MySQL 5.6 en lecture seule qui n'enregistrent pas les journaux de transactions ne peuvent pas servir de source.

  • DTS exécute périodiquement l'instruction CREATE DATABASE IF NOT EXISTS 'test' sur la source pour faire avancer la position du journal binaire.

Créer une tâche de synchronisation de données

Étape 1 : Ouvrir la page Synchronisation des données

Utilisez l'une des consoles suivantes pour accéder à la page de configuration de la tâche.

Console DTS

  1. Connectez-vous à la console DTS.

  2. Dans le volet de navigation de gauche, cliquez sur Data Synchronization.

  3. Dans le coin supérieur gauche, sélectionnez la région où résidera l'instance de synchronisation.

Console DMS

Le chemin de navigation exact dépend du mode et de la disposition de votre console DMS. Consultez les pages Mode simple et Personnaliser la disposition et le style de la console DMS .
  1. Connectez-vous à la console DMS.

  2. Dans la barre de navigation supérieure, placez le pointeur sur Data + AI et choisissez DTS (DTS) > Data Synchronization.

  3. Dans la liste déroulante à droite de Data Synchronization Tasks, sélectionnez la région.

Étape 2 : Configurer les bases de données source et de destination

Cliquez sur Create Task, puis configurez les paramètres suivants.

Section Paramètre Description
N/A Nom de la tâche Nom de la tâche. DTS en génère un automatiquement. Spécifiez un nom descriptif pour faciliter l'identification ; l'unicité n'est pas requise.
Base de données source Sélectionner une connexion existante Sélectionnez une instance de base de données enregistrée pour remplir automatiquement les paramètres, ou configurez la connexion manuellement.
Type de base de données Sélectionnez MySQL.
Méthode d'accès Sélectionnez Alibaba Cloud Instance.
Région de l'instance Région de l'instance ApsaraDB RDS for MySQL source.
Répliquer les données entre les comptes Alibaba Cloud Sélectionnez No (scénario de même compte).
ID de l'instance RDS ID de l'instance source.
Compte de base de données Compte disposant des autorisations requises. Consultez la section Autorisations requises.
Mot de passe de la base de données Mot de passe du compte de base de données.
Chiffrement Sélectionnez Non-encrypted ou SSL-encrypted. Pour SSL, activez d'abord le chiffrement SSL sur l'instance RDS. Consultez la page Utiliser un certificat cloud pour activer le chiffrement SSL.
Base de données de destination Sélectionner une connexion existante Sélectionnez une instance enregistrée ou configurez manuellement.
Type de base de données Sélectionnez MaxCompute.
Méthode d'accès Sélectionnez Alibaba Cloud Instance.
Région de l'instance Région du projet MaxCompute.
Projet Nom du projet MaxCompute de destination.
ID de clé AccessKey du compte Alibaba Cloud ID de clé AccessKey du compte propriétaire du projet MaxCompute.
Secret de clé AccessKey du compte Alibaba Cloud

Étape 3 : Tester la connectivité

Cliquez sur Test Connectivity and Proceed en bas de la page.

DTS nécessite un accès aux deux bases de données. Si vous vous connectez à une base de données autogérée, les blocs CIDR de DTS doivent être ajoutés à ses paramètres de sécurité. Consultez la page Ajouter les blocs CIDR des serveurs DTS . Pour les bases de données autogérées n'utilisant pas l'accès Alibaba Cloud Instance , cliquez sur Test Connectivity dans la boîte de dialogue CIDR Blocks of DTS Servers .

Cliquez sur OK pour accorder des autorisations à votre compte MaxCompute, puis cliquez sur Test Connectivity and Proceed.

Étape 4 : Configurer les objets

À l'étape Configure Objects, définissez les paramètres suivants.

Paramètre Description
Synchronization Types Sélectionnez Schema Synchronization, Full Data Synchronization et Incremental Data Synchronization. La synchronisation complète des données charge les données historiques avant le début de la synchronisation incrémentielle.
Naming Rules of Additional Columns DTS ajoute des colonnes de métadonnées aux tables de destination. Si celles-ci entrent en conflit avec des noms de colonnes existants, la tâche échoue. Sélectionnez New Rule ou Previous Rule selon votre configuration. Vérifiez l'absence de conflits avant de poursuivre. Consultez la rubrique Règles de dénomination des colonnes supplémentaires.
Partition Definition of Incremental Data Table Sélectionnez les noms de partition selon vos besoins. Consultez la rubrique Partition.
Processing Mode of Conflicting Tables Precheck and Report Errors (par défaut) : échoue la prévérification si la destination contient des tables portant les mêmes noms que la source. Ignore Errors and Proceed : ignore cette vérification. À utiliser avec prudence : si les schémas diffèrent, seules certaines colonnes peuvent être synchronisées ou la tâche peut échouer. Si les schémas correspondent et qu'un enregistrement possède la même clé primaire ou unique, la synchronisation complète conserve l'enregistrement existant dans la destination ; la synchronisation incrémentielle l'écrase.
Capitalization of Object Names in Destination Instance Contrôle la casse des noms de base de données, de tables et de colonnes dans MaxCompute. Par défaut : DTS default policy. Consultez la page Spécifier la casse des noms d'objets dans l'instance de destination.
Source Objects Sélectionnez les objets et cliquez sur l'icône de flèche pour les déplacer vers Selected Objects. Vous pouvez sélectionner des tables.
Selected Objects Cliquez avec le bouton droit sur un objet pour le renommer ou filtrer les opérations SQL à synchroniser. Pour renommer plusieurs objets, cliquez sur Batch Edit. Pour filtrer les lignes, cliquez avec le bouton droit sur une table et spécifiez les conditions WHERE. Consultez les pages Mapper les noms d'objets et Spécifier les conditions de filtrage.
Le renommage d'un objet via le mappage de nom d'objet peut entraîner l'échec de la synchronisation des objets dépendants.

Étape 5 : Configurer les paramètres avancés

Cliquez sur Next: Advanced Settings et configurez les paramètres suivants.

Paramètre Description
Dedicated Cluster for Task Scheduling Par défaut, DTS planifie les tâches sur le cluster partagé. Pour une stabilité accrue, achetez un cluster dédié. Consultez la page Qu'est-ce qu'un cluster dédié DTS ?.
Retry Time for Failed Connections Durée pendant laquelle DTS réessaie en cas d'échec de connexion. Valeurs valides : 10 à 1 440 minutes. Par défaut : 720 minutes. Définissez une valeur d'au moins 30 minutes. Si plusieurs tâches partagent une source ou une destination, la durée de nouvelle tentative la plus courte s'applique. Pendant les nouvelles tentatives, DTS facture l'instance.
Retry Time for Other Issues Durée pendant laquelle DTS réessaie en cas d'échec des opérations LMD ou LDD. Valeurs valides : 1 à 1 440 minutes. Par défaut : 10 minutes. Définissez une valeur d'au moins 10 minutes. Cette valeur doit être inférieure à Retry Time for Failed Connections.
Enable Throttling for Full Data Synchronization Limitez les QPS (requêtes par seconde) vers la source, le RPS de la migration complète des données et la vitesse de migration des données (Mo/s) pour réduire la charge. Disponible uniquement si Full Data Synchronization est sélectionné.
Enable Throttling for Incremental Data Synchronization Limitez le RPS et la vitesse de synchronisation des données (Mo/s) pour la synchronisation incrémentielle afin de réduire la charge sur la destination.
Environment Tag Tag facultatif permettant d'identifier l'instance DTS par environnement (par exemple, production ou test).
Whether to delete SQL operations on heartbeat tables of forward and reverse tasks Yes : DTS n'écrit pas les opérations de la table de heartbeat dans la source. Une lecture de latence peut s'afficher. No : DTS écrit les opérations de heartbeat, ce qui peut affecter la sauvegarde physique et le clonage de la source.
Configure ETL Yes : active l'extraction, la transformation et le chargement (ETL). Saisissez les instructions de traitement dans l'éditeur de code. Consultez la page Configurer ETL dans une tâche de migration ou de synchronisation de données. No : désactive ETL.
Monitoring and Alerting Yes : configure des alertes en cas d'échec de la tâche ou si la latence dépasse un seuil. Définissez le seuil et les contacts de notification. Consultez la page Configurer la surveillance et les alertes. No : désactive les alertes.

Étape 6 : Exécuter la prévérification

Cliquez sur Next: Save Task Settings and Precheck.

Pour prévisualiser les paramètres API de cette configuration de tâche, survolez le bouton et cliquez sur Preview OpenAPI parameters avant de poursuivre.

DTS exécute une prévérification avant le démarrage de la tâche.

  • Si un élément échoue, cliquez sur View Details pour en connaître la cause. Corrigez le problème, puis cliquez sur Precheck Again.

  • Si un élément déclenche une alerte ignorables, cliquez sur Confirm Alert Details, puis sur Ignore dans la boîte de dialogue, et enfin sur OK. Cliquez sur Precheck Again pour continuer. Ignorer les alertes peut entraîner des incohérences de données.

Étape 7 : Acheter et démarrer l'instance

  1. Attendez que le Success Rate atteigne 100 %, puis cliquez sur Next: Purchase Instance.

  2. Sur la page d'achat, configurez les paramètres suivants.

Paramètre Description
Billing Method Subscription : paiement anticipé pour une durée fixe. Plus rentable pour une utilisation à long terme. Pay-as-you-go : facturation horaire. Adapté à une utilisation à court terme ; libérez l'instance une fois l'utilisation terminée pour arrêter la facturation.
Resource Group Settings Groupe de ressources de l'instance. Par défaut : default resource group. Consultez la page Qu'est-ce que Resource Management ?
Instance Class Détermine la vitesse de synchronisation. Consultez la page Classes d'instance des instances de synchronisation de données.
Subscription Duration Disponible pour la méthode de facturation par abonnement. Options : 1 à 9 mois, 1 an, 2 ans, 3 ans ou 5 ans.
  1. Lisez et acceptez les Data Transmission Service (Pay-as-you-go) Service Terms.

  2. Cliquez sur Buy and Start. Dans la boîte de dialogue de confirmation, cliquez sur OK.

La tâche apparaît dans la liste des tâches. Vous pouvez y surveiller sa progression.

Schéma de la table de données incrémentielles

Avant d'interroger la table de données incrémentielles, exécutez la commande suivante dans MaxCompute pour autoriser les analyses complètes de table :

set odps.sql.allow.fullscan=true;

Chaque table _log stocke les événements de modification de la source. En plus des données de colonne d'origine, DTS ajoute les champs de métadonnées suivants à chaque ligne :

Champ Description
record_id Identifiant unique de l'entrée de journal. Incrémentation automatique pour chaque nouvelle entrée. Pour les opérations UPDATE, DTS génère deux entrées (avant et après la modification) partageant le même record_id.
operation_flag Type d'opération : I (INSERT), D (DELETE), U (UPDATE).
utc_timestamp Horodatage de l'opération en UTC, correspondant à l'horodatage du fichier de journal binaire.
before_flag Y si la ligne contient les valeurs avant mise à jour ; N sinon.
after_flag Y si la ligne contient les valeurs après mise à jour ; N sinon.

Lecture des événements UPDATE : DTS écrit deux lignes pour chaque UPDATE : une avec before_flag=Y (valeurs d'origine) et une avec after_flag=Y (nouvelles valeurs). Les deux lignes partagent le même record_id.

Étapes suivantes