Utilisez Data Transmission Service (DTS) pour synchroniser en continu les données d'une instance ApsaraDB RDS for MySQL vers une instance PolarDB-X 1,0. Cette procédure couvre à la fois la synchronisation complète des données et la synchronisation incrémentielle des données (INSERT, UPDATE, DELETE).
Aperçu de la tâche : Pour configurer une tâche de synchronisation, suivez ces étapes dans l'ordre :
Préparez l'instance de destination et les comptes (prérequis)
Configurez la journalisation binaire sur la source
Créez la tâche de synchronisation dans DTS ou DMS
Exécutez la pré-vérification et achetez l'instance
Prérequis
Avant de commencer, assurez-vous que vous disposez des éléments suivants :
Une instance PolarDB-X 1,0 de destination dont l'espace de stockage disponible dépasse le stockage utilisé par l'instance RDS MySQL source. Lors de la création de l'instance, définissez la classe de stockage sur RDS MySQL. Consultez Créer une instance PolarDB-X 1,0.
Des bases de données et des tables précréées dans l'instance PolarDB-X 1,0 de destination. La synchronisation du schéma n'est pas prise en charge ; DTS ne crée pas le schéma cible pour vous. Consultez Créer une base de données et Effectuer des opérations SQL de base.
Un jeu de caractères source qui n'est pas utf8mb3. La sélection de données utf8mb3 pour la synchronisation incrémentielle entraîne l'échec de la tâche.
Des comptes de base de données disposant des autorisations requises. Consultez Autorisations requises pour les comptes de base de données.
La journalisation binaire configurée sur la base de données source. Consultez Exigences relatives à la journalisation binaire.
Exigences relatives à la journalisation binaire
DTS utilise les journaux binaires pour capturer les modifications incrémentielles. Les exigences diffèrent selon que votre source est une instance ApsaraDB RDS for MySQL ou une base de données MySQL autogérée.
ApsaraDB RDS for MySQL
La journalisation binaire est activée par défaut sur les instances ApsaraDB RDS for MySQL. Assurez-vous que :
Le paramètre
binlog_row_imageest défini surfull. Si ce n'est pas le cas, une erreur de pré-vérification se produit et la tâche ne peut pas démarrer. Consultez Définir les paramètres de l'instance.Les journaux binaires locaux sont conservés pendant au moins 3 jours (7 jours recommandés). Si les journaux sont purgés avant que DTS ne puisse les lire, la tâche échoue. Dans des cas extrêmes, une perte de données ou une incohérence peut survenir. Les tâches qui échouent en raison d'une rétention insuffisante des journaux ne sont pas couvertes par l'accord de niveau de service (SLA) de DTS. Pour définir la Retention Period des journaux binaires locaux, consultez Supprimer automatiquement les journaux locaux.
Les instances en lecture seule ApsaraDB RDS for MySQL 5.6 n'enregistrent pas les journaux de transactions et ne peuvent pas être utilisées comme base de données source.
MySQL autogéré
Pour une base de données MySQL autogérée, configurez les paramètres suivants :
|
Paramètre |
Valeur requise |
|
|
|
|
|
|
Conservez les journaux binaires pendant au moins 7 jours. Si les journaux sont purgés avant que DTS ne puisse les lire, la tâche échoue, et les problèmes causés par une rétention insuffisante des journaux ne sont pas couverts par le SLA de DTS.
Exigences supplémentaires :
Architecture primaire/primaire : Activez le paramètre
log_slave_updatesafin que DTS puisse obtenir tous les journaux binaires des deux nœuds. Consultez Créer un compte de base de données pour une base de données MySQL autogérée et configurer la journalisation binaire.Amazon Aurora MySQL ou instances en mode cluster : Assurez-vous que le nom de domaine ou l'adresse IP configuré pour la tâche pointe toujours vers le nœud en lecture/écriture (RW). Sinon, la tâche risque de ne pas s'exécuter correctement.
Autorisations requises pour les comptes de base de données
|
Base de données |
Autorisations requises |
Comment créer et autoriser |
|
ApsaraDB RDS for MySQL source |
Lecture et écriture |
|
|
PolarDB-X 1,0 de destination |
Lecture et écriture |
Si le compte de la base de données source n'a pas été créé dans la console ApsaraDB RDS for MySQL, assurez-vous que le compte dispose des autorisations REPLICATION CLIENT, REPLICATION SLAVE, SHOW VIEW et SELECT.
Facturation
|
Type de synchronisation |
Facturation |
|
Synchronisation complète des données |
Gratuit |
|
Synchronisation incrémentielle des données |
Facturé. Consultez Aperçu de la facturation. |
Limites et notes d'utilisation
Limites de la base de données source
Le serveur sur lequel la base de données source est déployée doit disposer d'une bande passante sortante suffisante. Une bande passante insuffisante réduit la vitesse de synchronisation.
Les tables à synchroniser doivent posséder une clé primaire ou une contrainte UNIQUE avec des valeurs de champ uniques. Les tables dépourvues de ces contraintes peuvent générer des données en double dans la destination.
Seules les tables peuvent être sélectionnées comme objets de synchronisation.
Lors de l'utilisation du mappage de noms d'objets (par exemple, pour mapper les noms de tables ou de colonnes), une seule tâche prend en charge un maximum de 1 000 tables. Pour synchroniser plus de 1 000 tables avec mappage de noms, répartissez-les sur plusieurs tâches.
La classe de stockage de l'instance PolarDB-X 1,0 doit être RDS MySQL (une instance RDS privée personnalisée). PolarDB MySQL n'est pas pris en charge.
-
N'effectuez pas d'opérations DDL pendant la synchronisation complète des données, car cela entraînerait l'échec de la tâche.
Pendant la phase de synchronisation complète, DTS interroge la base de données source et peut générer des verrous de métadonnées, ce qui peut bloquer les opérations DDL sur la source.
-
Les modifications de données résultant d'opérations non enregistrées dans les journaux binaires ne sont pas synchronisées. Cela inclut la récupération de données à l'aide de sauvegardes physiques et les opérations en cascade.
Si cela se produit, supprimez la base de données ou la table concernée des objets de synchronisation, puis ajoutez-la à nouveau, si votre activité le permet. Consultez Modifier les objets à synchroniser .
-
Colonnes invisibles (MySQL 8.0.23 et versions ultérieures) : Si les données à synchroniser contiennent des colonnes invisibles, DTS ne peut pas obtenir les données de ces colonnes, ce qui peut entraîner une perte de données. Exécutez la commande suivante pour rendre les colonnes invisibles visibles :
ALTER TABLE <table_name> ALTER COLUMN <column_name> SET VISIBLE;Les tables sans clé primaire génèrent automatiquement une clé primaire invisible, qui doit également être rendue visible. Consultez Colonnes invisibles et Clés primaires invisibles générées.
Si la table PolarDB-X 1,0 de destination a le partitionnement automatique activé (
auto_partition=true), chaque instruction DDL exécutée sur la source ne peut contenir qu'une seulealter_specification. Sinon, DTS signale une erreur (TDDL-4998:Multi alter specifications when create GSI not support yet). Pour exécuter une instruction DDL contenant plusieurs élémentsalter_specification, divisez chaquealter_specificationen une instruction DDL distincte et exécutez-les une par une. Pour plus d'informations, consultez ALTER TABLE.
Autres limites
-
EncDB (toujours confidentiel) : La synchronisation complète des données n'est pas prise en charge lorsque la fonctionnalité toujours confidentiel (EncDB) est activée sur l'instance RDS MySQL source.
Les instances avec le chiffrement transparent des données (TDE) activé prennent en charge la synchronisation du schéma, la synchronisation complète des données et la synchronisation incrémentielle des données.
Si vous effectuez des opérations DDL en ligne utilisant des tables temporaires dans la base de données source, telles que la fusion de plusieurs tables, des données peuvent être perdues dans la base de données de destination ou l'instance DTS peut échouer.
N'utilisez pas d'outils tels que pt-online-schema-change pour effectuer des opérations DDL en ligne sur les objets en cours de synchronisation, car cela entraînerait l'échec de la tâche.
L'écriture de données provenant d'autres sources dans la base de données de destination pendant la synchronisation peut provoquer une incohérence des données.
Évaluez l'impact sur les performances des bases de données source et de destination avant de démarrer la synchronisation. Exécutez les tâches de synchronisation pendant les heures creuses lorsque cela est possible. La synchronisation complète des données utilise les ressources de lecture et d'écriture des deux bases de données et peut augmenter la charge du serveur.
Une fois la synchronisation complète des données terminée, les opérations INSERT concurrentes peuvent provoquer une fragmentation dans les tables de destination. L'espace table utilisé de la base de données de destination peut être supérieur à celui de la base de données source.
Si une instance DTS échoue, l'équipe d'assistance DTS tentera de la récupérer dans un délai de 8 heures. Les opérations de récupération peuvent inclure 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). Consultez Modifier les paramètres de l'instance.
Cas particuliers pour les sources MySQL autogérées
Si un basculement primaire/secondaire se produit dans la base de données source pendant la synchronisation, la tâche échoue.
-
La latence de synchronisation est calculée à partir de la différence entre l'horodatage actuel et l'horodatage du dernier enregistrement de données synchronisé. Si aucune opération DML n'est effectuée sur la base de données source pendant une longue période, la latence affichée peut être inexacte. Effectuez une opération DML sur la source pour mettre à jour la valeur de latence.
Si vous choisissez de synchroniser l'intégralité de la base de données, créez une table de heartbeat. DTS met à jour ou écrit dans la table de heartbeat chaque seconde pour maintenir la précision de la lecture de la latence.
DTS exécute périodiquement
CREATE DATABASE IF NOT EXISTSsur la base de données source pour faire avancer le décalage du journal binaire.
Cas particuliers pour les sources ApsaraDB RDS for MySQL
Les instances ApsaraDB RDS for MySQL qui n'enregistrent pas les journaux de transactions, telles que les instances en lecture seule d'ApsaraDB RDS for MySQL 5.6, ne peuvent pas être utilisées comme base de données source.
DTS exécute périodiquement
CREATE DATABASE IF NOT EXISTSsur la base de données source pour faire avancer le décalage du journal binaire.
Créer une tâche de synchronisation de données
Étape 1 : Accédez à la page Synchronisation des données
Utilisez soit la console DTS, soit la console DMS.
Console DTS
Connectez-vous à la console DTS.console DTS
Dans le volet de navigation de gauche, cliquez sur Data Synchronization.
Dans le coin supérieur gauche, sélectionnez la région où réside l'instance de synchronisation.
Console DMS
Remarque
Les opérations réelles peuvent varier en fonction du mode et de la disposition de la console DMS. Consultez Mode simple et Personnaliser la disposition et le style de la console DMS.
Connectez-vous à la console DMS.console DMS
Dans la barre de navigation supérieure, placez le pointeur sur Data + AI et choisissez DTS (DTS) > Data Synchronization.
Dans la liste déroulante à droite de Data Synchronization Tasks, sélectionnez la région où réside l'instance de synchronisation.
Étape 2 : Configurez les bases de données source et de destination
Cliquez sur Create Task.
Sur la page de configuration de la tâche, définissez les paramètres suivants.
Général
|
Paramètre |
Description |
|
Task Name |
DTS génère automatiquement un nom de tâche. Spécifiez un nom descriptif pour faciliter l'identification de la tâche. Le nom n'a pas besoin d'être unique. |
Base de données source
|
Paramètre |
Valeur |
|
Select Existing Connection |
Sélectionnez une instance de base de données enregistrée dans la liste déroulante. DTS remplit automatiquement les autres paramètres. Si l'instance n'est pas enregistrée auprès de DTS, configurez manuellement les paramètres ci-dessous. Dans la console DMS, sélectionnez l'instance dans la liste Select a DMS database instance. |
|
Database Type |
MySQL |
|
Access Method |
Alibaba Cloud Instance |
|
Instance Region |
La région où réside l'instance ApsaraDB RDS for MySQL source |
|
Replicate Data Across Alibaba Cloud Accounts |
No (pour les instances sous le compte actuel) |
|
RDS Instance ID |
L'ID de l'instance ApsaraDB RDS for MySQL source |
|
Database Account |
Le compte de l'instance source. Consultez Autorisations requises pour les comptes de base de données. |
|
Database Password |
Le mot de passe du compte de base de données |
|
Encryption |
Non-encrypted ou SSL-encrypted. Pour utiliser le chiffrement SSL, activez le chiffrement SSL sur l'instance RDS avant de configurer cette tâche. Consultez Utiliser un certificat cloud pour activer le chiffrement SSL. |
Base de données de destination
|
Paramètre |
Valeur |
|
Select Existing Connection |
Sélectionnez une instance de base de données enregistrée dans la liste déroulante. DTS remplit automatiquement les autres paramètres. Si l'instance n'est pas enregistrée auprès de DTS, configurez manuellement les paramètres ci-dessous. Dans la console DMS, sélectionnez l'instance dans la liste Select a DMS database instance. |
|
Database Type |
PolarDB-X 1,0 |
|
Access Method |
Alibaba Cloud Instance |
|
Instance Region |
La région où réside l'instance PolarDB-X 1,0 de destination |
|
Instance ID |
L'ID de l'instance PolarDB-X 1,0 de destination |
|
Database Account |
Le compte de l'instance de destination. Consultez Autorisations requises pour les comptes de base de données. |
|
Database Password |
Le mot de passe du compte de base de données |
Cliquez sur Test Connectivity and Proceed.
Assurez-vous que les blocs CIDR du serveur DTS sont ajoutés aux paramètres de sécurité des bases de données source et de destination. Consultez Ajouter les adresses IP des serveurs DTS à une liste d'autorisation . Si la base de données source ou de destination est une base de données autogérée non accessible via Alibaba Cloud Instance , cliquez sur Test Connectivity dans la boîte de dialogue CIDR Blocks of DTS Servers .
Étape 3 : Configurez les objets de synchronisation
À l'étape Configure Objects, définissez les paramètres suivants.
|
Paramètre |
Description |
|
Synchronization Types |
Incremental Data Synchronization est sélectionné par défaut. Vous pouvez éventuellement sélectionner Full Data Synchronization. Schema Synchronization ne peut pas être sélectionné ; créez manuellement le schéma cible avant de démarrer la tâche. Une fois la pré-vérification réussie, DTS synchronise les données historiques de la source comme base pour la synchronisation incrémentielle. |
|
Processing Mode of Conflicting Tables |
Precheck and Report Errors : vérifie si la destination contient des tables portant des noms identiques à ceux de la source. Si des noms identiques existent, une erreur est renvoyée lors de la pré-vérification et la tâche ne peut pas démarrer. Pour gérer les conflits de nommage, utilisez le mappage de noms d'objets pour renommer les tables synchronisées. Consultez Mapper les noms d'objets. <br><br> Ignore Errors and Proceed : ignore la pré-vérification pour les noms de tables identiques. > Avertissement
Cette option peut provoquer une incohérence des données. Si la source et la destination partagent le même schéma et qu'un enregistrement dans la destination possède la même clé primaire ou clé unique qu'un enregistrement source : lors de la synchronisation complète, DTS conserve l'enregistrement de destination existant ; lors de la synchronisation incrémentielle, DTS l'écrase. Si les schémas diffèrent, l'initialisation peut échouer ou seules certaines colonnes sont synchronisées. |
|
Capitalization of object names in destination instance |
Contrôle la casse des noms de bases de données, de tables et de colonnes dans la destination. Par défaut : DTS default policy. Consultez Spécifier la casse des noms d'objets dans l'instance de destination. |
|
Source Objects |
Sélectionnez une ou plusieurs tables et cliquez sur l'icône de flèche pour les déplacer vers Selected Objects. Seules les tables peuvent être sélectionnées comme objets de synchronisation. |
|
Selected Objects |
Faites un clic droit sur un objet pour le renommer (objet unique) ou cliquez sur Batch Edit pour renommer plusieurs objets à la fois. Consultez Mapper les noms d'objets. Faites un clic droit sur une table pour sélectionner des opérations DML spécifiques pour la synchronisation incrémentielle (INSERT, UPDATE, DELETE) ou pour définir des conditions de filtre WHERE. Consultez Filtrer les données de tâche avec une condition SQL. Si vous utilisez le mappage de noms d'objets, d'autres objets qui dépendent de l'objet mappé peuvent échouer à se synchroniser. |
Cliquez sur Next: Advanced Settings.
Étape 4 : Configurez 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é. Achetez un cluster dédié pour améliorer la stabilité de la synchronisation. Consultez Qu'est-ce qu'un cluster dédié DTS ?. |
|
Retry Time for Failed Connections |
Durée pendant laquelle DTS effectue des tentatives après un échec de connexion. Valeurs valides : 10 à 1 440 minutes. Par défaut : 720 minutes. Nous vous recommandons de définir ce paramètre sur une valeur supérieure à 30 minutes. Si DTS se reconnecte dans cette fenêtre, la tâche reprend ; sinon, la tâche échoue. Si plusieurs tâches partagent la même base de données source ou de destination, la durée de nouvelle tentative la plus courte parmi ces tâches s'applique. DTS facture l'instance pendant la période de nouvelle tentative. |
|
Retry Time for Other Issues |
Durée pendant laquelle DTS effectue des tentatives après des échecs d'opérations DDL ou DML. Valeurs valides : 1 à 1 440 minutes. Par défaut : 10 minutes. Nous vous recommandons de définir ce paramètre sur une valeur supérieure à 10 minutes. Cette valeur doit être inférieure à Retry Time for Failed Connections. |
|
Enable Throttling for Full Data Synchronization |
Limite l'utilisation des ressources de lecture/écriture pendant la synchronisation complète des données. Configurez QPS (queries per second) to the source database, RPS of Full Data Migration et Data migration speed for full migration (MB/s). Disponible uniquement lorsque Full Data Synchronization est sélectionné. |
|
Enable Throttling for Incremental Data Synchronization |
Limite l'utilisation des ressources pendant la synchronisation incrémentielle. Configurez RPS of Incremental Data Synchronization et Data synchronization speed for incremental synchronization (MB/s). |
|
Environment Tag |
Un tag facultatif pour identifier l'instance par type d'environnement. |
|
Whether to delete SQL operations on heartbeat tables of forward and reverse tasks |
Contrôle si DTS écrit des opérations SQL de heartbeat dans la base de données source. Yesalert notification settings : n'écrit pas de SQL de heartbeat ; l'instance DTS peut afficher une valeur de latence. No : écrit du SQL de heartbeat ; cela peut affecter des fonctionnalités telles que la sauvegarde physique et le clonage de la base de données source. |
|
Configure ETL |
Indique s'il faut activer la fonctionnalité extract, transform, and load (ETL). Yes : configurez ETL en saisissant des instructions de traitement des données dans l'éditeur de code. Consultez Configurer ETL dans une tâche de migration ou de synchronisation de données. No : ETL est désactivé. Consultez Qu'est-ce que ETL ? |
|
Monitoring and Alerting |
Indique s'il faut configurer des alertes. Yes : définissez le seuil d'alerte et les contacts de notification ; DTS les notifie si la tâche échoue ou si la latence dépasse le seuil. Consultez Configurer la surveillance et les alertes lors de la création d'une tâche DTS. No : aucune alerte. |
Étape 5 : Exécutez la pré-vérification
Cliquez sur Next: Save Task Settings and Precheck.
Pour afficher les paramètres API pour cette configuration de tâche, survolez Next: Save Task Settings and Precheck et cliquez sur Preview OpenAPI parameters .
La tâche exécute une pré-vérification avant de démarrer. La tâche ne peut démarrer qu'après la réussite de la pré-vérification.
Si un élément échoue, cliquez sur View Details à côté de l'élément ayant échoué, corrigez le problème et cliquez sur Precheck Again.
Si un élément déclenche une alerte pouvant être ignorée, cliquez sur Confirm Alert Details, puis cliquez sur Ignore > OK > Precheck Again. Ignorer les éléments d'alerte peut provoquer une incohérence des données.
Étape 6 : Achetez l'instance
Attendez que le Success Rate atteigne 100%, puis cliquez sur Next: Purchase Instance.
Sur la page d'achat, configurez les paramètres suivants.
|
Paramètre |
Description |
|
Billing Method |
Subscription : payez à l'avance pour une durée fixe ; plus rentable pour une utilisation à long terme. Pay-as-you-go : facturé à l'heure ; adapté à une utilisation à court terme. Libérez l'instance lorsqu'elle n'est plus nécessaire pour arrêter la facturation. |
|
Resource Group Settings |
Le groupe de ressources pour l'instance de synchronisation. Par défaut : default resource group. Consultez Qu'est-ce que Resource Management ? |
|
Instance Class |
Le niveau de performance de synchronisation. Consultez Classes d'instances des instances de synchronisation de données. |
|
Subscription Duration |
Disponible uniquement pour la méthode de facturation Subscription. Valeurs valides : 1 à 9 mois, ou 1, 2, 3 ou 5 ans. |
Lisez et sélectionnez Data Transmission Service (Pay-as-you-go) Service Terms.
Cliquez sur Buy and Start, puis cliquez sur OK pour confirmer.
La tâche apparaît dans la liste des tâches. Surveillez sa progression à cet endroit.