Data Transmission Service (DTS) synchronise les données d'un cluster PolarDB for MySQL vers une instance SelectDB, permettant ainsi l'analyse en temps réel de vos données opérationnelles. SelectDB offre des temps de réponse aux requêtes inférieurs à la seconde à grande échelle, gère jusqu'à 10 000 requêtes ponctuelles par seconde et prend en charge des analyses complexes à haut débit.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Une instance SelectDB dont l'espace de stockage disponible est supérieur à l'espace utilisé par le cluster source PolarDB for MySQL. Pour en créer une, consultez Créer une instance
La journalisation binaire activée sur le cluster source PolarDB for MySQL, avec le paramètre
loose_polar_log_bindéfini surON. Dans le cas contraire, des messages d'erreur s'affichent lors de la vérification préalable et il est impossible de démarrer une tâche DTS. Consultez Activer la journalisation binaire et Modifier les paramètresUne période de rétention des journaux binaires d'au moins 3 jours (7 jours recommandés) sur le cluster source. Dans des circonstances exceptionnelles, une incohérence ou une perte de données peut se produire. Configurez la période de rétention des journaux binaires conformément aux exigences précédentes. Sinon, la fiabilité ou les performances du service selon l'accord de niveau de service (SLA) de DTS pourraient ne pas être garanties. Consultez Modifier la période de rétention
Des comptes de base de données disposant des autorisations requises sur les bases de données source et de destination. Consultez Autorisations requises pour les comptes de base de données
L'activation de la journalisation binaire sur un cluster PolarDB for MySQL entraîne des frais de stockage pour l'espace occupé par les journaux binaires.
Limites
Base de données source
Tables avec des clés primaires ou des contraintes uniques : tous les champs de la destination doivent être uniques ; sinon, la destination peut contenir des données en double.
Tables sans clés primaires ni contraintes uniques : sélectionnez Schema Synchronization pour les Types de synchronisation et duplicate pour le Moteur à l'étape Configurations des bases de données, des tables et des colonnes.
Lorsque vous sélectionnez des tables (et non des bases de données entières) comme objets de synchronisation, une seule tâche prend en charge jusqu'à 1 000 tables. Pour plus de 1 000 tables, configurez plusieurs tâches ou synchronisez au niveau de la base de données.
N'effectuez pas d'opérations de langage de définition de données (DDL) modifiant les schémas pendant la synchronisation initiale du schéma ou la synchronisation initiale des données complètes. Lors de la synchronisation complète des données, DTS interroge la base de données source, ce qui crée des verrous de métadonnées pouvant bloquer les opérations DDL.
Les modifications de données non enregistrées dans les journaux binaires — telles que les données restaurées à partir d'une sauvegarde physique ou générées par des opérations en cascade — ne sont pas synchronisées vers la destination. Si cela se produit, retirez la base de données ou la table concernée des objets de synchronisation, puis ajoutez-la à nouveau. Consultez Modifier les objets à synchroniser.
Objets et opérations non pris en charge
Les nœuds en lecture seule du cluster source PolarDB for MySQL ne sont pas synchronisés.
Les tables externes OSS du cluster source ne sont pas synchronisées.
INDEX, PARTITION, VIEW, PROCEDURE, FUNCTION, TRIGGER et FK ne sont pas synchronisés.
Le basculement principal/secondaire n'est pas pris en charge pendant la synchronisation complète. Si un basculement se produit, reconfigurez la tâche.
Il est impossible de modifier le DDL sur plusieurs colonnes à la fois ni de modifier le DDL sur la même table de manière consécutive.
Les modifications DDL en ligne utilisant pt-online-schema-change ne sont pas prises en charge. Si de telles modifications existent sur la source, une perte de données peut survenir ou l'instance de synchronisation peut échouer.
Contraintes de destination
Seuls le modèle Unique Key et le modèle Duplicate Key sont pris en charge dans l'instance SelectDB de destination.
Les noms de bases de données et de tables dans SelectDB doivent commencer par une lettre. Utilisez la fonctionnalité de mappage des noms d'objets pour renommer ceux qui ne respectent pas cette règle.
Si un nom de base de données, de table ou de colonne contient des caractères chinois, utilisez la fonctionnalité de mappage des noms d'objets pour le renommer (par exemple, en un équivalent anglais). Sinon, la tâche peut échouer.
Ne créez pas de clusters dans l'instance SelectDB de destination pendant la synchronisation. Si la tâche échoue pour cette raison, redémarrez l'instance de synchronisation des données pour reprendre.
N'ajoutez pas de nœuds backend à l'instance SelectDB de destination pendant la synchronisation. Si la tâche échoue pour cette raison, redémarrez l'instance de synchronisation des données pour reprendre.
Seul le paramètre
bucket_countpeut être spécifié dans la section Selected Objects. La valeur doit être un entier positif. Par défaut : auto.Dans les scénarios de fusion multi-tables où les données de plusieurs tables sources sont synchronisées vers la même table de destination, toutes les tables sources doivent avoir le même schéma. Des schémas incompatibles peuvent provoquer une incohérence des données ou l'échec de la tâche.
Dans PolarDB for MySQL,
MdansVARCHAR(M)représente la longueur en caractères. Dans SelectDB,NdansVARCHAR(N)représente la longueur en octets. Si vous n'utilisez pas la synchronisation de schéma DTS, définissez les longueurs des champs VARCHAR de SelectDB à quatre fois les longueurs des champs VARCHAR correspondants de PolarDB for MySQL.Lorsque vous utilisez DMS ou gh-ost pour effectuer des modifications DDL en ligne sur la source, DTS synchronise uniquement le DDL d'origine vers la destination. Cela peut provoquer des verrouillages de table à la destination.
Si des données sont écrites dans la base de données de destination depuis des sources autres que DTS pendant la synchronisation, une incohérence des données peut se produire.
DTS exécute
CREATE DATABASE IF NOT EXISTS \test\`` dans la base de données source à intervalles réguliers pour faire avancer la position du journal binaire.Pendant la synchronisation incrémentielle, DTS utilise une stratégie par lots qui écrit les données pour chaque objet de synchronisation au maximum une fois toutes les 5 secondes. Il en résulte une latence de synchronisation normale inférieure à 10 secondes. Pour réduire cette latence, ajustez le paramètre
selectdb.reservoir.timeout.millisecondsdans la console DTS. La plage autorisée est de 1 000 à 10 000 millisecondes. Des valeurs plus faibles augmentent la fréquence d'écriture, ce qui peut accroître la charge et le temps de réponse (RT) de la destination.En cas d'échec d'une instance DTS, l'équipe d'assistance DTS tente une récupération sous 8 heures. Pendant la récupération, l'instance peut être redémarrée ou ses paramètres ajustés. Pour les paramètres susceptibles d'être modifiés, consultez Modifier les paramètres d'une instance.
Avant de synchroniser les données, évaluez les performances des deux bases de données et exécutez la synchronisation pendant les heures creuses. La synchronisation initiale des données complètes exécute des opérations INSERT concurrentes, ce qui augmente la charge sur les deux bases de données et provoque une fragmentation des tables dans la destination, entraînant un tablespace plus grand que dans la source.
Modèle Unique Key
Toutes les clés uniques de la table de destination doivent exister dans la table source et être incluses dans les objets de synchronisation. Sinon, une incohérence des données peut se produire.
Modèle Duplicate Key
Des données en double peuvent apparaître dans la destination si l'un des événements suivants se produit :
Une opération de nouvelle tentative dans une instance de synchronisation des données
Deux opérations ou plus de langage de manipulation de données (DML) sur la même ligne après le démarrage de l'instance de synchronisation
Pour dédupliquer les données, utilisez les colonnes supplémentaires _is_deleted, _version et _record_id. Pour plus de détails sur les colonnes, consultez Informations sur les colonnes supplémentaires.
Pour les tables du modèle Duplicate Key, DTS convertit les instructions UPDATE et DELETE en instructions INSERT.
Facturation
| Type de synchronisation | Frais de configuration de la tâche |
|---|---|
| Synchronisation du schéma et synchronisation complète des données | Gratuit |
| Synchronisation incrémentielle des données | Payant. Consultez Vue d'ensemble de la facturation. |
Opérations SQL prenant en charge la synchronisation incrémentielle
| Type d'opération | Instruction SQL |
|---|---|
| DML | INSERT, UPDATE, DELETE |
| DDL | ADD COLUMN, MODIFY COLUMN, CHANGE COLUMN, DROP COLUMN, DROP TABLE, TRUNCATE TABLE, RENAME TABLE |
L'opération RENAME TABLE peut provoquer une incohérence des données. Si vous renommez une table pendant la synchronisation et que seule la table (et non la base de données entière) a été sélectionnée comme objet de synchronisation, les données de la table renommée ne sont pas synchronisées. Pour éviter cela, sélectionnez la base de données comme objet de synchronisation et assurez-vous que la base de données de la table originale et de la table renommée est incluse.
Autorisations requises pour les comptes de base de données
| Base de données | Autorisations requises | Comment configurer |
|---|---|---|
| Source : PolarDB for MySQL | Autorisations de lecture et d'écriture sur les objets à synchroniser | Créer et gérer un compte de base de données et Gérer le mot de passe d'un compte de base de données |
| Destination : SelectDB | USAGE_PRIV sur le cluster ; SELECT_PRIV, LOAD_PRIV, ALTER_PRIV, CREATE_PRIV et DROP_PRIV sur la base de données | Gestion des autorisations du cluster et Gestion des autorisations de base |
Créer une tâche de synchronisation des données
Étape 1 : Accéder à la page Synchronisation des données
Utilisez l'une des méthodes suivantes pour ouvrir la page Synchronisation des données.
Console DTS
Connectez-vous à la 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 des données.
Console Data Management (DMS)
Le chemin de navigation exact peut 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.
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 Tâches de synchronisation des données, sélectionnez la région où réside l'instance.
Étape 2 : Configurer les bases de données source et de destination
Cliquez sur Create Task.
-
Configurez le nom de la tâche et la base de données source.
Paramètre Description Task Name DTS génère automatiquement un nom. Spécifiez un nom descriptif pour faciliter l'identification de la tâche. Le nom n'a pas besoin d'être unique. Select Existing Connection (source) Si l'instance source est enregistrée auprès de DTS, sélectionnez-la dans la liste. DTS remplit automatiquement les paramètres de connexion. Sinon, configurez les paramètres manuellement. Consultez Gérer les connexions à la base de données. Database Type Sélectionnez PolarDB for MySQL. Access Method Sélectionnez Alibaba Cloud Instance. Instance Region Sélectionnez la région où réside le cluster source PolarDB for MySQL. Replicate Data Across Alibaba Cloud Accounts Sélectionnez No pour synchroniser au sein du même compte Alibaba Cloud. PolarDB Cluster ID Sélectionnez l'ID du cluster source PolarDB for MySQL. Database Account Saisissez le compte pour le cluster source. Consultez Autorisations requises pour les comptes de base de données. Database Password Saisissez le mot de passe du compte de base de données. Encryption Sélectionnez une méthode de chiffrement si nécessaire. Pour le chiffrement SSL (Secure Sockets Layer), consultez Configurer le chiffrement SSL. -
Configurez la base de données de destination.
Paramètre Description Select Existing Connection (destination) Si l'instance de destination est enregistrée auprès de DTS, sélectionnez-la dans la liste. DTS remplit automatiquement les paramètres de connexion. Sinon, configurez les paramètres manuellement. Consultez Gérer les connexions à la base de données. Database Type Sélectionnez SelectDB. Access Method Sélectionnez Alibaba Cloud Instance. Instance Region Sélectionnez la région où réside l'instance SelectDB de destination. Replicate Data Across Alibaba Cloud Accounts Sélectionnez No pour synchroniser au sein du même compte Alibaba Cloud. Instance ID Sélectionnez l'ID de l'instance SelectDB de destination. Database Account Saisissez le compte pour l'instance de destination. Consultez Autorisations requises pour les comptes de base de données. Database Password Saisissez le mot de passe du compte de base de données. -
Cliquez sur Test Connectivity and Proceed.
Les blocs CIDR du serveur DTS doivent être ajoutés 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 Ajouter les adresses IP des serveurs DTS à une liste d'autorisation . Si la Méthode d'accès de la base de données source ou de destination n'est pas Instance Alibaba Cloud , cliquez sur Test Connectivity dans la boîte de dialogue CIDR Blocks of DTS Servers .
Étape 3 : Configurer les objets de synchronisation
-
À l'étape Configurer les objets, définissez les paramètres suivants.
Paramètre Description Synchronization Types Par défaut, Synchronisation incrémentielle des données est sélectionné. Sélectionnez également Schema Synchronization et Synchronisation complète des données. Après la vérification préalable, DTS synchronise les données historiques de la source vers la destination comme base pour la synchronisation incrémentielle ultérieure. ImportantLors de la synchronisation de PolarDB for MySQL vers SelectDB, les types de données sont convertis. Si vous ne sélectionnez pas Schema Synchronization, créez à l'avance des tables de modèle Unique ou Duplicate avec des schémas appropriés dans l'instance SelectDB de destination. Consultez Correspondances des types de données, Informations sur les colonnes supplémentaires et Modèles de données.
Processing Mode of Conflicting Tables Vérification préalable et signalement des erreurs : vérifie la présence de tables portant le même nom dans la destination. En cas de conflit, une erreur est signalée lors de la vérification préalable et la tâche ne démarre pas. Pour résoudre les conflits sans supprimer ni renommer la table de destination, utilisez la fonctionnalité de mappage des noms d'objets. Consultez Mapper les noms de bases de données, de tables et de colonnes. Ignorer les erreurs et continuer : ignore la vérification. AvertissementCela peut provoquer une incohérence des données. Si les schémas correspondent, DTS écrase les enregistrements de destination ayant la même clé primaire ou clé unique. Si les schémas diffèrent, l'initialisation des données peut échouer ou seules certaines colonnes peuvent être 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 : Politique par défaut de DTS. Consultez Spécifier la casse des noms d'objets dans l'instance de destination. Source Objects Sélectionnez un ou plusieurs objets et cliquez sur l'icône
pour les déplacer vers Objets sélectionnés. Vous pouvez sélectionner des bases de données ou des tables.Selected Objects Pour renommer un objet de synchronisation, faites un clic droit dessus. Consultez Mapper le nom d'un seul objet. Si Synchronisation du schéma est sélectionné, faites un clic droit sur une table dans Selected Objects, définissez Enable Parameter Settings sur Oui, spécifiez une valeur pour bucket_countet cliquez sur OK. Pour filtrer les opérations SQL ou les lignes pour un objet spécifique, faites un clic droit dessus et configurez les options. Pour le filtrage des lignes, consultez Spécifier les conditions de filtrage.RemarqueLe renommage d'un objet avec la fonctionnalité de mappage des noms d'objets peut empêcher la synchronisation des objets dépendants.
-
Cliquez sur Next: Advanced Settings et configurez les paramètres suivants.
Paramètre Description Dedicated Cluster for Task Scheduling Par défaut, la tâche est planifiée sur le cluster partagé. Pour une stabilité accrue, achetez un cluster dédié. Consultez Qu'est-ce qu'un cluster dédié DTS ?. Retry Time for Failed Connections Durée pendant laquelle DTS effectue des nouvelles tentatives si la connexion à la base de données source ou de destination échoue après le démarrage de la tâche. Plage valide : 10–1 440 minutes. Par défaut : 720 minutes. Définissez une valeur supérieure à 30 minutes. Si DTS se reconnecte dans le délai de nouvelle tentative, la tâche reprend. Sinon, la tâche échoue. RemarqueSi plusieurs tâches partagent la même base de données source ou de destination, la durée de nouvelle tentative la plus courte est prioritaire. Les frais DTS s'appliquent pendant la période de nouvelle tentative.
Retry Time for Other Issues Durée pendant laquelle DTS effectue des nouvelles tentatives pour les opérations DDL ou DML ayant échoué. Plage valide : 1–1 440 minutes. Par défaut : 10 minutes. Définissez une valeur supérieure à 10 minutes. Cette valeur doit être inférieure à Durée de nouvelle tentative pour les échecs de connexion. Enable Throttling for Full Data Synchronization Limite l'utilisation des ressources de lecture/écriture pendant la synchronisation complète des données. Lorsqu'elle est activée, configurez Queries per second (QPS) to the source database, RPS de la migration complète des données et Vitesse de migration des données pour la migration complète (Mo/s). Disponible uniquement si Synchronisation complète des données est sélectionné. Enable Throttling for Incremental Data Synchronization Limite l'utilisation des ressources pendant la synchronisation incrémentielle. Lorsqu'elle est activée, configurez RPS of Incremental Data Synchronization et Vitesse de synchronisation des données pour la synchronisation incrémentielle (Mo/s). Environment Tag Sélectionnez éventuellement un tag pour identifier l'instance. Whether to delete SQL operations on heartbeat tables of forward and reverse tasks Contrôle si DTS écrit les opérations SQL de la table de heartbeat dans la base de données source. Oui : n'écrit pas les opérations de heartbeat (une latence peut s'afficher pour l'instance DTS). Non : écrit les opérations de heartbeat (peut affecter des fonctionnalités telles que la sauvegarde physique et le clonage de la base de données source). Configure ETL Active la fonctionnalité extract, transform, and load (ETL). Consultez Qu'est-ce que l'ETL ? Oui : configurez l'ETL avec des instructions de traitement des données. Consultez Configurer l'ETL dans une tâche de migration ou de synchronisation des données. Non : ignorez la configuration ETL. Monitoring and Alerting Configure des alertes en cas d'échec de la tâche ou si la latence de synchronisation dépasse un seuil. Oui : configurez le seuil d'alerte et les paramètres de notification. Consultez Configurer la surveillance et les alertes lors de la création d'une tâche DTS. Non : les alertes sont désactivées. -
(Facultatif) Cliquez sur Next: Configure Database and Table Fields. Dans la boîte de dialogue, spécifiez Colonne de clé primaire, Clé de distribution et Moteur pour les tables à synchroniser.
Cette étape est disponible uniquement si Synchronisation du schéma est sélectionné. Définissez Definition Status sur Tous pour afficher et modifier toutes les tables. Vous pouvez sélectionner plusieurs colonnes pour Colonne de clé primaire . Une ou plusieurs de ces colonnes peuvent être utilisées pour Clé de distribution . Pour les tables sans clés primaires ni contraintes uniques, sélectionnez duplicate pour Moteur . Sinon, la tâche peut échouer ou une perte de données peut survenir.
Étape 4 : Exécuter la vérification préalable
Cliquez sur Next: Save Task Settings and Precheck. Pour prévisualiser les paramètres de l'API pour cette configuration de tâche, survolez le bouton et cliquez sur Preview OpenAPI parameters.
-
Attendez la fin de la vérification préalable.
Si la vérification préalable échoue, cliquez sur View Details à côté de chaque élément ayant échoué, résolvez le problème, puis cliquez sur Precheck Again.
-
Si une alerte est déclenchée :
Pour les alertes qui ne peuvent pas être ignorées, cliquez sur View Details, résolvez le problème et exécutez à nouveau la vérification préalable.
Pour les alertes qui peuvent être ignorées, cliquez sur Confirm Alert Details, cliquez sur Ignore dans la boîte de dialogue, cliquez sur OK, puis cliquez sur Precheck Again. Ignorer une alerte peut entraîner une incohérence des données.
La tâche ne peut pas démarrer tant qu'elle n'a pas passé la vérification préalable.
Étape 5 : Acheter et démarrer l'instance
Attendez que le Taux de réussite atteigne 100 %, puis cliquez sur Next: Purchase Instance.
-
Sur la page buy, configurez les paramètres suivants.
Paramètre Description Billing Method Abonnement : payez à l'avance pour une période fixe. Plus rentable pour une utilisation à long terme. Paiement à l'utilisation : 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. Par défaut : groupe de ressources par défaut. Consultez Qu'est-ce que Resource Management ? Instance Class Sélectionnez une classe en fonction de vos exigences de vitesse de synchronisation. Consultez Classes d'instance des instances de synchronisation des données. Subscription Duration Disponible uniquement pour la méthode de facturation Abonnement. Options : 1–9 mois, 1 an, 2 ans, 3 ans 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 dans la boîte de dialogue.
La tâche apparaît dans la liste des tâches. Vous pouvez y suivre sa progression.
Correspondances des types de données
| Catégorie | Type PolarDB for MySQL | Type SelectDB | Notes |
|---|---|---|---|
| Numérique | TINYINT | TINYINT | |
| TINYINT UNSIGNED | SMALLINT | ||
| SMALLINT | SMALLINT | ||
| SMALLINT UNSIGNED | INT | ||
| MEDIUMINT | INT | ||
| MEDIUMINT UNSIGNED | BIGINT | ||
| INT | INT | ||
| INT UNSIGNED | BIGINT | ||
| BIGINT | BIGINT | ||
| BIGINT UNSIGNED | LARGEINT | ||
| BIT(M) | INT | ||
| Décimal | DECIMAL | DECIMAL | L'attribut zerofill n'est pas pris en charge. |
| NUMERIC | DECIMAL | ||
| FLOAT | FLOAT | ||
| DOUBLE | DOUBLE | ||
| BOOL, BOOLEAN | BOOLEAN | ||
| Date et heure | DATE | DATEV2 | |
| DATETIME[(fsp)] | DATETIMEV2 | ||
| TIMESTAMP[(fsp)] | DATETIMEV2 | ||
| TIME[(fsp)] | VARCHAR | ||
| YEAR[(4)] | INT | ||
| Chaîne | CHAR, VARCHAR | VARCHAR | Pour éviter la perte de données, les valeurs CHAR et VARCHAR(n) sont converties en VARCHAR(4*n) dans SelectDB. Si aucune longueur n'est spécifiée, la valeur par défaut VARCHAR(65533) est utilisée. Si la longueur dépasse 65 533, la valeur est convertie en STRING. |
| BINARY, VARBINARY | STRING | ||
| TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT | STRING | ||
| TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB | STRING | ||
| ENUM | STRING | ||
| SET | STRING | ||
| JSON | STRING |
Informations sur les colonnes supplémentaires
Lors de la synchronisation vers une table du modèle Duplicate Key, DTS ajoute automatiquement les colonnes suivantes ou vous demande de les ajouter manuellement.
| Nom | Type de données | Valeur par défaut | Description |
|---|---|---|---|
_is_deleted |
Int | 0 | Indique si la ligne est supprimée. Les opérations INSERT et UPDATE définissent cette valeur sur 0. Les opérations DELETE définissent cette valeur sur 1. |
_version |
Bigint | 0 | Pour les données de synchronisation complète : 0. Pour les données de synchronisation incrémentielle : l'horodatage UNIX (en secondes) du journal binaire source. |
_record_id |
Bigint | 0 | Pour les données de synchronisation complète : 0. Pour les données de synchronisation incrémentielle : l'ID d'enregistrement unique du journal incrémentiel. La valeur est unique et augmente de manière monotone. |