La synchronisation ou la migration d'une base de données peut entraîner des incohérences entre la source et la destination si la base source contient un déclencheur qui met à jour ses propres tables. Cette rubrique explique comment configurer la tâche dans ce scénario pour garantir la cohérence des données.
Contexte
Si votre base de données source contient des déclencheurs et que votre scénario correspond à l'une des conditions du tableau ci-dessous, reportez-vous à la documentation indiquée. Sinon, suivez la procédure décrite dans cette rubrique.
|
Base de données source |
Base de données de destination |
Description |
Références |
|
Tous les types pris en charge |
PostgreSQL, PolarDB for PostgreSQL, PolarDB for PostgreSQL (Compatible with Oracle) |
|
|
|
MySQL, PolarDB for MySQL, ApsaraDB RDS for MariaDB |
MySQL, PolarDB for MySQL, ApsaraDB RDS for MariaDB |
Vous devez configurer manuellement les déclencheurs pour la synchronisation ou la migration. |
Synchroniser ou migrer les déclencheurs depuis la base de données source |
|
SQL Server |
SQL Server |
Flux de travail
-
Créez une tâche de migration des données pour migrer le schéma de la base de données source vers la base de données de destination.
Pour plus d'informations, consultez Présentation des scénarios de migration des données.
ImportantSous Migration Types, sélectionnez uniquement Schema Migration.
Sous Source Objects, sélectionnez l'intégralité de la base de données ou du schéma.
Connectez-vous à la base de données de destination et supprimez les déclencheurs migrés depuis la base source.
-
Créez une tâche de synchronisation ou de migration des données depuis la base de données source vers la base de données de destination.
Pour plus d'informations, consultez Présentation des scénarios de synchronisation des données et Présentation des scénarios de migration des données.
ImportantPour une tâche de synchronisation des données, Synchronization Types est sélectionné par défaut sous Incremental Data Synchronization. Sélectionnez également Full Data Synchronization. Ne sélectionnez pas Schema Synchronization.
Pour une tâche de migration des données, sélectionnez Migration Types et Full Data Migration pour Incremental Data Migration. Ne sélectionnez pas Schema Migration.
-
(Facultatif) Une fois le transfert des données terminé, arrêtez ou libérez l'instance.
Pour plus d'informations, consultez Arrêter une instance DTS et Libérer des instances DTS.
RemarqueAprès l'arrêt ou la libération de l'instance, ajoutez manuellement les déclencheurs à la base de données de destination selon vos besoins métier.
Exemple
Cet exemple montre comment configurer une tâche pour synchroniser les données d'une base de données MySQL auto-gérée vers une instance ApsaraDB RDS for MySQL.
Préparation des données
Cet exemple utilise une base de données MySQL nommée triggertestdata contenant deux tables : parent et child. Un déclencheur sur la table parent insère une copie de chaque nouvelle ligne dans la table child.
Le tableau suivant présente les schémas de table et la définition du déclencheur.
|
Type d'objet |
Nom |
Instruction |
|
Table |
parent |
|
|
Table |
child |
|
|
Déclencheur |
data_check |
|
Dans ce scénario, une opération INSERT sur la table parent pendant la synchronisation entraînerait une incohérence des données de la table child entre la source et la destination. Pour éviter cela, vous devez supprimer le déclencheur de la base de données de destination après la migration initiale du schéma.
Procédure
-
Créez une tâche de migration des données pour migrer le schéma de la base de données source vers la base de données de destination.
-
Accédez à la page de liste des tâches de migration pour la région de destination en utilisant l'une des méthodes suivantes.
Depuis la console DTS
Connectez-vous à la console Data Transmission Service (DTS).
Dans le volet de navigation de gauche, cliquez sur Data Migration.
Dans le coin supérieur gauche de la page, sélectionnez la région où se trouve l'instance de migration.
Depuis la console DMS
RemarqueLes opérations réelles peuvent varier selon le mode et la disposition de la console DMS. Pour plus d'informations, consultez Console en mode simple et Personnaliser la disposition et le style de la console DMS.
Connectez-vous à la console Data Management (DMS).
Dans la barre de menu supérieure, choisissez .
À droite de Data Migration Tasks, sélectionnez la région où se trouve l'instance de migration.
Cliquez sur Create Task pour accéder à la page de configuration de la tâche.
-
Configurez les paramètres Source Database et Destination Database, puis cliquez sur Test Connectivity and Proceed en bas de la page.
Pour obtenir des descriptions des paramètres et plus d'informations, consultez Migrer des données d'une base de données MySQL auto-gérée vers une instance ApsaraDB RDS for MySQL.
Sous Migration Types, sélectionnez Schema Migration, puis sélectionnez la base de données ou le schéma à migrer.
Terminez les étapes de configuration restantes selon vos besoins métier.
-
-
La migration du schéma migre également les déclencheurs. Une fois la tâche terminée, connectez-vous à la base de données de destination et supprimez ces déclencheurs en exécutant la commande suivante :
drop trigger <trigger_name>;Exemple :
drop trigger data_check; -
Créez une tâche de synchronisation des données pour synchroniser les données de la base de données source vers la base de données de destination.
Dans le volet de navigation de gauche, cliquez sur Data Synchronization.
-
Configurez les paramètres Source Database et Destination Database, puis cliquez sur Test Connectivity and Proceed en bas de la page.
Pour obtenir des descriptions des paramètres et plus d'informations, consultez Synchroniser des données d'une base de données MySQL auto-gérée vers une instance ApsaraDB RDS for MySQL.
RemarqueUtilisez les mêmes bases de données source et de destination que celles configurées à l'étape Étape 1.
-
Sous Synchronization Types, sélectionnez manuellement Full Data Synchronization.
RemarqueAssurez-vous que les objets de synchronisation sont identiques aux objets de migration configurés à l'étape Étape 1.
Synchronization Types est sélectionné par défaut sous Incremental Data Synchronization. Ne sélectionnez pas Schema Synchronization.
Terminez les étapes de configuration restantes selon vos besoins métier.
Tester la cohérence des données
-
Connectez-vous à la base de données source et insérez une ligne dans la table
parent.insert into parent values(1,'testname');Le déclencheur de la base de données source insère ensuite la même ligne dans la table enfant source.
-
Connectez-vous aux bases de données source et de destination. Interrogez la table
childdans les deux bases pour vérifier la cohérence des données.-
Résultats de la requête dans la base de données source
+--------------+------------+----------+ | sys_child_id | user_vs_id | name | +--------------+------------+----------+ | 2001 | 1 | testname | +--------------+------------+----------+ -
Résultats de la requête dans la base de données de destination
+--------------+------------+----------+ | sys_child_id | user_vs_id | name | +--------------+------------+----------+ | 2001 | 1 | testname | +--------------+------------+----------+
Les résultats montrent que les données sont cohérentes.
-
Étapes suivantes
-
Une fois la synchronisation des données terminée, arrêtez la tâche de synchronisation créée à l'étape Étape 3.
Pour plus d'informations, consultez Arrêter une instance DTS.
-
(Facultatif) Consultez l'instruction de création du déclencheur.
Localisez la tâche de migration créée à l'étape Étape 1.
Cliquez sur l'ID de la tâche.
Sur la page Task Management, cliquez sur Schema Migration2.
Dans l'onglet Task Details, cliquez sur View Statements.
Connectez-vous à la base de données de destination et ajoutez manuellement le déclencheur.