Utilisez Data Transmission Service (DTS) pour répliquer les données d'un cluster PolarDB for MySQL vers une instance AnalyticDB for PostgreSQL afin de prendre en charge vos charges de travail analytiques. DTS gère la création du schéma, le chargement complet des données et la réplication incrémentielle continue au sein d'une seule tâche.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Une instance AnalyticDB for PostgreSQL de destination disposant d'un espace de stockage disponible supérieur à l'espace utilisé par le cluster PolarDB for MySQL source. Consultez Créer une instance.
Une base de données créée dans l'instance AnalyticDB for PostgreSQL de destination pour stocker les données synchronisées. Consultez CREATE DATABASE.
La journalisation binaire activée sur le cluster PolarDB for MySQL source, avec le paramètre
loose_polar_log_bindéfini surON. Consultez Activer la journalisation binaire et Définir les paramètres du cluster et des nœuds.Une rétention des journaux binaires configurée sur au moins 3 jours sur le cluster source (7 jours recommandés). Consultez Modifier la période de rétention.
Des comptes de base de données disposant des autorisations requises. Consultez Autorisations requises pour les comptes de base de données.
L'activation de la journalisation binaire sur un cluster PolarDB for MySQL consomme de l'espace de stockage et engendre des frais.
Facturation
| Type de synchronisation | Tarification |
|---|---|
| Synchronisation du schéma et synchronisation complète des données | Gratuit |
| Synchronisation incrémentielle des données | Payant. Consultez Aperçu de la facturation. |
Autorisations requises pour les comptes de base de données
| Base de données | Autorisations requises | Comment créer et autoriser |
|---|---|---|
| Cluster PolarDB for MySQL source | Autorisations de lecture et d'écriture sur les objets à synchroniser | 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 |
| Instance AnalyticDB for PostgreSQL de destination | Autorisations de lecture et d'écriture sur la base de données de destination | Créer et gérer des utilisateurs et gérer les autorisations des utilisateurs. Vous pouvez également utiliser le compte initial ou un compte disposant des autorisations RDS_SUPERUSER. |
Opérations SQL prises en charge pour la synchronisation incrémentielle
| Type d'opération | Instructions SQL |
|---|---|
| DML | INSERT, UPDATE, DELETE. DTS convertit les instructions UPDATE en REPLACE INTO lors de l'écriture dans la destination. Pour les opérations UPDATE sur les clés primaires, DTS les convertit en instructions DELETE et INSERT. |
| DDL | CREATE TABLE, ALTER TABLE, TRUNCATE TABLE, DROP TABLE |
Limitations
Base de données source
Les tables à synchroniser doivent posséder une clé primaire ou une contrainte UNIQUE avec des champs uniques. Sans cela, des données en double peuvent apparaître dans la base de données de destination.
Pour la synchronisation au niveau des tables nécessitant une édition des tables (comme le mappage des noms de colonnes), une seule tâche prend en charge un maximum de 1 000 tables. Si vous dépassez cette limite, répartissez les tables sur plusieurs tâches ou configurez une tâche pour synchroniser la base de données entière.
La rétention des journaux binaires doit être d'au moins 3 jours. Si DTS ne peut pas obtenir les journaux binaires, la tâche peut échouer, ce qui peut entraîner, dans les cas extrêmes, une incohérence ou une perte de données. Les problèmes liés à une période de rétention inférieure à celle requise ne sont pas couverts par l'accord de niveau de service (SLA) de DTS.
N'exécutez pas d'opérations DDL modifiant les clés primaires ou ajoutant des commentaires aux tables (par exemple,
ALTER TABLE table_name COMMENT='Table comment';) pendant la synchronisation. Ces opérations échoueront.N'exécutez pas d'opérations DDL modifiant les schémas de base de données ou de tables pendant la synchronisation du schéma ou la synchronisation complète. La tâche échouera. Lors de la synchronisation complète, DTS interroge la base de données source, créant ainsi des verrous de métadonnées qui peuvent bloquer les opérations DDL sur la source.
Si la base de données source contient des valeurs de date
0000-00-00 00:00:00, la tâche peut échouer. DTS convertit ces valeurs ennulldans la destination. Pour contourner ce problème, modifiez les valeurs sources en0001-01-01 00:00:00ou configurez le champ de destination pour qu'il accepte les valeurs nulles.
Autres limitations
Seule la synchronisation au niveau des tables est prise en charge.
Les types de données suivants ne sont pas pris en charge : BIT, VARBIT, GEOMETRY, ARRAY, UUID, TSQUERY, TSVECTOR, TXID_SNAPSHOT.
Les index de préfixe ne sont pas pris en charge. Si la source contient des index de préfixe, la synchronisation peut échouer.
La synchronisation depuis un nœud en lecture seule du cluster PolarDB for MySQL source n'est pas prise en charge.
Les tables externes OSS ne peuvent pas être synchronisées depuis la source.
Les types d'objets suivants ne sont pas pris en charge : PARTITION, VIEW, PROCEDURE, FUNCTION, TRIGGER, FK, INDEX.
Les tables Append-Only (AO) ne sont pas prises en charge en tant que tables de destination.
Le basculement primaire/secondaire n'est pas pris en charge lors de la synchronisation initiale complète des données. En cas de basculement, reconfigurez la tâche.
Outils DDL en ligne : pt-online-schema-change n'est pas pris en charge et entraînera l'échec de la tâche. Pour les DDL en ligne en mode table temporaire ou les index basés sur des fonctions sur les colonnes de clé unique, une perte de données ou un échec de la tâche peut survenir.
Si vous utilisez le mappage de colonnes pour une synchronisation partielle des tables, ou si les schémas des tables source et destination sont incohérents, les données des colonnes manquantes dans la table de destination seront perdues.
Si la table à synchroniser possède une clé primaire, la colonne de clé primaire dans la table de destination doit correspondre à celle de la table source. Si la table ne possède pas de clé primaire, la colonne de clé primaire dans la table de destination doit correspondre à la clé de distribution.
La clé unique dans la table de destination, y compris la colonne de clé primaire, doit inclure toutes les colonnes de la clé de distribution.
La synchronisation initiale complète des données exécute des opérations INSERT concurrentes, ce qui provoque une fragmentation. Par conséquent, l'espace de table de l'instance de destination peut être plus grand que celui de la source une fois la synchronisation complète terminée.
Planifiez la synchronisation pendant les heures creuses. La synchronisation complète des données consomme des ressources de lecture et d'écriture sur les deux bases de données et peut augmenter la charge de la base de données.
Pour la synchronisation au niveau des tables, n'écrivez pas d'autres données que celles provenant de DTS dans la base de données de destination. Cela pourrait entraîner une incohérence des données entre la source et la destination.
Pour la synchronisation au niveau des tables, n'utilisez pas pt-online-schema-change pour les opérations DDL en ligne sur les objets de synchronisation dans la base de données source.
Pour la synchronisation au niveau des tables, si aucune donnée autre que celles provenant de DTS n'est écrite dans la base de données de destination, vous pouvez utiliser Data Management (DMS) pour les opérations DDL en ligne. Consultez Modifier les schémas sans verrouiller les tables.
En cas d'échec d'une tâche, l'équipe support de DTS tentera de la restaurer sous 8 heures. Elle peut redémarrer la tâche ou ajuster les paramètres de la tâche DTS (et non les paramètres de la base de données). Les paramètres susceptibles d'être ajustés sont répertoriés dans Modifier les paramètres de l'instance.
Comportement de résolution des conflits
| Phase | En cas de conflits de clé primaire ou unique | Résultat |
|---|---|---|
| Synchronisation complète des données | Schémas cohérents : l'enregistrement existe dans la destination avec la même clé primaire/unique | DTS conserve l'enregistrement de destination et ignore l'enregistrement source |
| Synchronisation incrémentielle | Schémas cohérents : l'enregistrement existe dans la destination avec la même clé primaire/unique | DTS écrase l'enregistrement de destination avec l'enregistrement source |
| Toute phase | Schémas incohérents | L'initialisation des données peut échouer, entraînant un échec partiel ou total de la synchronisation |
Remarques d'utilisation
DTS exécute périodiquement
CREATE DATABASE IF NOT EXISTS \test\`` sur la base de données source pour faire avancer le décalage du journal binaire.Lors de l'utilisation de DMS ou gh-ost pour les modifications DDL en ligne, configurez le paramètre avancé Copy the temporary table of the Online DDL tool en conséquence.
Créer une tâche de synchronisation
La configuration de la tâche comprend huit étapes : ouvrir la page de la tâche, connecter les bases de données source et de destination, sélectionner les objets de synchronisation, configurer les paramètres avancés, éventuellement configurer la vérification des données, éventuellement configurer les champs des tables de destination, exécuter la prévérification et acheter l'instance.
Étape 1 : Ouvrir la page de configuration de la tâche
Connectez-vous à la console Data Management (DMS).
Dans la barre de navigation supérieure, cliquez sur Data + AI.
-
Dans le volet de navigation de gauche, choisissez DTS (DTS) > Data Synchronization.
Le chemin de navigation peut varier selon le mode et la disposition de la console DMS. Consultez Console en mode simple et Personnaliser la disposition et le style de la console DMS . Vous pouvez également accéder directement à la page des tâches de synchronisation des données de la console DTS .
Cliquez sur Create Task.
Étape 2 : Configurer les bases de données source et de destination
Sur la page de configuration de la tâche, renseignez les champs suivants :
| Catégorie | Champ | Description |
|---|---|---|
| N/A | Nom de la tâche | DTS génère automatiquement un nom. Spécifiez un nom descriptif pour une identification facile. Le nom n'a pas besoin d'être unique. |
| Base de données source | Sélectionner une connexion existante | Sélectionnez une instance de base de données enregistrée dans la liste déroulante pour remplir automatiquement les champs ci-dessous, ou configurez les champs manuellement. Dans la console DMS, ce champ est intitulé Select a DMS database instance. |
| Type de base de données | Sélectionnez PolarDB for MySQL. | |
| Méthode d'accès | Sélectionnez Alibaba Cloud Instance. | |
| Région de l'instance | Sélectionnez la région où réside le cluster PolarDB for MySQL source. | |
| Répliquer les données entre les comptes Alibaba Cloud | Sélectionnez No si l'instance source appartient au compte Alibaba Cloud actuel. | |
| ID du cluster PolarDB | Sélectionnez l'ID du cluster PolarDB for MySQL source. | |
| Compte de base de données | Saisissez le compte de base de données pour le cluster source. Consultez Autorisations requises pour les comptes de base de données. | |
| Mot de passe de la base de données | Saisissez le mot de passe du compte de base de données. | |
| Base de données de destination | Sélectionner une connexion existante | Sélectionnez une instance de base de données enregistrée dans la liste déroulante pour remplir automatiquement les champs ci-dessous, ou configurez les champs manuellement. Dans la console DMS, ce champ est intitulé Select a DMS database instance. |
| Type de base de données | Sélectionnez AnalyticDB for PostgreSQL. | |
| Méthode d'accès | Sélectionnez Alibaba Cloud Instance. | |
| Région de l'instance | Sélectionnez la région où réside l'instance AnalyticDB for PostgreSQL de destination. | |
| ID de l'instance | Sélectionnez l'ID de l'instance AnalyticDB for PostgreSQL de destination. | |
| Nom de la base de données | Saisissez le nom de la base de données de destination qui recevra les données synchronisées. | |
| Compte de base de données | Saisissez le compte de base de données pour l'instance de destination. Consultez Autorisations requises pour les comptes de base de données. | |
| Mot de passe de la base de données | Saisissez le mot de passe du compte de base de données. |
Après avoir rempli tous les champs, cliquez sur Test Connectivity and Proceed.
Assurez-vous que les blocs d'adresses IP de DTS ont été ajoutés aux paramètres de sécurité des bases de données source et de destination, soit automatiquement par DTS, soit manuellement. Consultez Ajouter la liste d'autorisation d'adresses IP des serveurs DTS .
Étape 3 : Configurer les objets de synchronisation
Sur la page Configure Objects
Synchronization types
DTS sélectionne toujours Incremental Data Synchronization. Sélectionnez également Schema Synchronization et Full Data Synchronization (sélectionné par défaut). Après la prévérification, DTS initialise l'instance de destination avec les données complètes des objets source sélectionnés, ce qui sert de référence pour la synchronisation incrémentielle ultérieure. Avec les trois types activés, DTS :
Copie le schéma vers la destination.
Charge un instantané complet des objets source sélectionnés comme référence.
Applique les modifications incrémentielles continues issues du journal binaire.
Objets et opérations
| Champ | Description |
|---|---|
| DDL and DML Operations to Be Synchronized | Sélectionnez les opérations DDL ou DML à synchroniser au niveau de l'instance. Pour sélectionner des opérations pour une base de données ou une table spécifique, faites un clic droit sur l'objet dans la zone Selected Objects. Consultez Opérations SQL prises en charge pour la synchronisation incrémentielle. |
| Processing Mode of Conflicting Tables | Precheck and Report Errors : Vérifie la présence de tables portant le même nom dans la destination. Si des tables conflictuelles sont trouvées, la prévérification signale une erreur et la tâche ne démarre pas. Si vous ne pouvez pas supprimer ou renommer la table conflictuelle, utilisez le mappage des noms d'objets pour la renommer dans la destination. Ignore Errors and Proceed : Ignore la vérification des tables en double. Utilisez cette option avec prudence, car elle peut entraîner une incohérence des données. Consultez Comportement de résolution des conflits pour plus de détails. |
| Storage Engine Type | Sélectionnez le moteur de stockage pour les tables de destination. La valeur par défaut est Beam. Ce champ n'est disponible que si la version du noyau de l'instance AnalyticDB for PostgreSQL de destination est v7.0.6.6 ou ultérieure et si Schema Synchronization est sélectionné. |
| Capitalization of Object Names in Destination Instance | Configurez la politique de casse 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 Politique de casse pour les noms d'objets de destination. |
| Source Objects | Cliquez sur les objets dans la zone Source Objects, puis cliquez sur la flèche droite pour les déplacer vers la zone Selected Objects. Sélectionnez des bases de données ou des tables comme objets de synchronisation. |
| Selected Objects | Pour renommer un seul objet, faites un clic droit dessus dans la zone Selected Objects. Consultez Mapper un seul nom d'objet. Pour renommer plusieurs objets en masse, cliquez sur Batch Edit dans le coin supérieur droit. Consultez Mapper plusieurs noms d'objets en masse. Pour filtrer les lignes d'une table, faites un clic droit sur la table et configurez les conditions de filtrage. Consultez Définir les conditions de filtrage. Si vous utilisez le mappage des noms d'objets, la synchronisation des objets dépendants peut échouer. |
Étape 4 : Configurer les paramètres avancés
Cliquez sur Next: Advanced Settings et configurez les options suivantes :
| Champ | Description |
|---|---|
| Dedicated Cluster for Task Scheduling | Par défaut, DTS utilise un cluster partagé. Pour améliorer la stabilité de la tâche, achetez un cluster dédié. Consultez Qu'est-ce qu'un cluster dédié DTS ?. |
| Copy the temporary table of the Online DDL tool that is generated in the source table to the destination database. | Si la source utilise DMS ou gh-ost pour les modifications DDL en ligne, sélectionnez la manière dont DTS gère les tables temporaires générées. Yesalert notifications : Synchronise les tables temporaires. Des tables temporaires volumineuses peuvent entraîner une latence de synchronisation. No, Adapt to DMS Online DDL : Ne synchronise pas les tables temporaires. Synchronise uniquement les instructions DDL originales de DMS. Cela provoque des verrous de table sur la destination. No, Adapt to gh-ost : Ne synchronise pas les tables temporaires. Synchronise uniquement les instructions DDL originales de gh-ost. Cela provoque des verrous de table sur la destination. Remarque : DTS ne prend pas en charge pt-online-schema-change pour les modifications DDL en ligne ; son utilisation entraînera l'échec de la tâche. |
| Retry Time for Failed Connections | Si la connexion à la source ou à la destination échoue, DTS effectue immédiatement une nouvelle tentative. Valeur par défaut : 720 minutes. Plage : 10–1 440 minutes. Définissez une valeur d'au moins 30 minutes. Si plusieurs instances DTS partagent une source ou une destination, DTS applique la durée de nouvelle tentative la plus courte configurée parmi toutes les instances. DTS facture le temps d'exécution de la tâche pendant les nouvelles tentatives. |
| Retry Time for Other Issues | Si un problème autre qu'une connexion survient (par exemple, une erreur d'exécution DDL ou DML), DTS effectue immédiatement une nouvelle tentative. Valeur par défaut : 10 minutes. Plage : 1–1 440 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 le taux de synchronisation complète pour réduire la charge sur les bases de données. Définissez Queries per second (QPS) 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é. Vous pouvez également ajuster le débit pendant l'exécution de la tâche. |
| Enable Throttling for Incremental Data Synchronization | Limitez le taux de synchronisation incrémentielle en définissant RPS of Incremental Data Synchronization et Data synchronization speed for incremental synchronization (MB/s). |
| Environment Tag | Sélectionnez un tag pour identifier l'instance en fonction de vos besoins métier. |
| Whether to delete SQL operations on heartbeat tables of forward and reverse tasks | Yes : DTS n'écrit pas de SQL de heartbeat dans la base de données source. L'instance DTS peut afficher une latence. No : DTS écrit du SQL de heartbeat dans la base de données source. Cela peut interférer avec des opérations telles que les sauvegardes physiques et le clonage. |
| Configure ETL | Activez la fonctionnalité extract, transform, and load (ETL) pour transformer les données en transit. Yes : Saisissez les 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 : Désactivez ETL. Consultez Qu'est-ce que ETL ?. |
| Monitoring and Alerting | Yes : Configurez des alertes pour les échecs de tâche ou la latence dépassant un seuil. Définissez le seuil d'alerte et les contacts de notification. Consultez Configurer la surveillance et les alertes lors de la configuration de la tâche. No : Aucune alerte. |
Étape 5 : Configurer la vérification des données (facultatif)
Cliquez sur Data Verification pour configurer une tâche de vérification des données. Consultez Configurer la vérification des données.
Étape 6 : Configurer les champs des tables de destination (facultatif)
Cliquez sur Next: Configure Database and Table Fields pour définir le Type, la Primary Key Column et la Distribution Key pour chaque table de destination dans AnalyticDB for PostgreSQL.
Cette étape n'est disponible que lorsque Schema Synchronization est sélectionné. Définissez Definition Status sur All pour modifier les champs. Pour former une clé primaire composite, spécifiez plusieurs colonnes dans Primary Key Column , puis sélectionnez une ou plusieurs de ces colonnes comme Distribution Key . Consultez Gérer les tables et Définir la distribution des tables .
Étape 7 : Exécuter la prévérification
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 Next: Save Task Settings and Precheck et cliquez sur Preview OpenAPI parameters .
Avant le démarrage d'une tâche de synchronisation, DTS effectue une prévérification. La tâche ne démarre que si la prévérification réussit.
Si la prévérification échoue, cliquez sur View Details à côté de l'élément ayant échoué, corrigez le problème et relancez la prévérification.
-
Si la prévérification renvoie des avertissements :
Pour les avertissements non ignorables, cliquez sur View Details, corrigez le problème et relancez la prévérification.
Pour les avertissements ignorables, cliquez sur Confirm Alert Details, puis sur Ignore, puis sur OK, puis sur Precheck Again pour continuer. Ignorer les avertissements peut entraîner des incohérences de données. Procédez avec prudence.
Étape 8 : Acheter et démarrer l'instance
Lorsque le Success Rate atteint 100 %, cliquez sur Next: Purchase Instance.
Sur la page Purchase, sélectionnez la méthode de facturation et la classe d'instance :
| Catégorie | Paramètre | Description |
|---|---|---|
| New Instance Class | Méthode de facturation | Subscription : Payez à l'avance pour une durée déterminée. Rentable pour les tâches continues à long terme. Options mensuelles : 1 à 9 mois. Options annuelles : 1, 2, 3 ou 5 ans. Pay-as-you-go : Facturé à l'heure en fonction de l'utilisation réelle. Adapté aux tâches de courte durée ou aux tests. |
| Resource Group Settings | Le groupe de ressources pour l'instance. Par défaut : default resource group. Consultez Qu'est-ce que Resource Management ?. | |
| Instance Class | Sélectionnez une spécification en fonction du taux de synchronisation requis. Consultez Spécifications des liens de synchronisation de données. | |
| Subscription Duration | En mode abonnement, sélectionnez la durée et la quantité de l'instance. Les options mensuelles vont de 1 à 9 mois. Les options annuelles incluent 1, 2, 3 ou 5 ans. |
Lisez et acceptez les Data Transmission Service (Pay-as-you-go) Service Terms, puis cliquez sur Buy and Start et confirmez dans la boîte de dialogue.
Surveillez la progression de la tâche sur la page des tâches de synchronisation des données.Page des tâches de synchronisation des données de la nouvelle console DTS
Étapes suivantes
Pour vérifier que les données sont correctement synchronisées, configurez une tâche de vérification des données. Consultez Configurer la vérification des données.
Pour modifier les objets de synchronisation ou les paramètres de la tâche après le démarrage de la tâche, consultez Modifier les paramètres de l'instance.