Utilisez Data Transmission Service (DTS) pour migrer des données d'un cluster PolarDB for MySQL vers un projet MaxCompute. DTS prend en charge la migration de schéma, la migration complète des données et la migration incrémentielle des données, couvrant ainsi les données historiques et les modifications en cours.
Fonctionnement
DTS utilise un pipeline en trois étapes pour transférer les données de PolarDB for MySQL vers MaxCompute :
Schema migration : DTS lit les schémas des tables sources et crée les tables correspondantes dans MaxCompute, en ajoutant le suffixe
_baseà chaque nom de table. Par exemple, la tablecustomerdevientcustomer_basedans MaxCompute.Full data migration : DTS copie toutes les lignes existantes de chaque table source vers la table
_basecorrespondante dans MaxCompute. Ces tables sont appelées tables de référence complètes et servent de point de départ pour la synchronisation incrémentielle.Incremental data migration : DTS crée une table
_logdistincte pour chaque table migrée (par exemple,customer_log) et diffuse en temps réel les opérations INSERT, UPDATE et DELETE continues depuis les journaux binaires de la source vers ces tables.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Un service MaxCompute activé et un projet MaxCompute. Consultez les rubriques Activer MaxCompute et DataWorks et Créer un projet MaxCompute.
Une liste d'autorisation d'adresses IP configurée sur le projet MaxCompute pour autoriser l'accès à DTS. Consultez la rubrique Configurer une liste d'autorisation d'adresses IP pour autoriser l'accès des services Alibaba Cloud à MaxCompute.
Une paire AccessKey pour le compte Alibaba Cloud propriétaire du projet MaxCompute de destination. Consultez la rubrique Créer une paire AccessKey.
Au lieu d'utiliser la paire AccessKey du compte principal, créez un utilisateur RAM et définissez-le comme super administrateur pour le projet MaxCompute .
Limites
Conditions bloquant la tâche (à résoudre avant de commencer)
Ces conditions entraînent l'échec de la tâche de migration :
Le serveur sur lequel la base de données source est déployée doit disposer d'une bande passante sortante suffisante. Dans le cas contraire, la vitesse de migration des données diminue.
Les tables à migrer doivent posséder une contrainte PRIMARY KEY ou UNIQUE avec tous les champs uniques. Sans cela, la destination peut contenir des enregistrements en double.
Si vous sélectionnez des tables comme objets de migration et devez renommer des tables ou des colonnes, une seule tâche prend en charge jusqu'à 1 000 tables. Les tâches comportant plus de 1 000 tables dans ce mode renvoient une erreur de requête. Configurez plusieurs tâches ou effectuez la migration au niveau de la base de données.
Pour la migration incrémentielle des données, la journalisation binaire doit être activée et le paramètre
loose_polar_log_bindoit être défini suron. Si la journalisation binaire n'est pas activée, la prévérification échoue et la tâche ne peut pas démarrer. Consultez les rubriques Activer la journalisation binaire et Modifier les paramètres.N'exécutez pas d'instructions DDL pour modifier les schémas de base de données ou de tables pendant la migration de schéma ou la migration complète des données. La tâche de migration échoue si les schémas changent en cours de tâche.
N'utilisez pas d'outils tels que
pt-online-schema-changepour les opérations DDL en ligne sur les objets en cours de migration. La tâche de migration échoue.
L'activation de la journalisation binaire sur un cluster PolarDB for MySQL entraîne des frais de stockage pour les fichiers journaux binaires.
Risques liés à l'intégrité des données (à examiner avant de commencer)
Ces conditions peuvent provoquer une incohérence ou une perte de données :
Les journaux binaires doivent être conservés pendant au moins 3 jours ; il est recommandé de les conserver pendant 7 jours par sécurité. Si DTS ne peut pas lire les journaux binaires, la tâche échoue. Dans des cas exceptionnels, une incohérence ou une perte de données peut survenir. Une conservation des journaux inférieure à la durée requise signifie que l'accord de niveau de service (SLA) pour DTS peut ne pas s'appliquer. Consultez la rubrique Modifier la période de conservation.
N'écrivez pas de données dans la base de données source lors d'une migration complète uniquement (migration de schéma + migration complète des données sans migration incrémentielle). L'écriture dans la source pendant cette phase provoque une incohérence des données. Pour écrire en toute sécurité dans la source pendant la migration, incluez la migration incrémentielle des données.
N'écrivez pas de données provenant d'autres sources dans le projet MaxCompute de destination pendant la migration. Les écritures externes provoquent une incohérence des données.
MaxCompute ne prend pas en charge les contraintes de clé primaire. En cas d'erreurs réseau, DTS peut écrire des enregistrements en double dans le projet MaxCompute.
DTS réessaie les tâches ayant échoué pendant une durée maximale de 7 jours. Avant de basculer les charges de travail vers la destination, arrêtez ou libérez les tâches ayant échoué. Vous pouvez également révoquer les autorisations d'écriture des comptes DTS sur la destination. À défaut, les données sources écraseront les données de destination lors de la reprise d'une tâche ayant échoué.
Limites opérationnelles
DTS ne migre pas les nœuds en lecture seule du cluster PolarDB for MySQL source.
DTS ne migre pas les tables externes Object Storage Service (OSS) du cluster PolarDB for MySQL source.
DTS ne migre pas les clés étrangères. Les opérations de cascade et de suppression dépendant des clés étrangères ne sont pas répliquées vers la destination.
Effectuez la migration des données pendant les heures creuses. La migration complète des données utilise les ressources de lecture et d'écriture à la fois sur la source et la destination, ce qui augmente la charge sur les deux serveurs de base de données.
Après la migration complète des données, l'espace de table de destination est plus grand que celui de la source car les opérations INSERT simultanées provoquent une fragmentation des tables.
En cas de panne d'une instance DTS, l'équipe d'assistance DTS tente une récupération dans un délai de 8 heures. La récupération peut impliquer le redémarrage de l'instance ou l'ajustement des paramètres de l'instance DTS (et non des paramètres de la base de données). Pour connaître les paramètres pouvant être modifiés, consultez la rubrique Modifier les paramètres de l'instance.
La migration de données de type VECTOR n'est pas prise en charge.
Facturation
|
Type de migration |
Frais de configuration de tâche |
Frais de trafic Internet |
|
Migration de schéma et migration complète des données |
Gratuit |
Gratuit, sauf si Access Method est défini sur Public IP Address. Consultez la rubrique Aperçu de la facturation. |
|
Migration incrémentielle des données |
Facturé. Consultez la rubrique Aperçu de la facturation. |
— |
Opérations SQL prises en charge pour la migration incrémentielle
|
Type d'opération |
Instructions SQL |
|
DML |
INSERT, UPDATE, DELETE |
|
DDL |
ADD COLUMN |
Les opérations ADD COLUMN qui incluent des colonnes d'attribut ne peuvent pas être migrées.
Autorisations de compte de base de données requises
|
Base de données |
Autorisations requises |
Comment accorder |
|
PolarDB for MySQL |
Autorisations de lecture sur les objets à migrer |
Créer et gérer des comptes de base de données et Gérer les mots de passe des comptes de base de données |
Créer une tâche de migration
Étape 1 : Accéder à la page Data Migration
Utilisez la console DTS ou la console DMS.
Console DTS
Connectez-vous à la console DTS.console DTS
Dans le volet de navigation de gauche, cliquez sur Data Migration.
Dans l'angle supérieur gauche, sélectionnez la région où sera hébergée l'instance de migration.
Console DMS
Remarque
La disposition de la console DMS varie selon le mode utilisé. Consultez les rubriques Simple mode et Customize the layout and style of the DMS console.
Connectez-vous à la console DMS.console DMS
Dans la barre de navigation supérieure, placez le pointeur sur Data + AI > DTS (DTS) > Data Migration.
Dans la liste déroulante située à côté de Data Migration Tasks, sélectionnez la région où sera hébergée l'instance de migration.
Étape 2 : Configurer les bases de données source et de destination
Cliquez sur Create Task.
Configurez les paramètres suivants.
Général
|
Paramètre |
Description |
|
Task Name |
Nom de la tâche DTS. DTS génère un nom par défaut. Spécifiez un nom descriptif pour identifier facilement la tâche. Les noms de tâches n'ont pas besoin d'être uniques. |
Base de données source
|
Paramètre |
Description |
|
Select Existing Connection |
Si la base de données source est déjà enregistrée dans DTS, sélectionnez-la dans la liste déroulante. DTS remplit automatiquement les champs restants. Sinon, configurez les champs ci-dessous. Dans la console DMS, effectuez votre sélection depuis Select a DMS database instance. |
|
Database Type |
Sélectionnez PolarDB for MySQL. |
|
Access Method |
Sélectionnez Alibaba Cloud Instance. |
|
Instance Region |
Région où réside le cluster PolarDB for MySQL source. |
|
Replicate Data Across Alibaba Cloud Accounts |
Sélectionnez No lors d'une migration au sein du même compte Alibaba Cloud. |
|
PolarDB Cluster ID |
ID du cluster PolarDB for MySQL source. |
|
Database Account |
Compte de base de données pour le cluster source. Consultez la section Autorisations requises pour le compte de base de données. |
|
Database Password |
Mot de passe du compte de base de données. |
|
Encryption |
Indique s'il faut chiffrer la connexion à la base de données source. Consultez la rubrique Configurer le chiffrement SSL. |
Base de données de destination
|
Paramètre |
Description |
|
Select Existing Connection |
Si le projet MaxCompute de destination est déjà enregistré dans DTS, sélectionnez-le dans la liste déroulante. Sinon, configurez les champs ci-dessous. |
|
Database Type |
Sélectionnez MaxCompute. |
|
Access Method |
Sélectionnez Alibaba Cloud Instance. |
|
Instance Region |
Région où réside le projet MaxCompute de destination. |
|
Project |
Nom du projet MaxCompute de destination. |
|
AccessKey ID of Alibaba Cloud Account |
ID AccessKey issu de la paire de clés AccessKey que vous avez préparée dans les prérequis. |
|
AccessKey Secret of Alibaba Cloud Account |
Secret AccessKey issu de la paire de clés AccessKey. |
Cliquez sur Test Connectivity and Proceed.
Assurez-vous que les plages CIDR des serveurs DTS sont ajoutées aux paramètres de sécurité des bases de données source et de destination. DTS peut les ajouter automatiquement, ou vous pouvez les ajouter manuellement. Consultez la rubrique Ajouter les adresses IP des serveurs DTS à une liste d'autorisation .
Cliquez sur OK pour accorder à DTS les autorisations sur le projet MaxCompute. Cliquez ensuite sur Test Connectivity and Proceed.
Étape 3 : Configurer les objets de migration
Sur la page Configure Objects, définissez les paramètres suivants.
Migration types
|
Paramètre |
Description |
|
Migration Types |
Sélectionnez les types de migration en fonction de votre cas d'utilisation : <br>- Schema Migration + Full Data Migration : migre uniquement les données historiques. La tâche se termine et s'arrête automatiquement.<br>- Schema Migration + Full Data Migration + Incremental Data Migration : migre les données historiques et réplique les modifications en cours en temps réel. La tâche s'exécute en continu jusqu'à ce que vous l'arrêtiez. |
Si vous ignorez Schema Migration , créez manuellement la base de données et les tables de destination avant de démarrer la tâche, et activez le mappage des noms d'objets dans Selected Objects .
Si vous ignorez Incremental Data Migration , n'écrivez pas dans la base de données source pendant la migration afin d'éviter toute incohérence des données.
Configuration des tables
|
Paramètre |
Description |
|
Naming Rules of Additional Columns |
Après la migration, DTS ajoute des colonnes supplémentaires à la table de destination. Si le nom d'une colonne ajoutée entre en conflit avec une colonne existante, la tâche échoue. Sélectionnez New Rule ou Previous Rule en fonction de votre configuration. Vérifiez l'absence de conflits de noms avant de sélectionner. Consultez la rubrique Règles de nommage pour les colonnes supplémentaires. |
|
Partition Definition of Incremental Data Table |
Sélectionnez les noms de partition pour la table de données incrémentielles. Consultez la rubrique Partition. |
|
Processing Mode of Conflicting Tables |
Mode de gestion par DTS des tables présentes dans la destination portant le même nom que les tables sources :<br>- Precheck and Report Errors : la tâche échoue lors de la prévérification si des conflits de noms sont détectés. Pour résoudre les conflits sans renommer les tables de destination, utilisez le mappage des noms d'objets. Consultez la rubrique Mapper les noms d'objets.<br>- Ignore Errors and Proceed : ignore la vérification des conflits. Si les schémas source et de destination correspondent et que les clés primaires entrent en conflit, la migration complète ignore l'enregistrement conflictuel (l'enregistrement de destination est conservé), tandis que la migration incrémentielle l'écrase. Si les schémas diffèrent, seules certaines colonnes sont migrées ou la tâche échoue. Utilisez cette option avec prudence. |
|
Capitalization of Object Names in Destination Instance |
Politique de mise en majuscules/minuscules pour les noms de bases de données, de tables et de colonnes dans la destination. La valeur par défaut est DTS default policy. Consultez la rubrique Spécifier la casse des noms d'objets dans l'instance de destination. |
Sélection d'objets
Paramètre | Description |
Source Objects | Sélectionnez les objets à migrer. Cliquez sur l'icône |
Selected Objects | Pour renommer un seul objet dans la destination, faites un clic droit dessus dans Selected Objects. Consultez la rubrique Mapper le nom d'un seul objet. Pour renommer plusieurs objets à la fois, cliquez sur Batch Edit. Consultez la rubrique Mapper plusieurs noms d'objets simultanément. Pour filtrer les lignes d'une table, faites un clic droit sur la table et configurez les conditions de filtre. Consultez la rubrique Spécifier les conditions de filtre. Remarque Le renommage d'un objet via le mappage des noms d'objets peut entraîner l'échec de la migration des objets dépendants. |
Cliquez sur Next: Advanced Settings.
Étape 4 : Configurer les paramètres avancés
Paramètre | Description |
Dedicated Cluster for Task Scheduling | Par défaut, DTS planifie la tâche sur le cluster partagé. Pour une stabilité accrue, achetez un cluster dédié. Consultez la rubrique Qu'est-ce qu'un cluster dédié DTS ?. |
Retry Time for Failed Connections | Durée pendant laquelle DTS tente de se reconnecter lorsque la base de données source ou de destination est inaccessible. Valeurs valides : 10 à 1 440 minutes. Valeur par défaut : 720 minutes. Nous vous recommandons de définir ce paramètre sur une valeur supérieure à 30. Si DTS se reconnecte dans le délai imparti, il reprend la tâche. Sinon, la tâche échoue. Remarque Lorsque plusieurs tâches partagent une base de données source ou de destination, c'est le délai de nouvelle tentative le plus récemment défini qui s'applique. DTS facture l'instance pendant les tentatives de reconnexion. |
Retry Time for Other Issues | Durée pendant laquelle DTS tente de nouvelles opérations après des échecs DDL ou DML. Valeurs valides : 1 à 1 440 minutes. Valeur par défaut : 10 minutes. Nous vous recommandons de définir ce paramètre sur une valeur supérieure à 10. Cette valeur doit être inférieure à celle du paramètre Retry Time for Failed Connections. |
Enable Throttling for Full Data Migration | Limite la charge de lecture et d'écriture sur les instances source et de destination pendant la migration complète des données. Configurez les paramètres Queries per second (QPS) to the source database, RPS of Full Data Migration (lignes par seconde) et Data migration speed for full migration (MB/s). Disponible uniquement lorsque l'option Full Data Migration est sélectionnée. |
Enable Throttling for Incremental Data Migration | Limite la charge pendant la migration incrémentielle des données. Configurez les paramètres RPS of Incremental Data Migration et Data migration speed for incremental migration (MB/s). Disponible uniquement lorsque l'option Incremental Data Migration est sélectionnée. |
Whether to delete SQL operations on heartbeat tables of forward and reverse tasks | Contrôle si DTS écrit des opérations SQL dans les tables de pulsation (heartbeat) de la base de données source pendant l'exécution. Yesalert notification settings : n'écrit pas dans les tables de pulsation (un indicateur de latence peut apparaître sur l'instance). No : écrit dans les tables de pulsation (peut affecter la sauvegarde physique ou le clonage de la source). |
Environment Tag | Tag facultatif permettant d'identifier l'instance DTS par environnement (par exemple, production ou test). |
Configure ETL | Indique s'il faut activer la fonctionnalité ETL (extraction, transformation et chargement). Yes : configurez les instructions de traitement des données dans l'éditeur de code. Consultez la rubrique Configurer ETL dans une tâche de migration ou de synchronisation de données. No : ignore la configuration ETL. Consultez la rubrique Qu'est-ce que ETL ? |
Monitoring and Alerting | Indique s'il faut configurer des alertes pour la tâche de migration. Yes : définissez les seuils d'alerte et les contacts de notification. Les alertes se déclenchent si la tâche échoue ou si la latence de migration dépasse le seuil. Consultez la rubrique Configurer la surveillance et les alertes lors de la création d'une tâche DTS. No : ignore la configuration des alertes. |
Étape 5 : Exécuter la prévérification
Pour afficher un aperçu des paramètres API avant l'enregistrement, placez le pointeur sur Next: Save Task Settings and Precheck et cliquez sur Preview OpenAPI parameters.
Cliquez sur Next: Save Task Settings and Precheck.
DTS exécute une prévérification avant le démarrage de la tâche de migration. La tâche ne démarre qu'après la réussite de cette prévérification.
Si un élément de vérification échoue, cliquez sur View Details à côté de celui-ci, corrigez le problème, puis cliquez sur Precheck Again.
Si une alerte se déclenche sur un élément de vérification et que cet élément peut être ignoré en toute sécurité, cliquez sur Confirm Alert Details, puis sur Ignore dans la boîte de dialogue et enfin sur OK. Cliquez ensuite sur Precheck Again. Ignorer une alerte peut entraîner une incohérence des données.
Étape 6 : Acheter une instance et démarrer la tâche
Attendez que le Success Rate atteigne 100%, puis cliquez sur Next: Purchase Instance.
Sur la page Purchase Instance, configurez les paramètres suivants.
|
Paramètre |
Description |
|
Resource Group |
Groupe de ressources pour l'instance de migration. La valeur par défaut est le groupe de ressources par défaut. Consultez la rubrique Qu'est-ce que Resource Management ? |
|
Instance Class |
Classe de vitesse de migration. Sélectionnez l'option adaptée à vos besoins en matière de débit. Consultez la rubrique Classes d'instances pour les instances de migration de données. |
Lisez et acceptez les Data Transmission Service (Pay-as-you-go) Service Terms en cochant la case correspondante.
Cliquez sur Buy and Start, puis sur OK dans la boîte de dialogue de confirmation.
La tâche apparaît sur la page Data Migration.
Les tâches sans migration incrémentielle s'arrêtent automatiquement une fois la migration complète terminée. Le statut affiche Completed.
Les tâches avec migration incrémentielle s'exécutent en continu. Le statut affiche Running. Arrêtez la tâche manuellement lorsque vous êtes prêt à effectuer le basculement.
Structure des tables de données incrémentielles
Exécutez set odps.sql.allow.fullscan=true; dans MaxCompute pour autoriser les analyses complètes de table sur le projet avant d'interroger les tables de données incrémentielles.
DTS écrit les modifications incrémentielles depuis la source vers une table _log dans MaxCompute (par exemple, customer_log). Chaque ligne de la table de données incrémentielles représente un événement de modification et inclut à la fois les colonnes de données de la table source et les colonnes de métadonnées suivantes.
|
Champ |
Description |
|
|
L'identifiant unique de l'entrée de journal incrémentielle. Les ID s'incrémentent automatiquement à chaque nouvelle entrée. Pour les opérations UPDATE, DTS génère deux entrées (valeurs avant et après mise à jour) avec le même |
|
|
Le type de modification : |
|
|
L'horodatage de l'opération en UTC, extrait du journal binaire. |
|
|
Indique si la ligne contient les valeurs avant mise à jour : |
|
|
Indique si la ligne contient les valeurs après mise à jour : |