Cette rubrique décrit la synchronisation bidirectionnelle entre une base de données MySQL et une base de données OceanBase en mode compatible MySQL.
Si une tâche de migration de données reste inactive pendant une période prolongée (avec un statut Failed, Paused ou Completed), il se peut qu'elle ne puisse pas être reprise en raison de facteurs tels que la période de rétention des journaux incrémentiels. Pour libérer des ressources, Data Transmission Service supprime les tâches de migration de données inactives depuis plus de trois jours. Nous vous recommandons de configurer des alertes pour vos tâches et de traiter rapidement toute exception.
Contexte
Qu'est-ce que la synchronisation bidirectionnelle ?
Lors de la synchronisation incrémentielle des données, vous pouvez configurer des tâches de migration avant et arrière pour la même source de données afin de synchroniser les données entre la source et la cible. Un mécanisme de prévention de la réplication cyclique empêche que les données synchronisées dans un sens ne soient à nouveau synchronisées par une tâche dans le sens inverse.
La synchronisation bidirectionnelle ne prend pas en charge l'écriture simultanée sur la source et la cible. Si une application écrit simultanément les mêmes données, identifiées par la même clé primaire ou unique, sur la source et la cible, vous devez définir une stratégie de résolution des conflits (écraser ou ignorer) pour la tâche de synchronisation bidirectionnelle. Nous vous recommandons d'interdire à une application d'écrire simultanément les mêmes données sur la source et la cible.
Types de migration prenant en charge la synchronisation bidirectionnelle
Le service de transmission de données prend en charge la synchronisation bidirectionnelle des données entre une base de données MySQL et une base de données OceanBase en mode compatible MySQL, entre une base de données Oracle et une base de données OceanBase en mode compatible Oracle, ainsi qu'entre des bases de données OceanBase. Pour plus d'informations sur les limites et les considérations, consultez les rubriques relatives aux types correspondants de migration de données.
Instructions SQL pour accorder des privilèges pour une source de données MySQL
Pour effectuer une synchronisation bidirectionnelle entre une base de données MySQL et une base de données OceanBase, vous devez accorder les privilèges CREATE DATABASE et CREATE TABLE au compte de base de données dans la source de données MySQL de la tâche actuelle. Vous devez également créer une base de données de transaction et une table de transaction pour empêcher la réplication cyclique entre les deux parties impliquées dans la synchronisation bidirectionnelle. Sinon, la tâche de synchronisation bidirectionnelle pourrait rencontrer des anomalies.
-
Accorder le privilège global de création de base de données
GRANT CREATE ON *.* TO '<user_name>' ; -
Accorder le privilège de création de tables dans la base de données oms
GRANT CREATE ON oms.* TO '<user_name>'
Instructions SQL pour créer un schéma et accorder des privilèges pour une source de données Oracle
Pour effectuer une synchronisation bidirectionnelle entre une base de données Oracle et une base de données OceanBase, vous devez créer un schéma nommé OMS dans la source de données Oracle de la tâche actuelle, et accorder le privilège CREATE TABLE sur le schéma OMS au compte de base de données de cette source de données. Sinon, la tâche de synchronisation bidirectionnelle pourrait rencontrer des anomalies.
-
Créer un utilisateur OMS
CREATE USER OMS IDENTIFIED BY <YOUR_PASSWORD> DEFAULT TABLESPACE <tablespace>; // Replace YOUR_PASSWORD with the actual user password. ALTER USER OMS QUOTA unlimited ON <tablespace specified in the previous step>; ALTER USER <data source user> QUOTA unlimited ON <tablespace specified in the previous step>; -
Accorder des privilèges
GRANT CREATE ANY TABLE TO <YOUR_USERNAME>; GRANT INSERT ANY TABLE TO <YOUR_USERNAME>; GRANT UPDATE ANY TABLE TO <YOUR_USERNAME>; GRANT DELETE ANY TABLE TO <YOUR_USERNAME>; GRANT SELECT ANY TABLE TO <YOUR_USERNAME>;
Considérations
Une tâche de synchronisation bidirectionnelle se compose d'une tâche avant et d'une tâche arrière.
Type | Description |
Tâche avant |
|
Tâche arrière |
|
Autres considérations |
|
Scénarios de conflit de données
Pour garantir la cohérence des données dans la synchronisation bidirectionnelle, assurez-vous que les opérations de données sur la même clé primaire ou clé unique non nulle sont effectuées uniquement sur la source ou la cible. Si les données sont mises à jour simultanément sur la source et la cible, des conflits de données peuvent survenir, y compris les scénarios suivants.
-
Conflit de clé unique dans les opérations INSERT
Si une application exécute des opérations INSERT sur la même clé unique sur la source et la cible à peu près au même moment, l'opération INSERT sur la cible échoue en raison de la contrainte UNIQUE lors de la synchronisation vers la cible. Vous pouvez configurer la tâche pour ignorer les données conflictuelles ou écraser les données sur la cible.
-
Conflit de clé unique dans les opérations UPDATE
Si les données à mettre à jour par une opération UPDATE existent déjà sur la cible, les données sur la cible sont écrasées par les données de la source.
Si les données à mettre à jour par une opération UPDATE n'existent pas sur la cible, l'opération UPDATE échoue.
Si une opération UPDATE entraîne un conflit de clé primaire ou de clé unique sur la cible, l'opération UPDATE échoue.
-
Conflit de clé unique dans les opérations DELETE
Si les données à supprimer par une opération DELETE n'existent pas, l'opération DELETE échoue.
Procédure
Configurer une tâche avant
-
Configurez une tâche de migration de données comme indiqué pour passer à l'étape Select Migration Type, et définissez Synchronous Topology sur Bidirectional Synchronization.
Pour plus d'informations, consultez les rubriques relatives aux types correspondants de migration de données.

-
Sur la page Select Migration Type, spécifiez les types de migration pour la tâche de migration de données.
La synchronisation bidirectionnelle prend en charge les types de migration suivants : Schema Migration, Full Migration, Incremental synchronization et Full Verification.

Type de migration
Description
Migration de schéma
Après le démarrage d'une tâche de migration de schéma, le service de transmission de données migre les définitions des objets de base de données, tels que les tables, les index, les contraintes, les commentaires et les vues, de la base de données source vers la base de données cible et filtre automatiquement les tables temporaires.
Migration complète
Après le démarrage d'une tâche de migration complète, le service de transmission de données migre les données existantes des tables de la base de données source vers les tables correspondantes de la base de données cible.
Synchronisation incrémentielle
Après le démarrage d'une tâche de synchronisation incrémentielle, le service de transmission de données synchronise les données modifiées (données ajoutées, modifiées ou supprimées) de la base de données source vers les tables correspondantes de la base de données cible.
Les options pour Incremental Synchronization sont DML Synchronization et DDL Synchronization. Vous pouvez sélectionner les options selon vos besoins. Pour plus d'informations, consultez Configurer la synchronisation DDL/DML.
RemarqueDans la synchronisation bidirectionnelle, l'option DML Synchronization doit être sélectionnée.
Dans la synchronisation bidirectionnelle, la synchronisation DDL est prise en charge uniquement pour la tâche avant.
Vérification complète
Une fois les tâches de migration complète et de synchronisation incrémentielle terminées, le service de transmission de données lance automatiquement une tâche de vérification complète pour vérifier les tables des bases de données source et cible.
-
Cliquez sur Next. Sur la page Select Migration Objects, sélectionnez les objets pour la tâche de migration de données.
Vous pouvez sélectionner les objets de migration à l'aide de deux méthodes : Specify Objects et Matching Rules. Cette rubrique décrit comment sélectionner les objets de migration à l'aide de la méthode Specify Objects. Pour plus d'informations sur la configuration des règles de correspondance, consultez Configurer et modifier les règles de correspondance.
ImportantLes noms des tables à migrer et des colonnes de ces tables ne doivent pas contenir de caractères chinois.
Si un nom de base de données ou de table contient les caractères « $$ », la création de la tâche de migration de données peut échouer.
Si vous sélectionnez DDL Synchronization à l'étape Select Migration Type, nous vous recommandons d'utiliser les règles de correspondance pour sélectionner les objets de migration. Cela garantit que tous les nouveaux objets correspondant aux règles sont synchronisés. Si vous sélectionnez les objets individuellement, les nouveaux objets ou les objets renommés ne seront pas synchronisés.

Dans la section Select Migration Objects, sélectionnez Specify Objects.
Dans la zone Select Migration Scope, dans la liste Source Objects, sélectionnez les objets à migrer. Vous pouvez sélectionner des tables et des vues d'une ou plusieurs bases de données à migrer.
Cliquez sur > pour les ajouter à la liste Destination Objects.
Data Transmission Service vous permet d'importer des objets à partir de fichiers texte. Il vous permet également de renommer les objets de destination, de définir des filtres de lignes, d'afficher les informations de colonnes et de supprimer un objet unique ou tous les objets.
RemarqueLorsque vous sélectionnez les objets de migration à l'aide de la méthode Matching Rules, la syntaxe de la règle de correspondance remplace la fonctionnalité de renommage, et la section Actions est limitée à la définition des conditions de filtrage. Pour plus d'informations, consultez Configurer et modifier les règles de correspondance.
Opération
Description
Importer un objet
Dans la liste à droite de la zone de sélection, cliquez sur Import Object dans le coin supérieur droit.
Dans la boîte de dialogue qui s'affiche, cliquez sur OK.
ImportantL'opération d'importation remplace les sélections précédentes. Procédez avec prudence.
Dans la boîte de dialogue Import Migration Objects, importez les objets à migrer.
Vous pouvez importer un fichier CSV pour renommer les tables de base de données, définir des conditions de filtrage de lignes et effectuer d'autres opérations. Pour plus d'informations, consultez Télécharger et importer les configurations d'objets de migration.
Cliquez sur Check Validity.
Après avoir importé les objets de migration, vérifiez d'abord leur validité. Le mappage des champs de colonne n'est pas actuellement pris en charge.
Une fois la vérification réussie, cliquez sur OK.
Renommer
Data Transmission Service vous permet de renommer les objets de migration. Pour plus d'informations, consultez Renommer les objets de base de données et de table.
Paramètres
Data Transmission Service prend en charge le filtrage des lignes à l'aide des conditions
WHERE. Pour plus d'informations, consultez Filtrer les données avec des conditions SQL.Vous pouvez également afficher les informations de colonne des objets de migration dans la zone View Columns.
Supprimer/Supprimer tout
Data Transmission Service vous permet de supprimer un ou plusieurs objets temporairement sélectionnés pour la destination lors du mappage des données.
Supprimer un seul objet de migration
Dans la liste à droite de la zone de sélection, survolez l'objet cible et cliquez sur le bouton Remove qui s'affiche pour supprimer l'objet de migration.
Supprimer tous les objets de migration
Dans la liste à droite de la zone de sélection, cliquez sur Remove All dans le coin supérieur droit. Dans la boîte de dialogue qui s'affiche, cliquez sur OK pour supprimer tous les objets de migration.
-
Cliquez sur Next. Sur la page Migration Options, configurez les paramètres.
-
Migration complète
Le tableau suivant décrit les paramètres de migration complète, qui s'affichent uniquement si vous avez sélectionné Bidirectional Synchronization et Full Migration sur la page Select Migration Type.

Paramètre
Description
Read Concurrency
La concurrence pour la lecture des données depuis la source lors de la migration complète. La valeur maximale est 512. Une concurrence de lecture élevée peut exercer une pression excessive sur la source, affectant l'activité.
Write Concurrency
La concurrence pour l'écriture des données vers la cible lors de la migration complète. La valeur maximale est 512. Une concurrence d'écriture élevée peut exercer une pression excessive sur la cible, affectant l'activité.
Full Migration Rate Limit
Vous pouvez choisir de limiter ou non le débit de migration complète selon vos besoins. Si vous choisissez de limiter le débit de migration complète, vous devez spécifier les enregistrements par seconde (RPS) et les octets par seconde (BPS). Le RPS spécifie le nombre maximal de lignes de données migrées vers la cible par seconde lors de la migration complète, et le BPS spécifie la quantité maximale de données en octets migrées vers la cible par seconde lors de la migration complète.
RemarqueLes valeurs RPS et BPS spécifiées ici servent uniquement au throttling. Les performances réelles de migration complète dépendent de facteurs tels que les paramètres de la source et de la cible et les spécifications de l'instance.
Handle Non-empty Tables in Target Database
Les valeurs valides sont Ignore et Stop Migration.
Si vous sélectionnez Ignore, lorsque les données à insérer entrent en conflit avec les données existantes d'une table cible, le service de transmission de données journalise les données conflictuelles tout en conservant les données existantes.
ImportantSi vous sélectionnez Ignore, les données sont extraites en mode IN lors de la vérification complète. Dans ce cas, la vérification est inapplicable si la cible contient des données qui n'existent pas dans la source, et les performances de vérification sont dégradées.
Si vous sélectionnez Stop Migration et qu'une table cible contient des enregistrements, une erreur indiquant que la migration n'est pas prise en charge est signalée lors de la migration complète. Dans ce cas, vous devez traiter les données de la table cible avant de poursuivre la migration.
ImportantSi vous cliquez sur Resume dans la boîte de dialogue signalant l'erreur, le service de transmission de données ignore cette erreur et continue de migrer les données. Procédez avec prudence.
Post-Indexing
Spécifie s'il faut créer des index après la fin de la migration complète. Le post-indexing peut réduire le temps requis pour la migration complète. Pour plus d'informations sur les considérations relatives au post-indexing, consultez la description ci-dessous.
ImportantCe paramètre s'affiche uniquement si vous avez sélectionné à la fois Schema Migration et Full Migration sur la page Select Migration Type.
Seuls les index de clés non uniques peuvent être créés après la migration.
Si la base de données OceanBase cible renvoie l'erreur suivante lors de la création d'index, le service de transmission de données ignore l'erreur et considère que l'index a été créé avec succès, sans le recréer.
Message d'erreur dans une base de données OceanBase en mode compatible MySQL :
Duplicate key name.Message d'erreur dans une base de données OceanBase en mode compatible Oracle :
name is already used by an existing object.
Si vous sélectionnez Allow, définissez les paramètres suivants :
DDL Concurrency for Single Index : le nombre maximal d'opérations DDL concurrentes autorisées pour un seul index. Une valeur plus élevée indique une consommation de ressources plus importante et une migration de données plus rapide.
Maximum DDL Concurrency for Indexes : le nombre maximal d'opérations DDL de post-indexing que le système peut appeler à la fois.
Si le post-indexing est autorisé, nous vous recommandons d'utiliser un client CLI pour modifier les paramètres suivants pour les locataires professionnels en fonction des conditions matérielles d'OceanBase Database et de votre trafic professionnel actuel :
// Specify the limit on the file memory buffer size. alter system set _temporary_file_io_area_size = '10' tenant = 'xxx'; // Disable throttling in OceanBase Database V4.x. alter system set sys_bkgd_net_percentage = 100; -
Synchronisation incrémentielle
Le tableau suivant décrit les paramètres de synchronisation incrémentielle, qui s'affichent uniquement si vous avez sélectionné Bidirectional Synchronization et Incremental Synchronization sur la page Select Migration Type.

Paramètre
Description
Write Concurrency
La concurrence pour l'écriture des données vers la cible lors de la synchronisation incrémentielle. La valeur maximale est 512. Une concurrence d'écriture élevée peut exercer une pression excessive sur la cible, affectant l'activité.
Incremental Synchronization Rate Limit
Vous pouvez choisir de limiter ou non le débit de synchronisation incrémentielle selon vos besoins. Si vous choisissez de limiter le débit de synchronisation incrémentielle, vous devez spécifier les enregistrements par seconde (RPS) et les octets par seconde (BPS). Le RPS spécifie le nombre maximal de lignes de données synchronisées vers la cible par seconde lors de la synchronisation incrémentielle, et le BPS spécifie la quantité maximale de données en octets synchronisées vers la cible par seconde lors de la synchronisation incrémentielle.
RemarqueLes valeurs RPS et BPS spécifiées ici servent uniquement au throttling. Les performances réelles de synchronisation incrémentielle dépendent de facteurs tels que les paramètres de la source et de la cible et les spécifications de l'instance.
Data Conflict Handling Strategy
Les valeurs valides sont Ignore errors and keep the original data on the target et Ignore conflicts, use source data to overwrite target data. Pour plus d'informations, consultez la section « Scénarios de conflit de données » de cette rubrique.
-
-
Cliquez sur Precheck pour effectuer une pré-vérification de la tâche de migration de données.
À l'étape Precheck, Data Transmission Service vérifie si les éléments répondent aux exigences, telles que les autorisations de lecture et d'écriture de l'utilisateur de la base de données et la connectivité réseau de la base de données. Vous ne pouvez démarrer la tâche de migration de données qu'après la réussite de tous les éléments de vérification. Si la pré-vérification échoue :
Identifiez et résolvez le problème, puis relancez la pré-vérification jusqu'à ce qu'elle réussisse.
Vous pouvez également cliquer sur Skip dans la colonne Actions pour un élément de pré-vérification ayant échoué. Une boîte de dialogue s'affiche décrivant l'impact du saut de cette opération. Pour continuer, cliquez sur OK.
Une fois la pré-vérification réussie, cliquez sur Start Task pour démarrer la tâche avant.
Configurer une tâche arrière
-
Accédez à la page Migration Tasks. Attendez que la tâche avant soit en phase de synchronisation incrémentielle et à l'état Running. Ensuite, cliquez sur Configuration pour la tâche arrière.

-
Dans la boîte de dialogue Configure Reverse Tasks, configurez les paramètres.

Paramètre
Description
Task Instance
Sélectionnez une instance de tâche disponible dans la liste déroulante pour configurer la tâche arrière. Si aucune instance de tâche n'est disponible, achetez-en une. Pour plus d'informations, consultez Acheter une tâche de migration de données.
Write Concurrency
La concurrence pour l'écriture des données vers la cible lors de la migration complète. La valeur maximale est 512. Une concurrence d'écriture élevée peut exercer une pression excessive sur la cible, affectant l'activité.
Incremental Synchronization Rate Limit
Vous pouvez choisir de limiter ou non le débit de synchronisation incrémentielle selon vos besoins.
Data Conflict Handling Strategy
Les valeurs valides sont Ignore errors and keep the original data on the target et Ignore conflicts, use source data to overwrite target data.
Cliquez sur Precheck. Le système effectue une pré-vérification de la tâche arrière.
Une fois la pré-vérification réussie, cliquez sur Start Task pour démarrer la tâche arrière.