Cette rubrique explique comment synchroniser des données d'une instance ApsaraDB RDS for PostgreSQL vers un locataire Oracle d'OceanBase Database.
Prérequis
Le service de transmission de données dispose des privilèges nécessaires pour accéder aux ressources cloud. Pour plus d'informations, consultez la page Accorder des privilèges aux rôles pour la transmission de données.
Vous avez créé un compte privilégié dédié à la synchronisation des données dans l'instance ApsaraDB RDS for PostgreSQL source. Pour plus d'informations, consultez la page Source de données PostgreSQL.
Vous avez créé un utilisateur de base de données dédié à la synchronisation des données dans le locataire Oracle cible d'OceanBase Database et vous lui avez accordé les privilèges correspondants. Pour plus d'informations, consultez la page Créer un utilisateur de base de données.
-
Pour une synchronisation incrémentielle, effectuez d'abord les opérations suivantes :
-
Le service de transmission de données ne prend pas en charge la synchronisation automatique des instructions DDL lors de la synchronisation incrémentielle. Si vous devez exécuter des opérations DDL sur une table à synchroniser, exécutez d'abord les instructions DDL correspondantes dans la cible, puis dans l'instance ApsaraDB RDS for PostgreSQL source.
Pour analyser correctement les opérations DML incrémentielles effectuées après l'exécution de l'instruction DDL, vous devez créer un déclencheur correspondant ainsi qu'une table destinée à enregistrer l'instruction DDL. Pour plus d'informations, consultez la page Créer un déclencheur.
Si vous sélectionnez Incremental Synchronization, définissez le paramètre wal_level sur logical.
Pour plus d'informations, consultez la page Modifier le niveau de journalisation d'une instance ApsaraDB RDS for PostgreSQL.
-
Limites
Seules les instances ApsaraDB RDS for PostgreSQL versions 11.x et 12.x sont prises en charge.
Le service de transmission de données prend en charge la synchronisation d'un objet uniquement si les conditions suivantes sont remplies : le nom de la base de données, le nom de la table et le nom de la colonne de l'objet sont encodés en ASCII et ne contiennent aucun caractère spécial. Les caractères spéciaux incluent les sauts de ligne, les espaces et les caractères suivants : . | " ' ` ( ) = ; / & \.
Le service de transmission de données ne prend pas en charge la synchronisation des vues, des tables partitionnées, des tables non journalisées, des tables temporaires, des contraintes FOREIGN KEY ou des contraintes CHECK d'une instance ApsaraDB RDS for PostgreSQL vers un locataire Oracle d'OceanBase Database.
Le service de transmission de données prend en charge la synchronisation incrémentielle uniquement depuis la base de données principale.
Considérations
-
Si vous sélectionnez Incremental Synchronization, l'option REPLICA IDENTITY au niveau de la table doit répondre aux exigences suivantes :
Si vous sélectionnez Specify Objects, la table spécifiée doit contenir une clé primaire, ou le paramètre
REPLICA IDENTITYde la table doit être défini sur FULL. Sinon, l'opération de mise à jour ou de suppression des données métier échouera.Si vous sélectionnez Match Rules, l'instance ApsaraDB RDS for PostgreSQL source doit s'abonner à toutes les tables de la base de données sélectionnée, y compris les tables sélectionnées, les tables non sélectionnées et les nouvelles tables. Toutes ces tables doivent contenir des clés primaires, ou le paramètre
REPLICA IDENTITYdes tables doit être défini sur FULL. Sinon, l'opération de mise à jour ou de suppression des données métier échouera.
Exécutez l'instruction suivante pour définir l'option
REPLICA IDENTITYau niveau de la table sur FULL :ALTER TABLE table_name REPLICA IDENTITY FULL; Lorsque vous synchronisez des schémas ou des opérations DDL incrémentielles d'une instance ApsaraDB RDS for PostgreSQL vers un locataire Oracle d'OceanBase Database, les noms de table et les noms de champ sont convertis en majuscules selon les stratégies par défaut du service de transmission de données. Par exemple, le nom de table source « a » est converti en « A » dans la cible par défaut. Vous pouvez spécifier un nom de table ou de champ au format a, A ou "A", mais pas "a".
-
Le composant Incr-Sync d'une instance ApsaraDB RDS for PostgreSQL crée automatiquement des publications et des slots, mais vous devez surveiller l'utilisation du disque des journaux de l'instance. Par défaut, le service de transmission de données notifie l'instance, à intervalles de 10 minutes, de mettre à jour la valeur
confirmed_flush_lsnd'un slot avec le dernier numéro de séquence de journal (LSN) datant de 10 minutes. Par conséquent, chaque composant Incr-Sync conserve au moins 10 minutes de journaux de l'instance ApsaraDB RDS for PostgreSQL.RemarqueSi vous souhaitez modifier l'intervalle de notification ou la période de rétention des fichiers journaux générés par l'instance ApsaraDB RDS for PostgreSQL, contactez le support technique d'Alibaba Cloud.
Si les journaux de l'instance ApsaraDB RDS for PostgreSQL ne peuvent pas être effacés pendant la synchronisation des données en raison de l'existence de slots, supprimez la tâche de synchronisation des données, puis effacez les journaux. La plus petite valeur
slot restart_lsnparmi tous les slots détermine si les fichiers journaux de l'instance ApsaraDB RDS for PostgreSQL peuvent être recyclés. Si la plus petite valeur se trouve dans la plage des fichiers journaux, ceux-ci ne sont pas recyclés. Lorsque vous synchronisez des données vers la cible, des données en double peuvent apparaître si la table cible ne possède pas de clé primaire ou de clé unique NOT NULL.
Si la base de données source utilise le jeu de caractères UTF-8, nous vous recommandons d'utiliser un jeu de caractères compatible, tel que UTF-8 ou UTF-16, dans la base de données cible afin d'éviter tout problème d'affichage de caractères.
Vérifiez si la précision de synchronisation du service de transmission de données pour les colonnes de types DECIMAL, FLOAT et DOUBLE correspond à vos attentes. Si la précision du type de champ cible est inférieure à celle du type de champ source, la valeur de haute précision peut être tronquée. Cela peut entraîner une incohérence des données entre les champs source et cible.
Si vous modifiez un index unique dans la cible, redémarrez la tâche de synchronisation des données pour éviter toute incohérence des données.
-
Si les horloges des nœuds ou celles du client et du serveur ne sont pas synchronisées, la latence peut être imprécise lors de la synchronisation incrémentielle.
Par exemple, si l'horloge est en avance sur l'heure standard, la latence peut être négative. Si l'horloge est en retard par rapport à l'heure standard, la latence peut être positive.
-
Si vous sélectionnez uniquement Incremental Synchronization lors de la création de la tâche de synchronisation des données, le service de transmission de données exige que les journaux incrémentiels locaux de la base de données source soient conservés pendant au moins 48 heures.
Si vous sélectionnez Full Synchronization et Incremental Synchronization lors de la création de la tâche de synchronisation des données, le service de transmission de données exige que les journaux incrémentiels locaux de la base de données source soient conservés pendant au moins sept jours. Dans le cas contraire, la tâche de synchronisation des données risque d'échouer ou les données des bases de données source et cible peuvent devenir incohérentes, car le service de transmission de données ne pourra pas obtenir les journaux incrémentiels.
Si la base de données source ou cible contient des objets de table qui ne diffèrent que par la casse, les résultats de la migration des données peuvent ne pas être conformes aux attentes en raison de l'insensibilité à la casse dans la base de données source ou cible.
Si des colonnes avec une contrainte UNIQUE autorisent les valeurs NULL, une perte de données peut survenir. Lorsque plusieurs valeurs NULL existent dans l'instance ApsaraDB RDS for PostgreSQL source, seule la première valeur NULL est synchronisée avec succès vers le locataire Oracle cible d'OceanBase Database, tandis que les valeurs NULL suivantes sont ignorées en raison d'une violation de contrainte UNIQUE.
Types d'instances source et destination pris en charge
Dans le tableau suivant, le locataire Oracle d'Alibaba Cloud OceanBase Database est abrégé en OB_Oracle.
|**Source**
|
**Destination**
| | --- | --- | |
PostgreSQL (instance RDS)
|
OB_Oracle (instance de cluster OceanBase)
| |
PostgreSQL (instance RDS)
|
OB_Oracle (base de données autogérée dans un VPC)
|
Correspondance des types de données
Instance RDS PostgreSQL | Locataire Oracle d'Alibaba Cloud OceanBase Database |
int | NUMBER(10) |
smallint | NUMBER(5) |
bigint | NUMBER(20) |
decimal | NUMBER(p,s) |
numeric | NUMBER(p,s) |
real | BINARY_FLOAT |
double precision | BINARY_DOUBLE |
smallserial | NUMBER(5) |
serial | NUMBER(10) |
bigserial | NUMBER(20) |
char | CHAR(n) Remarque La longueur par défaut d'une colonne de type de données |
varchar | VARCHAR2(n) |
text | CLOB |
timestamp | TIMESTAMP(p) |
timestamp with time zone | TIMESTAMP(p) WITH TIME ZONE |
time | DATE |
time with time zone | TIMESTAMP(p) WITH TIME ZONE |
boolean | NUMBER(1) |
bytea | BLOB |
citext | CLOB |
tsvector | CLOB |
Procédure
-
Connectez-vous à la console de gestion OceanBase et achetez une tâche de synchronisation de données.
Pour plus d'informations, consultez la page Acheter une tâche de synchronisation de données.
-
Dans la console Data Transmission Service, accédez à la page Data Synchronization, localisez la nouvelle tâche de synchronisation, puis cliquez sur Configure.

Si vous souhaitez réutiliser les configurations d'une tâche existante, cliquez sur Reuse Configuration. Pour plus d'informations, consultez la page Réutiliser et effacer les configurations d'une tâche de synchronisation de données.
-
Sur la page Select Source and Target, configurez les paramètres.
|
**Parameter**
|
**Description**
| | --- | --- | |
Synchronization Task Name
|
Nous vous recommandons de définir une combinaison de chiffres et de lettres. Le nom ne doit contenir aucun espace et ne peut pas dépasser 64 caractères.
| |
Source
|
Si vous avez déjà créé une source de données PostgreSQL, sélectionnez-la dans la liste déroulante. Sinon, cliquez sur **New Data Source** dans la liste déroulante et créez-en une dans la boîte de dialogue qui s'affiche à droite. Pour plus d'informations, consultez la page [Créer une source de données PostgreSQL](t2517848.xdita#).
| |
Target
|
Si vous avez déjà créé une source de données OceanBase, sélectionnez-la dans la liste déroulante. Sinon, cliquez sur **New Data Source** dans la liste déroulante et créez-en une dans la boîte de dialogue qui s'affiche à droite. Pour plus d'informations, consultez la page [Source de données OceanBase](t2044807.xdita#topic-2044807).
| |
Tag (Optional)
|
Sélectionnez un tag cible dans la liste déroulante. Vous pouvez également cliquer sur **Manage Tags** pour créer, modifier et supprimer des tags. Pour plus d'informations, consultez la page [Utiliser des tags pour gérer les tâches de synchronisation de données](t2305766.xdita#).
| -
Cliquez sur New Data Source. Sur la page New Data Source, spécifiez les types de synchronisation pour la tâche de synchronisation de données actuelle.

Les types de synchronisation pris en charge sont Manage Tags, Next et Select Synchronization Type. L'option Schema Synchronization prend uniquement en charge la Full Synchronization. Les opérations DML prises en charge sont
INSERT,DELETEetUPDATE. Sélectionnez les options selon vos besoins. Pour plus d'informations, consultez la page Configurer la synchronisation DDL/DML. -
Cliquez sur Incremental Synchronization. Sur la page Incremental Synchronization, sélectionnez les objets à synchroniser.
Vous pouvez utiliser l'option DML Synchronization ou Next pour spécifier les objets de synchronisation. Cette rubrique décrit comment spécifier les objets de synchronisation à l'aide de l'option Select Synchronization Objects. Pour savoir comment configurer les règles de correspondance, consultez la section « Modèles génériques pour la migration/synchronisation de données entre bases de données » de la page Configurer et modifier les règles de correspondance.
ImportantLe nom d'une table à synchroniser, ainsi que les noms des colonnes de cette table, ne doivent pas contenir de caractères chinois.
Si un nom de base de données ou de table contient un double signe dollar ($$), vous ne pouvez pas créer la tâche de synchronisation.

Dans la section Specify Objects, sélectionnez Match Rules.
Dans la section Specify Objects, sélectionnez les objets à synchroniser dans la liste Select Synchronization Objects. Vous pouvez sélectionner les tables d'une ou plusieurs bases de données comme objets de synchronisation.
Cliquez sur Specify Objects pour les ajouter à la liste Select Synchronization Scope.
Le service de transmission de données vous permet d'importer des objets via du texte. Il permet également de renommer des objets, de définir des objets et de supprimer un objet unique ou tous les objets.
RemarqueLorsque vous sélectionnez Source Object(s) pour spécifier les objets de migration, le renommage des objets est effectué selon la syntaxe des règles de correspondance spécifiées. Dans la zone d'opération, vous pouvez uniquement définir des conditions de filtrage. Pour plus d'informations, consultez la page Configurer et modifier les règles de correspondance.
Operation
Description
Import objects
Dans la liste de droite, cliquez sur Import Objects dans le coin supérieur droit.
Dans la boîte de dialogue qui s'affiche, cliquez sur OK.
ImportantCette opération écrasera les sélections précédentes. Procédez avec prudence.
Dans la boîte de dialogue Import Synchronization Objects, importez les objets à synchroniser. Vous pouvez importer des fichiers CSV pour renommer des bases de données ou des tables et définir des conditions de filtrage de lignes. Pour plus d'informations, consultez la page Télécharger et importer les paramètres des objets de synchronisation.
Cliquez sur Validate.
Une fois la validation réussie, cliquez sur OK.
Rename objects
Le service de transmission de données vous permet de renommer les objets de synchronisation. Pour plus d'informations, consultez la page Renommer une table de base de données.
Configure settings
Vous pouvez utiliser la clause
WHEREpour filtrer les données par ligne et afficher les informations de colonne des objets de synchronisation.Dans la liste de droite, placez le curseur sur l'objet que vous souhaitez configurer.
Cliquez sur >.
Dans la boîte de dialogue Target Object(s), vous pouvez effectuer les opérations suivantes :
Dans la section Match Rules, spécifiez une clause
WHERESQL standard pour filtrer les données par ligne. Pour plus d'informations, consultez la page Utiliser des conditions SQL pour filtrer les données.Vous pouvez également afficher les informations de colonne des objets de synchronisation dans la section Settings.
Cliquez sur Settings.
Remove one or all objects
Le service de transmission de données vous permet de supprimer un ou tous les objets de synchronisation ajoutés à la liste de droite lors du mappage des données.
Supprimer un seul objet de synchronisation
Dans la liste de droite, placez le curseur sur l'objet que vous souhaitez supprimer, puis cliquez sur Row Filters pour supprimer l'objet de synchronisation.
Supprimer tous les objets de synchronisation
Dans la liste de droite, cliquez sur View Columns dans le coin supérieur droit. Dans la boîte de dialogue qui s'affiche, cliquez sur OK pour supprimer tous les objets de synchronisation.
-
Cliquez sur Remove. Sur la page Remove All, configurez les paramètres.
-
Synchronisation complète
Le tableau suivant décrit les paramètres de synchronisation complète, qui s'affichent uniquement si vous avez sélectionné OK sur la page Next.

Parameter
Description
Read Concurrency
La concurrence pour la lecture des données depuis la source lors de la synchronisation complète. La valeur maximale est 512. Une concurrence élevée peut exercer une pression excessive sur la source, ce qui affecte l'activité.
Write Concurrency
La concurrence pour l'écriture des données dans la cible lors de la synchronisation complète. La valeur maximale est 512. Une concurrence d'écriture élevée peut exercer une pression excessive sur la cible, ce qui affecte l'activité.
Full Synchronization Rate Limit
Vous pouvez choisir de limiter ou non le débit de synchronisation complète selon vos besoins. Si vous choisissez de limiter le débit, vous devez spécifier le nombre d'enregistrements par seconde (RPS) et le nombre d'octets par seconde (BPS). Le RPS définit le nombre maximal de lignes de données synchronisées vers la cible par seconde lors de la synchronisation complète, et le BPS définit la quantité maximale de données en octets synchronisée vers la cible par seconde lors de la synchronisation complète.
RemarqueLes valeurs RPS et BPS spécifiées ici servent uniquement à la limitation de débit. Les performances réelles de synchronisation complète dépendent de facteurs tels que les configurations de la source et de la cible, ainsi que les spécifications de l'instance.
Handle Non-empty Tables in Target Database
Si vous sélectionnez Synchronization Options, 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 enregistre les données conflictuelles tout en conservant les données existantes.
ImportantSi vous sélectionnez Full Synchronization, les données sont extraites en mode IN pour la vérification complète. Dans ce cas, la vérification n'est pas applicable 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 Select Synchronization Type et qu'une table cible contient des enregistrements, une erreur indiquant que la migration n'est pas prise en charge s'affiche 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 Restore dans la boîte de dialogue affichant l'erreur, le service de transmission de données ignore cette erreur et continue la migration des données. Procédez avec prudence.
-
Synchronisation incrémentielle
Le tableau suivant décrit les paramètres de synchronisation incrémentielle, qui s'affichent uniquement si vous avez sélectionné Ignore sur la page Ignore.

Parameter
Description
Write Concurrency
La concurrence pour l'écriture des données dans 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, ce qui affecte 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, vous devez spécifier le RPS et le BPS. Le RPS définit le nombre maximal de lignes de données synchronisées vers la cible par seconde lors de la synchronisation incrémentielle, et le BPS définit la quantité maximale de données en octets synchronisée vers la cible par seconde lors de la synchronisation incrémentielle.
RemarqueLes valeurs RPS et BPS spécifiées ici servent uniquement à la limitation de débit. Les performances réelles de synchronisation incrémentielle dépendent de facteurs tels que les configurations de la source et de la cible, ainsi que les spécifications de l'instance.
Incremental Synchronization Start Timestamp
Ce paramètre n'est pas disponible lorsque la source est une base de données PostgreSQL. La valeur par défaut correspond à l'heure de début de la synchronisation incrémentielle.
-
Paramètres avancés
-
Les paramètres suivants s'affichent uniquement si Stop Migration n'est pas sélectionné sur la page Incremental Synchronization.

Parameter
Description
Select Synchronization Type
Après avoir sélectionné ce paramètre, vous pouvez écrire des données spécifiées, telles que le schéma et d'autres valeurs de champs personnalisés de la source, dans des champs spécifiques de la cible.
Schema Synchronization
Le service de transmission de données récupère le nom du schéma de la source et l'écrit sous forme de chaîne dans le champ spécifié de la table cible.
Lorsque vous spécifiez Select Synchronization Type, assurez-vous que ce champ existe dans les schémas de toutes les tables concernées dans la cible.
Synchronize Data
Vous pouvez synchroniser une valeur de champ personnalisée sous forme de chaîne vers le champ spécifié de la table cible dans la cible.
ImportantLe service de transmission de données ne vérifie ni le type du champ spécifié par Sync Schema Name, ni la validité de la valeur spécifiée par Specify Field Name, et n'échappe pas les caractères spéciaux. Assurez-vous que le type de champ et la valeur répondent aux exigences.
-
Cette section s'affiche uniquement si la cible est un locataire Oracle d'Alibaba Cloud OceanBase Database version 4.3.0 ou ultérieure et que vous avez sélectionné Sync Custom Data sur la page Select Synchronization Type.

Ce paramètre spécifie le type de stockage pour les objets de table cibles lors de la synchronisation de schéma ou de la synchronisation incrémentielle. Les types de stockage pris en charge pour les objets de table cibles sont 行存, 列存, 行列混存 et Default. Pour plus d'informations, consultez la page default_table_store_format.
RemarqueLa valeur Row storage signifie que les autres paramètres sont automatiquement définis en fonction des configurations de paramètres de la cible. Les objets de table dans la synchronisation de schéma sont écrits dans les schémas correspondants selon le type de stockage spécifié.
-
-
-
Cliquez sur Column storage.
À l'étape Hybrid columnar storage, Data Transmission Service vérifie la connectivité entre la source et la destination. Si la prévérification échoue :
Résolvez les problèmes, puis relancez la prévérification.
Vous pouvez également cliquer sur Default dans la colonne Actions pour un élément de prévérification ayant échoué. Une boîte de dialogue s'affiche et explique l'impact spécifique du fait d'ignorer cette opération. Pour confirmer l'ignorance de l'élément, cliquez sur Precheck dans la boîte de dialogue.
-
Une fois la prévérification réussie, cliquez sur Precheck.
Si vous n'avez pas besoin de démarrer la tâche immédiatement, cliquez sur Skip. Vous pourrez démarrer manuellement la tâche ultérieurement sur la page OK ou via des opérations par lot. Pour plus d'informations sur les opérations par lot, consultez la page Effectuer des opérations par lot sur les tâches de synchronisation de données. Une fois la tâche de synchronisation de données démarrée, elle s'exécutera selon les types de synchronisation sélectionnés. Pour plus d'informations, consultez la page Afficher les détails d'une tâche de synchronisation de données.
Le service de transmission de données vous permet de supprimer des objets de synchronisation pendant la synchronisation des données. Pour plus d'informations, consultez la page Afficher et modifier les objets de synchronisation.
ImportantVous ne pouvez pas ajouter d'objets de synchronisation pendant la synchronisation des données d'une instance ApsaraDB RDS for PostgreSQL vers un locataire Oracle d'Alibaba Cloud OceanBase Database.
Si une tâche de synchronisation de données échoue, généralement en raison de problèmes de connexion réseau ou d'un démarrage lent du processus, cliquez sur Start Task dans la liste des tâches ou sur la page du produit.