Utilisez Data Transmission Service (DTS) pour synchroniser les données d'une instance ApsaraDB RDS for PostgreSQL vers une instance ApsaraDB RDS for MySQL.
Prérequis
Une instance ApsaraDB RDS for PostgreSQL est créée en tant que source. Pour plus d'informations, consultez la rubrique Créer rapidement une instance ApsaraDB RDS for PostgreSQL.
Une instance ApsaraDB RDS for MySQL est créée en tant que destination. Pour plus d'informations, consultez la rubrique Étape 1 : Créer une instance RDS MySQL et configurer une base de données.
L'instance ApsaraDB RDS for MySQL de destination dispose d'un espace de stockage disponible supérieur à la taille totale des données de l'instance ApsaraDB RDS for PostgreSQL source.
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. Pour plus d'informations, consultez la rubrique Présentation de la facturation. |
Topologies de synchronisation prises en charge
Synchronisation unidirectionnelle un-à-un
Synchronisation unidirectionnelle un-à-plusieurs
Synchronisation en cascade unidirectionnelle
Synchronisation unidirectionnelle plusieurs-à-un
Pour plus d'informations, consultez la rubrique Topologies de synchronisation.
Opérations SQL synchronisables
|
Type d'opération |
Instruction SQL |
|
DML (Data Manipulation Language) |
INSERT, UPDATE et DELETE |
Remarques sur l'utilisation
Comportement des clés étrangères
Lors de la synchronisation du schéma, DTS synchronise les clés étrangères de la base de données source vers la base de données de destination.
Pendant la synchronisation complète et incrémentielle des données, DTS désactive temporairement les vérifications de contraintes et les opérations en cascade sur les clés étrangères au niveau de la session.
Si vous effectuez des opérations de mise à jour et de suppression en cascade sur la base de données source pendant la synchronisation des données, des incohérences de données peuvent survenir.
Exigences relatives à la base de données source
Clés primaires et contraintes d'unicité
Les tables à synchroniser doivent disposer de contraintes PRIMARY KEY ou UNIQUE, et tous les champs doivent être uniques. Dans le cas contraire, la base de données de destination peut contenir des enregistrements de données en double.
Si une table de destination existe déjà car l'option Schema Synchronization n'a pas été sélectionnée pour le paramètre Synchronization Types, assurez-vous que la table possède les mêmes contraintes PRIMARY KEY ou NOT NULL UNIQUE que la table source. Sinon, la base de données de destination peut contenir des enregistrements de données en double.
Limite du nombre de tables
Lorsque vous sélectionnez des tables comme objets à synchroniser et que vous les modifiez (par exemple, en renommant des tables ou des colonnes dans la base de données de destination), une seule tâche de synchronisation de données prend en charge jusqu'à 5 000 tables. Pour synchroniser plus de 5 000 tables, configurez plusieurs tâches ou synchronisez la base de données entière.
Exigences relatives aux journaux WAL
Définissez le paramètre
wal_levelsurlogical.Synchronisation incrémentielle uniquement : Conservez les journaux WAL pendant plus de 24 heures.
Synchronisation complète et incrémentielle : Conservez les journaux WAL pendant au moins sept jours. Une fois la synchronisation complète des données terminée, vous pouvez réduire la période de conservation à plus de 24 heures.
Si DTS ne parvient pas à obtenir les journaux WAL en raison d'une période de conservation insuffisante, la tâche peut échouer. Dans des circonstances exceptionnelles, des incohérences ou des pertes de données peuvent survenir. Le respect de ces exigences de conservation est nécessaire pour que DTS respecte l'accord de niveau de service (SLA).
Opérations sur la base de données source
Basculement primaire/secondaire : Activez la fonctionnalité Logical Replication Slot Failover avant d'effectuer un basculement primaire/secondaire sur l'instance ApsaraDB RDS for PostgreSQL source. Cela permet d'éviter l'interruption des abonnements logiques et de maintenir la tâche de synchronisation des données en cours d'exécution comme prévu. Pour plus d'informations, consultez la rubrique Logical Replication Slot Failover.
Enregistrements de données volumineux : Si un seul enregistrement de données à synchroniser depuis la base de données source dépasse 256 Mo lors de modifications incrémentielles des données, l'instance de synchronisation des données en cours d'exécution échoue et ne peut pas être récupérée. Vous devez reconfigurer la tâche.
Restrictions DDL : N'exécutez pas d'instructions DDL (Data Definition Language) pour modifier les schémas de base de données ou de tables pendant la synchronisation du schéma et la synchronisation complète des données. Sinon, la tâche échouera.
Transactions de longue durée
Si la base de données source comporte des transactions de longue durée pendant la synchronisation incrémentielle des données, les journaux WAL générés avant la validation de ces transactions peuvent s'accumuler. Cela risque d'épuiser l'espace disque de la base de données source.
Mises à niveau majeures de version
N'effectuez pas de mise à niveau majeure de version sur la base de données source pendant qu'une instance de synchronisation de données est en cours d'exécution. Une mise à niveau majeure entraîne l'échec de l'instance, qui ne peut pas être récupéré. Vous devez reconfigurer la tâche.
Exigences relatives à la base de données de destination
Jeu de caractères pour les caractères de 4 octets
Si les données à synchroniser contiennent des caractères occupant quatre octets, tels que des emojis ou des caractères rares, les bases de données et les tables de destination doivent utiliser le jeu de caractères utf8mb4.
Si vous utilisez la fonctionnalité de synchronisation de schéma de DTS, définissez le paramètre d'instance character_set_server dans la base de données de destination sur utf8mb4.
Restrictions de synchronisation
Une base de données par tâche
Une tâche de synchronisation de données ne peut synchroniser les données que d'une seule base de données. Pour synchroniser les données de plusieurs bases de données, créez une tâche distincte pour chaque base de données.
Héritage inter-schéma
DTS ne peut pas synchroniser les tables ayant des relations d'héritage entre différents schémas.
Nouvelles tables ou tables renommées lors de la synchronisation au niveau du schéma
Lorsque vous sélectionnez un schéma comme objet de synchronisation et que vous créez une nouvelle table ou renommez une table avec la commande RENAME, exécutez l'instruction suivante avant d'écrire des données dans la table :
ALTER TABLE schema.table REPLICA IDENTITY FULL;
Remplacez schema et table par les noms réels du schéma et de la table. Cela garantit la cohérence des données.
Exécutez cette opération pendant les heures creuses. Ne verrouillez pas la table lors de l'exécution de cette instruction. Sinon, un interblocage se produira.
Sensibilité à la casse des noms de colonnes dans MySQL
Les noms de colonnes dans les bases de données MySQL ne sont pas sensibles à la casse. Si plusieurs colonnes de la base de données source ont des noms qui ne diffèrent que par la casse, elles seront écrites dans la même colonne de la base de données MySQL de destination lors de la synchronisation. Cela peut entraîner des résultats inattendus.
Objets gérés par DTS dans la base de données source
Tables temporaires
DTS crée les tables temporaires suivantes dans la base de données source pour les instructions DDL incrémentielles, les schémas de table et les informations de pulsation. Ne supprimez pas ces tables pendant la synchronisation des données. Elles sont automatiquement supprimées lorsque l'instance DTS est libérée.
public.dts_pg_classpublic.dts_pg_attributepublic.dts_pg_typepublic.dts_pg_enumpublic.dts_postgres_heartbeatpublic.dts_ddl_commandpublic.dts_args_session
Les instructions DDL obtenues via ces tables temporaires ne sont pas écrites dans la base de données de destination.
Table de pulsation
DTS ajoute une table de pulsation nommée dts_postgres_heartbeat à la base de données source pour maintenir des mesures précises de la latence de synchronisation.
Emplacement de réplication
DTS crée un emplacement de réplication préfixé par dts_sync_ dans la base de données source. L'emplacement récupère les journaux incrémentiels de la base de données source au cours des 15 dernières minutes.
L'emplacement de réplication est automatiquement supprimé lorsque l'instance DTS est libérée. Toutefois, si vous modifiez le mot de passe de la base de données source ou retirez les blocs CIDR des serveurs DTS de la liste d'autorisation d'adresses IP, l'emplacement de réplication ne peut pas être supprimé automatiquement. Dans ce cas, supprimez manuellement l'emplacement de réplication pour éviter l'accumulation de journaux.
Si la tâche de synchronisation des données est libérée ou échoue, DTS supprime automatiquement l'emplacement de réplication. Si un basculement primaire/secondaire est effectué sur l'instance ApsaraDB RDS for PostgreSQL source, connectez-vous à la base de données secondaire et supprimez manuellement l'emplacement de réplication.
Performances et opérations
Considérations relatives aux performances
Évaluez l'impact de la synchronisation des données sur les bases de données source et de destination avant de commencer. Synchronisez les données pendant les heures creuses dans la mesure du possible. Lors de la synchronisation initiale complète des données, DTS utilise les ressources de lecture et d'écriture des deux bases de données, ce qui peut augmenter la charge du serveur.
Lors de la synchronisation initiale complète des données, les opérations INSERT simultanées provoquent une fragmentation dans les tables de destination. Par conséquent, l'espace de table de destination est plus grand que l'espace de table source une fois la synchronisation complète terminée.
DDL en ligne avec Data Management Service (DMS)
Si seul DTS écrit les données de table dans la base de données de destination, vous pouvez utiliser DMS pour effectuer des opérations DDL en ligne sur les tables sources pendant la synchronisation des données. Pour plus d'informations, consultez la rubrique Effectuer des modifications de schéma sans verrouillage à l'aide de tickets de modification sans verrouillage.
Si des données provenant d'autres sources sont écrites dans la base de données de destination pendant la synchronisation, des incohérences de données surviennent. Si vous utilisez DMS pour exécuter des instructions DDL en ligne pendant que d'autres sources écrivent dans la base de données de destination, des pertes de données peuvent survenir.
Instructions DDL ayant échoué
Si les instructions DDL échouent lors de leur exécution dans la base de données de destination, la tâche DTS continue de s'exécuter. Consultez les instructions DDL ayant échoué dans les journaux de la tâche. Pour plus d'informations, consultez la rubrique Afficher les journaux de tâche.
Vérification post-synchronisation
Une fois la synchronisation des données terminée (le Status de l'instance passe à Completed), exécutez la commande suivante pour vérifier que les données sont écrites dans la table de destination :
analyze table <Table name>
Si un basculement haute disponibilité (HA) est déclenché dans la base de données MySQL source, les données peuvent être écrites uniquement en mémoire, ce qui entraîne une perte de données.
Récupération après échec d'une tâche DTS
Si une tâche DTS échoue, l'assistance technique DTS tentera de restaurer la tâche dans un délai de 8 heures. Pendant ce processus, la tâche peut être redémarrée et les paramètres de la tâche peuvent être modifiés.
Seuls les paramètres de la tâche peuvent être modifiés ; les paramètres de la base de données ne sont pas modifiés. Les paramètres susceptibles d'être modifiés incluent, mais ne sont pas limités à, ceux décrits dans la section Modifier les paramètres de l'instance de la rubrique Modification des paramètres d'une instance DTS.
Exigences spécifiques à la source
Source ApsaraDB RDS for PostgreSQL : Ne modifiez pas le endpoint ni la zone de l'instance ApsaraDB RDS for PostgreSQL pendant la synchronisation des données. Sinon, la tâche échouera.
Source PostgreSQL auto-gérée : Les valeurs des paramètres
max_wal_sendersetmax_replication_slotsdoivent être supérieures à la somme des emplacements de réplication utilisés dans la base de données PostgreSQL auto-gérée plus le nombre d'instances DTS à créer pour cette base de données.-
Source Google Cloud SQL for PostgreSQL : Définissez le paramètre Database Account sur un compte de base de données disposant de l'autorisation
cloudsqlsuperuser. Sélectionnez uniquement les objets que le compte spécifié est autorisé à gérer. Alternativement, accordez l'autorisation OWNER sur les objets sélectionnés au compte spécifié.RemarqueUn compte disposant de l'autorisation
cloudsqlsuperuserne peut pas gérer les données appartenant à d'autres comptes disposant de l'autorisationcloudsqlsuperuser.
Procédure
-
Accédez à la page Data Synchronization de la nouvelle console DTS.
RemarqueVous pouvez également vous connecter à la console DMS. Dans la barre de navigation supérieure, placez le pointeur sur Data + AI et choisissez DTS (DTS) > Data Synchronization.
Dans le coin supérieur gauche de la page, sélectionnez la région où réside l'instance de synchronisation de données.
-
Cliquez sur Create Task. Configurez les bases de données source et de destination.
AvertissementAprès avoir configuré les bases de données source et de destination, lisez les Limits affichées sur la page. Le non-respect de ces limites peut entraîner l'échec de la tâche ou des incohérences de données.
RemarqueSi la version de l'instance ApsaraDB RDS for PostgreSQL source est la 9,4 et que vous synchronisez uniquement les opérations DML, seule l'autorisation REPLICATION est requise pour le compte de base de données.
Task settings
Parameter
Value
Task Name
DTS génère automatiquement un nom de tâche. Spécifiez un nom descriptif permettant d'identifier facilement la tâche. Un nom de tâche unique n'est pas requis.
Source database settings
Parameter
Value
Database Type
Sélectionnez PostgreSQL.
Connection Type
Sélectionnez Alibaba Cloud Instance.
Instance Region
La région de l'instance ApsaraDB RDS for PostgreSQL source.
Instance ID
L'ID de l'instance ApsaraDB RDS for PostgreSQL source.
Database Name
Le nom de la base de données source dans l'instance ApsaraDB RDS for PostgreSQL.
Database Account
Un compte privilégié de l'instance ApsaraDB RDS for PostgreSQL source. Le compte doit être le propriétaire de la base de données. Pour plus d'informations, consultez les rubriques Créer un compte et Créer une base de données.
Database Password
Le mot de passe du compte de base de données.
Destination Database
Parameter
Value
Database Type
Sélectionnez MySQL.
Connection Type
Sélectionnez Alibaba Cloud Instance.
Instance Region
La région de l'instance ApsaraDB RDS for MySQL de destination.
RDS Instance ID
L'ID de l'instance ApsaraDB RDS for MySQL de destination.
Database Account
Le compte de base de données de l'instance ApsaraDB RDS for MySQL de destination. Le compte doit disposer des autorisations de lecture et d'écriture sur la base de données de destination.
Database Password
Le mot de passe du compte de base de données.
Encryption
Sélectionnez Non-encrypted ou SSL-encrypted en fonction de vos besoins professionnels. Pour utiliser SSL-encrypted, activez le chiffrement SSL sur l'instance ApsaraDB RDS for MySQL avant de configurer la tâche DTS. Pour plus d'informations, consultez la rubrique Utiliser un certificat cloud pour activer le chiffrement SSL.
-
Cliquez sur Test Connectivity and Proceed. Si la base de données source ou de destination est une instance de base de données Alibaba Cloud (telle qu'une instance ApsaraDB RDS for MySQL ou une instance ApsaraDB for MongoDB), DTS ajoute automatiquement les blocs CIDR des serveurs DTS à la liste d'autorisation de l'instance. Si la base de données source ou de destination est une base de données auto-gérée hébergée sur une instance Elastic Compute Service (ECS), DTS ajoute automatiquement les blocs CIDR des serveurs DTS aux règles du groupe de sécurité de l'instance ECS, et vous devez vous assurer que l'instance ECS peut accéder à la base de données. Si la base de données est déployée sur plusieurs instances ECS, ajoutez manuellement les blocs CIDR des serveurs DTS aux règles du groupe de sécurité de chaque instance ECS. Si la base de données source ou de destination est une base de données auto-gérée déployée dans un centre de données ou fournie par un fournisseur de services cloud tiers, ajoutez manuellement les blocs CIDR des serveurs DTS à la liste d'autorisation de la base de données. Pour plus d'informations, consultez la section Ajouter les adresses IP des serveurs DTS à la liste d'autorisation de la rubrique Ajout des blocs CIDR des serveurs DTS.
AvertissementL'ajout des blocs CIDR des serveurs DTS à la liste d'autorisation de la base de données ou de l'instance, ou aux règles du groupe de sécurité ECS, peut introduire des risques de sécurité. Avant d'utiliser DTS, comprenez et acceptez les risques potentiels. Prenez des mesures préventives, notamment : renforcer la sécurité des noms d'utilisateur et des mots de passe, limiter les ports exposés, authentifier les appels API, examiner régulièrement la liste d'autorisation ou les règles du groupe de sécurité ECS pour supprimer les blocs CIDR non autorisés, ou connecter la base de données à DTS via Express Connect, VPN Gateway ou Smart Access Gateway.
-
Configurez les objets à synchroniser et les paramètres avancés.
Remarque- Si des noms de tables identiques existent dans les bases de données source et de destination et que vous ne pouvez pas supprimer ou renommer les tables de destination, utilisez la fonctionnalité de mappage de noms d'objets. Pour plus d'informations, consultez la rubrique Mappage de noms d'objets. - Si vous sélectionnez Ignore Errors and Proceed et que les bases de données source et de destination ont le même schéma avec des valeurs de clé primaire ou de clé unique correspondantes : lors de la synchronisation complète des données, DTS ne synchronise pas l'enregistrement conflictuel et conserve l'enregistrement existant dans la destination. Lors de la synchronisation incrémentielle des données, DTS écrase l'enregistrement existant. Si les schémas diffèrent, l'initialisation des données peut échouer, seules certaines colonnes peuvent être synchronisées ou la tâche peut échouer.
Remarque- Pour sélectionner des opérations SQL pour une base de données ou une table spécifique, cliquez avec le bouton droit sur un objet dans la section Selected Objects et sélectionnez les opérations à synchroniser. Pour les opérations prises en charge, consultez la section Opérations SQL pouvant être synchronisées. - Pour filtrer les données avec des conditions WHERE, cliquez avec le bouton droit sur un objet dans la section Selected Objects et spécifiez les conditions de filtrage. Pour plus d'informations, consultez la rubrique Filtrer les données de tâche avec une condition SQL.
Remarque- Si vous spécifiez différentes plages de temps de nouvelle tentative pour plusieurs tâches partageant la même base de données source ou de destination, la plage de temps de nouvelle tentative la plus courte est prioritaire. - DTS facture l'instance pendant la période de nouvelle tentative. Définissez le temps de nouvelle tentative en fonction de vos besoins professionnels. Libérez l'instance DTS rapidement après la libération des instances source et de destination.
Basic settings
Parameter
Value
Synchronization Types
Incremental Data Synchronization est sélectionné par défaut. Vous pouvez sélectionner uniquement Full Data Synchronization. Vous ne pouvez pas sélectionner Schema Synchronization. Lorsque Full Data Synchronization est sélectionné, DTS synchronise les données historiques des objets sélectionnés de la base de données source vers la base de données de destination une fois la pré-vérification terminée. Les données historiques servent de base à la synchronisation incrémentielle ultérieure.
Processing Mode of Conflicting Tables
Precheck and Report Errors : Vérifie si la base de données de destination contient des tables portant les mêmes noms que les tables de la base de données source. Si des noms de tables identiques existent, une erreur est renvoyée lors de la pré-vérification et la tâche ne peut pas démarrer. Ignore Errors and Proceed : Ignore la pré-vérification pour les noms de tables identiques. Consultez les remarques ci-dessous pour plus de détails sur le comportement.
Source Objects
Sélectionnez un ou plusieurs objets dans la section Source Objects et cliquez sur l'icône de flèche vers la droite pour les ajouter à la section Selected Objects. Vous pouvez sélectionner des colonnes, des tables ou des bases de données comme objets à synchroniser. Si vous sélectionnez des tables ou des colonnes, DTS ne synchronise pas d'autres objets tels que les vues, les déclencheurs et les procédures stockées.
Selected Objects
Pour renommer un objet dans l'instance de destination, cliquez dessus avec le bouton droit dans Selected Objects. Pour plus d'informations, consultez la rubrique Mappage de noms d'objets. Pour renommer plusieurs objets à la fois, cliquez sur Batch Edit dans le coin supérieur droit de la section Selected Objects. Pour plus d'informations, consultez la rubrique Mappage de noms d'objets.
Advanced settings
Parameter
Value
Monitoring and Alerting
Indique s'il faut configurer des alertes pour la tâche. Si la tâche échoue ou si la latence de synchronisation dépasse le seuil spécifié, les contacts d'alerte reçoivent des notifications. Sélectionnez No pour désactiver les alertes, ou Yes pour configurer les seuils d'alerte et les paramètres de notification. Pour plus d'informations, consultez la rubrique Configurer la surveillance et les alertes.
Retry Time for Failed Connections
La durée (en minutes) pendant laquelle DTS tente de reconnecter si la base de données source ou de destination devient inaccessible après le démarrage de la tâche. Valeurs valides : 10 à 1440. Par défaut : 720. Recommandé : supérieur à 30. Si DTS se reconnecte dans ce délai, la tâche reprend. Sinon, la tâche échoue.
Configure ETL
Indique s'il faut activer l'extraction, la transformation et le chargement (ETL). Sélectionnez Yes pour saisir des instructions de traitement des données dans l'éditeur de code, ou No pour ignorer. Pour plus d'informations, consultez les rubriques Qu'est-ce que l'ETL ? et Configurer l'ETL dans les tâches de migration ou de synchronisation DTS.
-
Enregistrez les paramètres de la tâche et exécutez une pré-vérification.
Pour afficher les paramètres API pour configurer cette tâche DTS, placez le pointeur sur Next: Save Task Settings and Precheck et cliquez sur Preview OpenAPI parameters.
Lorsque vous êtes prêt, cliquez sur Next: Save Task Settings and Precheck.
Remarque- DTS effectue une pré-vérification avant que la tâche ne puisse démarrer. La tâche ne peut démarrer qu'après avoir réussi la pré-vérification. - Si la pré-vérification échoue, cliquez sur View Details à côté de chaque élément ayant échoué, analysez les causes, résolvez les problèmes et relancez la pré-vérification. - Si une alerte est déclenchée pendant la pré-vérification : - Si l'élément d'alerte ne peut pas être ignoré, cliquez sur View Details, résolvez le problème et cliquez sur Precheck Again. - Si l'élément d'alerte peut être ignoré, cliquez sur Confirm Alert Details. Dans la boîte de dialogue View Details, cliquez sur Ignore, puis cliquez sur OK. Cliquez sur Precheck Again pour relancer la pré-vérification. Ignorer les éléments d'alerte peut entraîner des incohérences de données et exposer votre activité à des risques potentiels.
Attendez que le Success Rate atteigne 100%, puis cliquez sur Next: Purchase Instance.
-
Sur la page buy, configurez la méthode de facturation et la classe d'instance pour l'instance de synchronisation de données.
Section
Parameter
Value
New Instance Class
Billing Method
Subscription : Payez à l'avance lors de la création de l'instance. Plus rentable pour une utilisation à long terme. Pay-as-you-go : Facturé à l'heure. Convient pour une utilisation à court terme. Libérez l'instance lorsqu'elle n'est plus nécessaire pour réduire les coûts.
Resource Group Settings
Le groupe de ressources auquel appartient l'instance de synchronisation de données. Valeur par défaut : default resource group. Pour plus d'informations, consultez la rubrique Qu'est-ce que la gestion des ressources ?
Instance Class
Sélectionnez une classe d'instance en fonction de vos exigences de vitesse de synchronisation. Pour plus d'informations, consultez la rubrique Classes d'instance des instances de synchronisation de données.
Subscription Duration
Disponible uniquement pour la méthode de facturation Subscription. Options : un à neuf mois, un an, deux ans, trois ans ou cinq ans.
Lisez et sélectionnez Data Transmission Service (Pay-as-you-go) Service Terms.
Cliquez sur Buy and Start. Dans la boîte de dialogue de confirmation, cliquez sur OK. La progression de la tâche apparaît dans la liste des tâches.