Cette rubrique décrit le contexte, les limites, la procédure, les scénarios et les conseils de dépannage pour la configuration et la modification des règles de mise en correspondance des objets de migration ou de synchronisation.
Contexte
Lorsque vous créez une tâche de migration ou de synchronisation de données, vous devez spécifier les objets à migrer ou à synchroniser. Le service de transmission de données vous permet de spécifier directement les objets, de les importer ou de configurer des règles de mise en correspondance. Vous pouvez définir des règles basées sur des caractères génériques pour spécifier et modifier les objets de migration ou de synchronisation. Il est également possible de configurer la logique de mappage des objets entre la source et la cible. Cette approche permet de spécifier un grand nombre d'objets à migrer ou à synchroniser de manière simple et efficace. Les nouvelles tables répondant aux règles de mise en correspondance peuvent être automatiquement synchronisées vers la cible via des opérations DDL pour la synchronisation incrémentielle. Pour plus d'informations, consultez Opérations DDL prises en charge pour la synchronisation et limites.
Modèles de caractères génériques pour la migration/synchronisation de données entre bases de données
Le tableau suivant décrit les modèles de caractères génériques pris en charge par le service de transmission de données pour la migration ou la synchronisation de données entre bases de données.
Dans le tableau ci-dessous, l'astérisque (*) représente un caractère générique.
Les tâches de synchronisation bidirectionnelle ne prennent pas en charge l'agrégation de bases de données ou de tables.
Catégorie | Règle prise en charge | Exemple | Description |
Migration directe d'objets | . | kd_test.person | Toutes les tables dont le nom commence par « person » dans toutes les bases de données dont le nom commence par « kd_test » sont migrées de la source vers la cible. Les noms des bases de données et des tables sources restent inchangés. |
*.<source table> | kd_test*.person | Toutes les tables nommées « person » dans toutes les bases de données dont le nom commence par « kd_test » sont migrées de la source vers la cible. Les noms des bases de données et des tables sources restent inchangés. | |
<source database>.* | kd_test.person* | Toutes les tables dont le nom commence par « person » dans la base de données nommée « kd_test » sont migrées de la source vers la cible. Le nom de la base de données source et les noms des tables restent inchangés. | |
<source database>.<source table> | kd_test.person | La table nommée « person » dans la base de données nommée « kd_test » est migrée de la source vers la cible. Le nom de la base de données source et le nom de la table restent inchangés. | |
Renommage des objets après migration | <source database>.<source table>=<target database>.<target table> | kd_test.person=kd_test_new.person_new | La table nommée « person » dans la base de données nommée « kd_test » est migrée de la source vers la cible. La base de données kd_test est renommée en kd_test_new et la table person est renommée en person_new. |
<source database>.=<target database>. | kd_test.person=kd_test_new.person | Toutes les tables dont le nom commence par « person » dans la base de données nommée « kd_test » sont migrées de la source vers la cible. La base de données kd_test est renommée en kd_test_new et les noms des tables sources restent inchangés. | |
.<source table>=.<target table> | kd_test.person=kd_test.person_new | Toutes les tables nommées « person » dans toutes les bases de données dont le nom commence par « kd_test » sont migrées de la source vers la cible. Les tables sont renommées en person_new et les noms des bases de données sources restent inchangés. | |
Agrégation d'objets | <source database>.*=<target database>.<target table> | kd_test.person*=kd_test.person_all | Toutes les tables dont le nom commence par « person » dans la base de données nommée « kd_test » côté source sont agrégées dans la table person_all de la base de données kd_test côté cible. |
*.<source table>=<target database>.<target table> | kd_test*.person=kd_test_all.person | Toutes les tables nommées « person » dans toutes les bases de données dont le nom commence par « kd_test » côté source sont agrégées dans la table person de la base de données kd_test_all côté cible. | |
.=<target database>.<target table> | kd_test.person=kd_test_all.person_all | Toutes les tables dont le nom commence par « person » dans toutes les bases de données dont le nom commence par « kd_test » côté source sont agrégées dans la table person_all de la base de données kd_test_all côté cible. | |
.=<target database>.* | kd_test.person=kd_test_all.person* | Toutes les tables dont le nom commence par « person » dans toutes les bases de données dont le nom commence par « kd_test » côté source sont agrégées dans la base de données kd_test_all côté cible. Les noms des tables sources restent inchangés. | |
.=*.<target table> | kd_test.person=kd_test*.person_all | Toutes les tables dont le nom commence par « person » dans toutes les bases de données dont le nom commence par « kd_test » côté source sont agrégées dans la table person_all des bases de données dont le nom commence par « kd_test » côté cible. Les noms des bases de données sources restent inchangés. |
Les exigences relatives aux règles de mise en correspondance sont les suivantes :
Vous ne pouvez pas utiliser de caractères génériques à la fois pour les noms de base de données et de table côté cible, par exemple
kd_test*.person*=kd_test*.person*.Si vous utilisez des caractères génériques pour les bases de données source et cible, l'expression de la base de données doit être identique pour la source et la cible, ce qui indique une migration directe de la base de données.
Si vous utilisez des caractères génériques pour les tables source et cible, l'expression de la table doit être identique pour la source et la cible, ce qui indique une migration directe de la table.
Si vous utilisez un caractère générique pour les bases de données côté cible, vous devez également utiliser un caractère générique pour les bases de données côté source.
Si vous utilisez un caractère générique pour les tables côté cible, vous devez également utiliser un caractère générique pour les tables côté source.
Modèles de caractères génériques pour la migration/synchronisation de données entre une base de données et une instance Message Queue
Le tableau suivant décrit les modèles de caractères génériques pris en charge par le service de transmission de données pour la migration ou la synchronisation de données entre une base de données et une instance Message Queue.
Dans le tableau ci-dessous, l'astérisque (*) représente un caractère générique.
**Règle prise en charge**
|
**Exemple**
|
**Description**
| | --- | --- | --- | |
*.*=<topic name>
|
*.*=topic
|
Plusieurs tables de plusieurs bases de données sont mappées vers un seul topic.
| |
*.<source table>=<topic name>
|
*.b=topic
|
Les tables nommées « b » dans plusieurs bases de données sont mappées vers un seul topic.
| |
<source database>.*=<topic name>
|
a.*=topic
|
Plusieurs tables de la base de données « a » sont mappées vers un seul topic.
| |
<source database>.<source table>=<topic name>
|
a.b=topic
|
La table « b » de la base de données « a » est mappée vers un topic.
|
Limites
Le service de transmission de données prend en charge plusieurs règles. Assurez-vous que chaque règle est placée sur une seule ligne et ne comporte aucun espace au début ou à la fin.
Les règles de mise en correspondance pour les objets de migration ou de synchronisation ne doivent pas être vides. Les règles d'exclusion d'objets peuvent être vides.
Les opérations DDL de modification ne sont pas prises en charge pendant la migration du schéma et la migration complète.
Lorsque vous configurez des règles de mise en correspondance pour sélectionner des objets de migration ou de synchronisation, les noms de table ne peuvent pas contenir de sauts de ligne, d'espaces ou de caractères spéciaux. Les caractères spéciaux sont les suivants : . | " ' ` ( ) = ; / & \ * ? [ ] [ ! ]
Il n'est pas autorisé de configurer plusieurs règles de mise en correspondance pour mapper différentes tables d'une même base de données source vers différentes bases de données cibles, par exemple
a.a* = b.a* & a.b* = c.b*.-
Dans un scénario d'agrégation de bases de données ou de tables, l'incrément inverse n'est pas pris en charge.
RemarqueLe service de transmission de données vérifie l'existence d'une agrégation de bases de données ou de tables uniquement lors de l'enregistrement ou du démarrage d'une tâche de migration ou de synchronisation de données. Le service n'empêche pas l'agrégation de bases de données ou de tables qui se produit pendant l'exécution d'une tâche. Toutefois, les mappages entre les bases de données ou les tables peuvent ne pas être correctement identifiés lors de l'incrément inverse, ce qui compromet la qualité des données.
Actuellement, le service de transmission de données ne prend pas en charge l'instruction DDL CREATE DATABASE. Si une nouvelle base de données créée côté source respecte les règles de mise en correspondance des objets, vous devez créer manuellement une base de données correspondante côté cible pour poursuivre la synchronisation des données de la nouvelle base de données.
Points à considérer
-
Après avoir configuré les règles de correspondance et d'exclusion des objets, seuls les objets appartenant à la différence symétrique de ces deux ensembles de règles peuvent être sélectionnés.
RemarqueLa différence symétrique entre deux ensembles contient tous les éléments qui existent dans l'un des ensembles mais pas dans l'autre.
Lorsque la synchronisation DDL est activée, toute instruction DDL créant une nouvelle table ou modifiant le schéma d'une table source est synchronisée vers la cible par le service de transmission de données, à condition que la table concernée appartienne à la différence symétrique définie par les règles de correspondance et d'exclusion.
-
Tenez compte des points suivants si vous souhaitez agréger plusieurs tables :
Nous vous recommandons de configurer les mappages entre la source et la cible en spécifiant des règles de correspondance.
Il est conseillé de créer manuellement les schémas sur la cible. Si vous utilisez le service de transmission de données pour créer un schéma, ignorez les objets ayant échoué lors de l'étape de migration du schéma.
Si vous sélectionnez DDL Synchronization, des bases de données ou des tables risquent d'être supprimées par erreur. Par exemple, lors de l'agrégation de plusieurs bases de données ou tables sources vers une seule base de données ou table cible, la suppression d'une entité source peut entraîner la suppression de l'entité agrégée correspondante sur la cible.
-
Lors de la création d'une tâche de migration de données, cliquez sur Full Migration et sélectionnez Ignore pour l'option Handle Non-empty Tables in Target Database.
RemarqueSi vous sélectionnez Ignore, les données sont extraites en mode IN pour la vérification complète. Dans ce cas, la vérification ne s'applique pas si la cible contient des données absentes de la source, ce qui dégrade les performances de vérification.
Si une règle de renommage est configurée pour les tables, elle prime sur les autres règles. Par exemple, avec les règles
a.b[0-3]eta.b[3-5]=a.c, la tablea.b3est renommée ena.c.Lors de l'exécution de l'instruction DDL RENAME TABLE, si la table renommée ne respecte plus la règle de correspondance ou d'exclusion initiale, des problèmes de synchronisation imprévus peuvent survenir. Agissez avec prudence.
Configurer les règles de correspondance entre les bases de données
-
Effectuez les étapes précédant la section Select Migration Objects ou Select Synchronization Objects pour une tâche de migration ou de synchronisation de données.
Pour plus d'informations, consultez les rubriques relatives aux tâches de migration de données ou de synchronisation de données correspondant aux types de source de données concernés.
RemarqueLa procédure de sélection des objets à migrer est identique à celle des objets à synchroniser. Cette section décrit la sélection des objets de migration.
Dans les tâches de synchronisation de données d'une base de données OceanBase compatible MySQL vers une base de données AnalyticDB for MySQL, d'une instance ApsaraDB RDS for PostgreSQL vers une base de données OceanBase compatible Oracle ou entre des bases de données OceanBase de même type, les règles de correspondance sont configurées pour sélectionner les objets de synchronisation entre les bases de données.
-
Dans la section Select Migration Objects, sélectionnez Match Rules.

-
Dans la section Specify Migration Scope, spécifiez les Object Migration Rules et, éventuellement, les Object Exclusion Rules. Pour plus d'informations, consultez la rubrique sur les règles avec caractères génériques.
RemarqueSi la règle configurée contient des espaces, le projet de migration ou de synchronisation des objets risque d'échouer.
-
Cliquez sur Verify.
Pour afficher les résultats de correspondance, cliquez sur Preview Objects une fois la vérification réussie. Les règles de correspondance et d'exclusion basées sur des caractères génériques s'appliquent aux tables et aux vues. Les résultats s'affichent dans les onglets Final Objects, New Objects et Removed Objects.
|
Onglet
|
Description
| | --- | --- | |
Final Objects
|
Affiche les objets de migration qui correspondent aux règles de correspondance spécifiées.
| |
New Objects
|
Affiche les objets de migration absents du résultat de la correspondance précédente.
| |
Removed Objects
|
Affiche les objets de migration présents uniquement dans le résultat de la correspondance précédente.
|Après avoir configuré les règles de correspondance pour sélectionner les objets de migration ou de synchronisation, vous pouvez définir des conditions de filtrage.

Choisissez Matching Results > Final Objects et placez le pointeur sur l'objet table cible.
Cliquez sur Settings.
Dans la boîte de dialogue Settings, spécifiez une clause
WHERESQL standard pour filtrer les données par ligne. Ensuite, cliquez sur Validate Syntax. Pour plus d'informations, consultez la rubrique Utiliser des conditions SQL pour filtrer les données.-
Une fois la validation de la syntaxe réussie, cliquez sur OK.
Vous pouvez également consulter les informations sur les colonnes des objets de migration dans la section View Columns.
Finalisez les paramètres ultérieurs de la tâche selon les instructions affichées.
Exemples de scénarios
-
Migration directe d'objets
Migrez toutes les tables dont le nom commence par « test » dans toutes les bases de données dont le nom commence par « jenkins_api » de la source vers la cible, en conservant les noms originaux des bases de données et des tables. Pour ce faire, configurez la règle de correspondance comme illustré dans la figure suivante.

-
Renommage des objets après migration
Migrez toutes les tables dont le nom commence par « test » dans la base de données nommée « jenkins_my2dh_one » de la source vers la cible, renommez la base de données « jenkins_my2dh_one » en « jenkins_my2dh_one_new » et conservez les noms originaux des tables. Pour ce faire, configurez la règle de correspondance comme illustré dans la figure suivante.

-
Agrégation d'objets
Agrégez toutes les tables dont le nom commence par « order » dans toutes les bases de données dont le nom commence par « jenkins_api » de la source vers la table « order » de la base de données « jenkins_api_all » sur la cible. Pour ce faire, configurez la règle de correspondance comme illustré dans la figure suivante.

-
Configuration des règles d'exclusion d'objets
Excluez de la migration les tables historiques dont le nom commence par « history_ » et les tables de journalisation dont le nom se termine par « log » dans la base de données « jenkins_api_mysql56 » de la source. Pour ce faire, configurez la règle de correspondance comme illustré dans la figure suivante.

Modifier les règles de mise en correspondance entre bases de données
Description des règles
Il est impossible d'ajouter des objets de migration pour une tâche de migration de données lors de la phase d'incrément inverse.
L'ajout d'objets de migration n'est pas autorisé lors de la migration de données d'une base de données PolarDB-O vers une base de données OceanBase en mode compatible Oracle.
-
Le tableau suivant présente les scénarios dans lesquels il est possible de modifier les règles de mise en correspondance.
Phase de migration des données
Statut de la tâche de migration
Statut de la phase
/
Non démarrée
/
Migration complète
En cours d'exécution
En cours d'exécution
Échec
Échec
Arrêtée
Arrêtée
Synchronisation incrémentielle / Incrément inverse
En cours d'exécution
En cours d'exécution
En cours d'exécution
Surveillance
Échec
Échec
Arrêtée
Arrêtée
Procédure
-
Accédez à la boîte de dialogue View Objects.
-
Connectez-vous à la console ApsaraDB for OceanBase
.
Dans le volet de navigation de gauche, choisissez Data Transmission > Data Migration.
-
Sur la page Data Migration, cliquez sur le nom de la tâche cible pour accéder à sa page de détails.

Cliquez sur View Objects dans le coin supérieur droit. Les objets de migration et les historiques de modification s'affichent.
-
-
Dans la boîte de dialogue View Objects, cliquez sur Modify Rules dans le coin inférieur droit.

Dans la boîte de dialogue Modify Rules, modifiez les règles de mise en correspondance des objets de migration pour ajouter ou supprimer des objets.
-
Cliquez sur Verify. Pour consulter les résultats de la mise en correspondance, cliquez sur Preview Objects une fois la vérification réussie.
Vous pouvez placer le pointeur de la souris sur un nouvel objet et cliquer sur Configuration qui apparaît afin de configurer les conditions de filtrage de cet objet.

-
Cliquez sur Next.
Lorsque vous ajoutez des objets, le système effectue une pré-vérification sur ces derniers.
Lorsque vous supprimez des objets, le nombre d'objets à supprimer s'affiche.
Cliquez sur Submit après la réussite de la pré-vérification ou après avoir confirmé le nombre d'objets à supprimer.
Une fois la modification des objets exécutée, vous pouvez cliquer sur View Objects dans le coin supérieur droit de la page, puis sur Modified records pour consulter l'historique et les détails des modifications.

Configurer les règles de mise en correspondance pour la migration/synchronisation des données d'une base de données vers une instance Message Queue
Lorsque vous synchronisez des données d'une base de données OceanBase vers une instance DataHub, Kafka ou RocketMQ, vous pouvez configurer des règles de mise en correspondance pour sélectionner les objets à synchroniser.
-
Créez une tâche de synchronisation de données et suivez les instructions pour atteindre l'étape Select Synchronization Objects.
Pour plus d'informations, consultez les rubriques relatives aux tâches de synchronisation des données correspondant aux types de source de données concernés.
-
Dans la section Select Synchronization Objects, sélectionnez Match Rules.

-
Spécifiez les Object Synchronization Rules et, le cas échéant, les Object Exclusion Rules. Pour plus d'informations, consultez la rubrique Modèles génériques pris en charge pour les règles de mise en correspondance.
La logique métier varie selon le type de tâche de synchronisation de données lors de la configuration des règles de mise en correspondance.
-
Si la cible est une instance DataHub, le type de topic peut être Tuple ou BLOB.
Pour le type Tuple, vous ne pouvez saisir que des noms de topics existants, sans caractères génériques ni espaces. Après la sélection des tables, celles-ci sont mappées aux topics selon une relation un-à-un.
-
Pour le type BLOB, les méthodes de mappage plusieurs-à-un et un-à-un sont prises en charge, et les espaces ne sont pas autorisés.
Si vous avez sélectionné Schema Synchronization lors de la spécification du type de synchronisation, vous pouvez choisir de saisir le nom d'un topic existant ou de créer un nouveau topic. Une seule méthode de mappage est prise en charge. Vous ne pouvez sélectionner qu'une seule méthode de mappage pour la création ou la sélection de topics. Si vous n'avez pas sélectionné Schema Synchronization lors de la spécification des types de synchronisation, vous ne pouvez saisir que le nom d'un topic existant.
-
Si la cible est une instance Kafka ou RocketMQ, les méthodes de mappage plusieurs-à-un et un-à-un sont prises en charge, et les espaces ne sont pas autorisés.
Si vous avez sélectionné Schema Synchronization lors de la spécification des types de synchronisation, vous pouvez choisir de saisir le nom d'un topic existant ou de créer un nouveau topic. Si vous n'avez pas sélectionné Schema Synchronization lors de la spécification des types de synchronisation, vous ne pouvez saisir que le nom d'un topic existant.
-
-
Cliquez sur Verify.
Pour afficher les résultats de la mise en correspondance, cliquez sur Preview Objects une fois la vérification réussie. Les résultats s'affichent dans les onglets Final Objects, New Objects et Removed Objects.
Après avoir configuré les règles de mise en correspondance pour sélectionner les objets de synchronisation, vous pouvez définir des conditions de filtrage.

Choisissez Matching Results > Final Objects et placez le pointeur sur l'objet table cible.
Cliquez sur Settings.
-
Dans la boîte de dialogue Settings, vous pouvez effectuer les opérations suivantes :
Dans la section Row Filters, spécifiez une clause
WHERESQL standard pour filtrer les données par ligne. Cliquez ensuite sur Validate Syntax. Pour plus d'informations, consultez la rubrique Utiliser des conditions SQL pour filtrer les données.-
Sélectionnez les colonnes de sharding souhaitées dans la liste déroulante Sharding Columns. Vous pouvez sélectionner plusieurs champs comme colonnes de sharding. Ce paramètre est facultatif.
Sauf indication contraire, sélectionnez les clés primaires comme colonnes de sharding. Si les clés primaires ne sont pas équilibrées en charge, sélectionnez des champs équilibrés avec des identifiants uniques comme colonnes de sharding pour éviter d'éventuels problèmes de performances. Les colonnes de sharding peuvent être utilisées aux fins suivantes :
Équilibrage de charge : les threads utilisés pour l'envoi des messages peuvent être identifiés sur la base des colonnes de sharding si la table cible prend en charge les écritures concurrentes.
Ordonnancement : le service de transmission des données garantit que les messages sont reçus dans l'ordre si les valeurs des colonnes de sharding sont identiques. L'ordonnancement définit la séquence d'exécution des instructions DML pour une colonne.
Dans la section Select Columns, sélectionnez les colonnes à synchroniser. Pour plus d'informations, consultez la rubrique Filtrage des colonnes.
Cliquez sur OK.
Terminez les paramètres suivants de la tâche conformément aux instructions.
Modifier les règles de correspondance pour la migration ou la synchronisation des données d'une base de données vers une instance Message Queue
-
Accédez à la boîte de dialogue View Objects.
-
Connectez-vous à la console ApsaraDB for OceanBase
.
Dans le volet de navigation de gauche, choisissez Data Transmission > Data Synchronization.
-
Sur la page Data Synchronization, cliquez sur le nom de la tâche cible pour accéder à sa page de détails.

Cliquez sur View Objects dans le coin supérieur droit. Les objets de synchronisation et les enregistrements de modification s'affichent.
-
-
Dans la boîte de dialogue View Objects, cliquez sur Modify Rules dans le coin inférieur droit.

-
Dans la boîte de dialogue Modify Rules, modifiez les règles de correspondance des objets de synchronisation pour ajouter ou supprimer des objets.
Lorsque vous configurez les règles de correspondance, la logique métier varie selon les types de tâches de synchronisation des données. Pour plus d'informations, consultez la section « Configurer les règles de correspondance pour la migration ou la synchronisation des données d'une base de données vers une instance Message Queue » de cette rubrique.
-
Cliquez sur Verify. Pour afficher les résultats de la correspondance, cliquez sur Preview Objects une fois la vérification réussie.
Vous pouvez placer le pointeur sur un nouvel objet et cliquer sur Configuration qui apparaît pour configurer les conditions de filtrage de cet objet.

-
Cliquez sur Next.
Lorsque vous ajoutez des objets, le système effectue une prévérification sur ces objets.
Lorsque vous supprimez des objets, le nombre d'objets à supprimer s'affiche.
-
Cliquez sur Submit après la réussite de la prévérification ou une fois que vous avez confirmé le nombre d'objets à supprimer.
Une fois la modification des objets exécutée, vous pouvez cliquer sur View Objects dans le coin supérieur droit de la page, puis sur Modified records pour consulter les enregistrements et les détails des modifications.

FAQ
-
Privilèges insuffisants
Veillez aux paramètres de privilèges de l'utilisateur de la base de données source. Si vous n'accordez pas tous les privilèges requis à l'utilisateur de migration, certains objets ne s'affichent pas dans l'interface frontale du service de transmission des données et vous ne pouvez pas configurer correctement les règles de correspondance. Dans ce cas, vous devez ajouter ces objets aux Object Exclusion Rules afin d'éviter l'interruption de la tâche de migration ou de synchronisation des données, car le service de transmission des données ne parvient pas à trouver les objets cibles.
-
Filtrage DML non pris en charge
Si la synchronisation DDL est désactivée, le service de transmission des données vous permet de sélectionner des objets en fonction des règles de correspondance. Si une nouvelle table créée lors de la synchronisation incrémentielle répond à une règle de correspondance, les instructions DDL associées seront ignorées, mais le service de transmission des données continuera à synchroniser les instructions DML. Par conséquent, la tâche de migration ou de synchronisation des données sera interrompue car les objets ne peuvent pas être migrés ou synchronisés vers la cible. Vous devez donc créer la table au niveau de la cible ou l'ajouter à la liste de blocage.