La source de données ApsaraDB for OceanBase permet de lire et d'écrire des données dans ApsaraDB for OceanBase. Utilisez cette source de données pour configurer des tâches de synchronisation de données dans DataWorks. Cette rubrique décrit les fonctionnalités de synchronisation des données avec ApsaraDB for OceanBase.
Versions prises en charge
ApsaraDB for OceanBase Reader et ApsaraDB for OceanBase Writer prennent en charge les versions suivantes d'OceanBase pour les opérations de lecture et d'écriture par lots :
OceanBase 2.x
OceanBase 3.x
OceanBase 4.x
Les versions mentionnées ci-dessus concernent toutes ApsaraDB for OceanBase, le service géré par Alibaba Cloud. OceanBase Community Edition (CE) n'est pas pris en charge. Pour synchroniser des données depuis une instance OceanBase Community Edition auto-gérée, migrez d'abord les données vers ApsaraDB RDS for MySQL à l'aide du service Data Transmission Service (DTS), puis utilisez DataWorks pour synchroniser les données vers AnalyticDB for MySQL.
Limites
Lecture par lots
ApsaraDB for OceanBase prend en charge les modes de locataire Oracle et MySQL. Lorsque vous configurez la clause where pour le filtrage des données ou les colonnes de fonction dans le paramètre column, assurez-vous que la syntaxe respecte les contraintes SQL du mode de locataire correspondant. Sinon, l'instruction SQL peut échouer.
Vous pouvez lire des données à partir d'une vue.
Lors d'une lecture par lots, ne modifiez pas les données en cours de synchronisation. Cela permet d'éviter des problèmes de qualité des données, tels que la duplication ou la perte de données.
Si vous configurez la source de données pour Read by Partition, le compte utilisé pour accéder à la source de données doit disposer des autorisations system.
Écriture par lots
La tâche de synchronisation requiert au minimum les autorisations insert into... . D'autres autorisations peuvent être nécessaires selon les instructions spécifiées dans les paramètres preSql et postSql .
Nous vous recommandons d'utiliser la méthode batch pour écrire les données. Cette méthode envoie une requête d'écriture uniquement lorsque le nombre de lignes accumulées atteint un seuil prédéfini.
ApsaraDB for OceanBase prend en charge les modes de locataire Oracle et MySQL. Lorsque vous configurez les paramètres preSql et postSql , assurez-vous que la syntaxe respecte les contraintes SQL du mode de locataire correspondant. Sinon, l'instruction SQL peut échouer.
Lecture en temps réel
Cette fonctionnalité prend uniquement en charge le mode de locataire MySQL d'OceanBase.
Pour synchroniser des données en temps réel, vous devez activer la fonctionnalité binlog. Pour plus d'informations, reportez-vous à Opérations liées au binlog (instances Alibaba Cloud), Opérations liées au binlog (instances OB Cloud) .
Les tâches de synchronisation complète de la base de données en temps réel ne prennent pas en charge les sources de données en mode chaîne de connexion.
Pour les tâches de synchronisation complète de la base de données en temps réel, la version de la base de données doit être la V3.0 ou ultérieure.
OceanBase est une base de données relationnelle distribuée capable d'intégrer les données de plusieurs bases de données physiquement distribuées en une seule base de données logique. Toutefois, la synchronisation en temps réel des données OceanBase vers AnalyticDB for MySQL prend actuellement en charge uniquement les données provenant d'une seule base de données physique. La synchronisation des données depuis une base de données logique n'est pas prise en charge.
Préparatifs avant la synchronisation des données
Avant de synchroniser des données dans DataWorks, préparez l'environnement ApsaraDB for OceanBase comme décrit dans cette rubrique. Cela garantit que les tâches de synchronisation des données ApsaraDB for OceanBase peuvent être correctement configurées et exécutées dans DataWorks. Les sections suivantes décrivent les préparatifs requis.
Configurer une liste d'autorisation
Ajoutez le bloc CIDR VPC du groupe de ressources Serverless ou du groupe de ressources exclusif pour Data Integration à la liste d'autorisation OceanBase. Pour plus d'informations, reportez-vous à Ajouter des entrées à la liste d'autorisation .
Créer un compte et configurer les autorisations
Créez un compte de base de données pour les opérations ultérieures. Ce compte doit disposer des autorisations requises sur OceanBase. Pour plus d'informations, reportez-vous à Créer un compte et configurer les autorisations .
Ajouter une source de données
Avant de développer une tâche de synchronisation dans DataWorks, ajoutez la source de données requise à DataWorks en suivant les instructions de Configuration de la source de données . Consultez les descriptions des paramètres dans la console DataWorks pour comprendre la signification des paramètres lors de l'ajout d'une source de données.
Développer des tâches de synchronisation de données
Pour obtenir des informations sur le point d'entrée et la procédure de configuration d'une tâche de synchronisation, consultez les guides de configuration suivants.
Synchronisation par lots d'une table unique
Sources prises en charge : Tous les types de sources de données pris en charge par le module Data Integration
Guide de configuration : Configurer une tâche de synchronisation par lots
Synchronisation en temps réel d'une table unique
Sources prises en charge : Kafka
Guide de configuration : Configurer une tâche de synchronisation en temps réel
Synchronisation en temps réel de la base de données complète
Sources prises en charge : MySQL
Guide de configuration : Configurer une tâche de synchronisation en temps réel
Annexe : Exemples de scripts et descriptions des paramètres
Configurer une tâche de synchronisation par lots à l'aide de l'éditeur de code
Si vous souhaitez configurer une tâche de synchronisation par lots à l'aide de l'éditeur de code, configurez les paramètres associés dans le script selon les exigences de format de script unifié. Pour plus d'informations, reportez-vous à Configuration en mode script . Les informations suivantes décrivent les paramètres que vous devez configurer pour les sources de données lors de la configuration d'une tâche de synchronisation par lots à l'aide de l'éditeur de code.
Exemple de script Reader
{ "type": "job", "steps": [ { "stepType": "apsaradb_for_OceanBase", // The plug-in name. "parameter": { "datasource": "", // The data source name. "where": "", "column": [ // The columns. "id", "name" ], "splitPk": "" }, "name": "Reader", "category": "reader" }, { "stepType": "stream", "parameter": { "print": false, "fieldDelimiter": "," }, "name": "Writer", "category": "writer" } ], "version": "2.0", "order": { "hops": [ { "from": "Reader", "to": "Writer" } ] }, "setting": { "errorLimit": { "record": "0" // The error count. }, "speed": { "throttle": true, // Specifies whether to enable throttling. A value of false indicates that throttling is disabled and the mbps parameter does not take effect. A value of true indicates that throttling is enabled. "concurrent": 1, // The concurrency. "mbps":"12" // The throttling rate. 1 mbps = 1 MB/s. } } }
Paramètres du script Reader
|
Paramètre |
Description |
Obligatoire |
Valeur par défaut |
|
datasource |
Si l'édition DataWorks que vous utilisez prend en charge l'ajout de sources de données ApsaraDB for OceanBase, vous pouvez référencer une source de données ApsaraDB for OceanBase ajoutée par son nom. Deux méthodes de configuration sont disponibles : jdbcUrl et username. |
Oui |
N/A |
|
jdbcUrl |
Les informations de connexion JDBC de la base de données de destination. Utilisez un tableau JSON pour la description. Vous pouvez spécifier plusieurs adresses de connexion pour une seule base de données. Si plusieurs adresses sont configurées, ApsaraDB for OceanBase Reader teste la connectivité de chaque adresse IP séquentiellement jusqu'à ce qu'une adresse valide soit trouvée. Si toutes les connexions échouent, ApsaraDB for OceanBase Reader signale une erreur. Remarque
jdbcUrl doit être inclus dans l'unité de configuration connection. Selon la spécification officielle d'ApsaraDB for OceanBase, jdbcUrl peut inclure des informations de contrôle de connexion supplémentaires. Par exemple, |
Non |
N/A |
|
username |
Le nom d'utilisateur de la source de données. |
Non |
N/A |
|
password |
Le mot de passe du nom d'utilisateur spécifié pour la source de données. |
Non |
N/A |
|
table |
Les tables à synchroniser. Utilisez un tableau JSON pour la description. Vous pouvez lire des données à partir de plusieurs tables simultanément. Lorsque plusieurs tables sont configurées, assurez-vous que toutes les tables ont le même schéma. ApsaraDB for OceanBase Reader ne vérifie pas la cohérence du schéma entre les tables. Remarque
table doit être inclus dans l'unité de configuration connection. |
Oui |
N/A |
|
column |
Les colonnes à synchroniser à partir des tables configurées. Utilisez un tableau JSON pour décrire les informations de colonne. Par défaut, toutes les colonnes sont utilisées, par exemple [*].
|
Oui |
N/A |
|
splitPk |
Si vous spécifiez splitPk lorsque ApsaraDB for OceanBase Reader extrait des données, les données sont divisées en fonction de la colonne spécifiée par splitPk. Le système de synchronisation des données démarre ensuite des tâches concurrentes pour améliorer l'efficacité de la synchronisation.
|
Non |
Vide |
|
where |
ApsaraDB for OceanBase Reader assemble une instruction SQL basée sur les paramètres column, table et where spécifiés, puis utilise l'instruction SQL assemblée pour extraire les données. Par exemple, lors des tests, vous pouvez définir la condition where sur limit 10. Dans les scénarios commerciaux réels, vous synchronisez généralement les données générées le jour en cours en définissant la condition where sur
|
Non |
N/A |
|
querySql |
Dans certains scénarios commerciaux, le paramètre where peut ne pas suffire à décrire les conditions de filtrage requises. Vous pouvez utiliser ce paramètre pour définir une instruction SQL de filtrage personnalisée. Lorsque ce paramètre est configuré, le système de synchronisation des données ignore les paramètres tables, columns et splitPk, et utilise l'instruction SQL configurée pour filtrer les données. Lorsque vous configurez querySql, ApsaraDB for OceanBase Reader ignore les paramètres table, column, where et splitPk. |
Non |
N/A |
|
fetchSize |
Ce paramètre spécifie le nombre de lignes récupérées par lot entre le plug-in et le serveur de base de données. Cette valeur détermine le nombre d'interactions réseau entre le système de synchronisation des données et le serveur, et peut améliorer considérablement les performances d'extraction des données. Remarque
Une valeur fetchSize trop élevée (>2048) peut provoquer une erreur de mémoire insuffisante (OOM) lors du processus de synchronisation des données. |
Non |
1 024 |
Exemple de script Writer
{ "type":"job", "version":"2.0", // The version number. "steps":[ { "stepType":"stream", "parameter":{}, "name":"Reader", "category":"reader" }, { "stepType":"apsaradb_for_OceanBase", // The plug-in name. "parameter":{ "datasource": "Data source name", "column": [ // The columns. "id", "name" ], "table": "apsaradb_for_OceanBase_table", // The table name. "preSql": [ // The SQL statements to execute before the data synchronization task runs. "delete from @table where db_id = -1" ], "postSql": [ // The SQL statements to execute after the data synchronization task runs. "update @table set db_modify_time = now() where db_id = 1" ], "obWriteMode": "insert", }, "name":"Writer", "category":"writer" } ], "setting":{ "errorLimit":{ "record":"0" // The error count. }, "speed":{ "throttle":true, // Specifies whether to enable throttling. A value of false indicates that throttling is disabled and the mbps parameter does not take effect. A value of true indicates that throttling is enabled. "concurrent":1, // The concurrency. "mbps":"12" // The throttling rate. 1 mbps = 1 MB/s. } }, "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] } }
Paramètres du script Writer
|
Paramètre |
Description |
Obligatoire |
Valeur par défaut |
|
datasource |
Si l'édition DataWorks que vous utilisez prend en charge l'ajout de sources de données ApsaraDB for OceanBase, vous pouvez référencer une source de données ApsaraDB for OceanBase ajoutée par son nom. Deux méthodes de configuration sont disponibles : jdbcUrl et username. |
Non |
N/A |
|
jdbcUrl |
Les informations de connexion JDBC de la base de données de destination. jdbcUrl est inclus dans l'unité de configuration connection.
|
Oui |
N/A |
|
username |
Le nom d'utilisateur de la source de données. |
Oui |
N/A |
|
password |
Le mot de passe du nom d'utilisateur spécifié pour la source de données. |
Oui |
N/A |
|
table |
Le nom de la table dans laquelle les données sont écrites. Utilisez un tableau JSON pour la description. Remarque
table doit être inclus dans l'unité de configuration connection. |
Oui |
N/A |
|
column |
Les colonnes de la table de destination dans lesquelles les données sont écrites. Séparez les noms de colonnes par des virgules (,). Par exemple, Remarque
Le paramètre column doit être spécifié et ne peut pas être laissé vide. |
Oui |
N/A |
|
obWriteMode |
Le mode utilisé pour écrire les données dans la table de destination. Ce paramètre est facultatif.
|
Non |
insert |
|
onClauseColumns |
Remarque
Utilisé en mode de locataire Oracle. Ce paramètre est requis lorsque Définissez ce paramètre sur les colonnes de clé primaire ou les colonnes de contrainte unique. Séparez plusieurs colonnes par des virgules (,). Par exemple, |
Non |
N/A |
|
obUpdateColumns |
Remarque
Ce paramètre prend effet lorsque Les colonnes à mettre à jour lorsqu'un conflit d'écriture se produit. Séparez plusieurs colonnes par des virgules (,). Par exemple, |
Non |
Toutes les colonnes |
|
preSql |
Les instructions SQL standard à exécuter avant l'écriture des données dans la table de destination. Si vous devez référencer le nom de la table dans les instructions SQL, utilisez |
Non |
N/A |
|
postSql |
Les instructions SQL standard à exécuter après l'écriture des données dans la table de destination. |
Non |
N/A |
|
batchSize |
Le nombre d'enregistrements à soumettre dans chaque lot. Cette valeur peut réduire considérablement le nombre d'interactions réseau entre le système de synchronisation des données et le serveur, et améliorer le débit global. Remarque
Une valeur fetchSize trop élevée (>2048) peut provoquer une erreur de mémoire insuffisante (OOM) lors du processus de synchronisation des données. |
Non |
1 024 |