A fonte de dados do ApsaraDB for OceanBase permite ler e gravar dados no ApsaraDB for OceanBase. Use esta fonte para configurar tarefas de sincronização de dados no DataWorks. Este tópico descreve os recursos disponíveis para sincronizar dados com o ApsaraDB for OceanBase.
Versões compatíveis
O ApsaraDB for OceanBase Reader e o ApsaraDB for OceanBase Writer são compatíveis com as seguintes versões do OceanBase para operações de leitura e gravação em lote:
OceanBase 2.x
OceanBase 3.x
OceanBase 4.x
Limitações
Leitura em lote
O ApsaraDB for OceanBase é compatível com os modos de tenant Oracle e MySQL. Ao configurar a cláusula where para filtragem de dados ou colunas de função no parâmetro column, garanta que a sintaxe esteja em conformidade com as restrições SQL do modo de tenant correspondente. Caso contrário, a instrução SQL poderá falhar.
É possível visualizar dados de uma view.
Durante uma leitura em lote, não modifique os dados em sincronização. Essa precaução evita problemas de qualidade, como duplicação ou perda de dados.
Se você configurar a fonte de dados para Read by Partition, a conta usada para acessar a fonte de dados exigirá permissões de system.
Gravação em lote
A tarefa de sincronização requer, no mínimo, permissões de insert into.... Outras permissões podem ser necessárias dependendo das instruções especificadas nos parâmetros preSql e postSql.
Recomendamos o uso do método batch para gravar dados. Esse método envia uma solicitação de gravação apenas quando o número de linhas acumuladas atinge um limiar predefinido.
Como o ApsaraDB for OceanBase é compatível com os modos de tenant Oracle e MySQL, ao configurar os parâmetros preSql e postSql, assegure-se de que a sintaxe respeite as restrições SQL do modo de tenant correspondente. Instruções fora do padrão podem resultar em falhas.
Leitura em tempo real
Este recurso é compatível exclusivamente com o modo de tenant MySQL do OceanBase.
Para sincronizar dados em tempo real, ative o recurso de binlog. Para mais informações, consulte Operações relacionadas ao binlog (instâncias Alibaba Cloud), Operações relacionadas ao binlog (instâncias OB Cloud).
Tarefas de sincronização completa de banco de dados em tempo real não aceitam fontes de dados no modo de string de conexão.
Nas tarefas de sincronização completa de banco de dados em tempo real, a versão do banco de dados deve ser V3.0 ou superior.
O OceanBase é um banco de dados relacional distribuído capaz de integrar dados de vários bancos físicos em um único banco lógico. No entanto, a sincronização em tempo real de dados do OceanBase para o AnalyticDB for MySQL atualmente aceita apenas dados de um único banco físico. A sincronização a partir de um banco de dados lógico não é compatível.
Preparativos antes da sincronização de dados
Antes de sincronizar dados no DataWorks, prepare o ambiente do ApsaraDB for OceanBase conforme descrito neste tópico. Isso garante que as tarefas de sincronização sejam configuradas e executadas corretamente. As seções a seguir detalham os preparativos necessários.
Configurar uma lista de permissões
Adicione o bloco CIDR da VPC do grupo de recursos Serverless ou do grupo de recursos exclusivo para Data Integration à lista de permissões do OceanBase. Para mais detalhes, consulte Adicionar entradas na lista de permissões.
Criar uma conta e configurar permissões
Crie uma conta de banco de dados para as operações subsequentes. Essa conta precisa ter as permissões adequadas no OceanBase. Consulte Criar uma conta e configurar permissões para obter mais informações.
Adicionar uma fonte de dados
Antes de desenvolver uma tarefa de sincronização no DataWorks, adicione a fonte de dados necessária seguindo as instruções em Gerenciamento de fontes de dados. Consulte as descrições dos parâmetros no console do DataWorks para compreender o significado de cada campo durante a adição da fonte de dados.
Desenvolver tarefas de sincronização de dados
Para informações sobre o ponto de entrada e o procedimento de configuração de uma tarefa de sincronização, consulte os guias abaixo.
Sincronização em lote de tabela única
Fontes compatíveis: Todos os tipos de fonte de dados compatíveis com o módulo Data Integration
Guia de configuração: Configurar uma tarefa de sincronização em lote
Sincronização em tempo real de tabela única
Fontes compatíveis: Kafka
Guia de configuração: Configurar uma tarefa de sincronização em tempo real
Sincronização completa de banco de dados em tempo real
Fontes compatíveis: MySQL
Guia de configuração: Configurar uma tarefa de sincronização em tempo real
Apêndice: Exemplos de scripts e descrições de parâmetros
Configurar uma tarefa de sincronização em lote usando o editor de código
Para configurar uma tarefa de sincronização em lote por meio do editor de código, defina os parâmetros relevantes no script seguindo os requisitos unificados de formato. Consulte Configuração no modo Script para mais informações. As informações a seguir descrevem os parâmetros obrigatórios para fontes de dados nesse tipo de configuração.
Exemplo de script do 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. } } }
Parâmetros do script do Reader
|
Parâmetro |
Descrição |
Obrigatório |
Valor padrão |
|
datasource |
Se a edição do DataWorks utilizada permitir adicionar fontes de dados do ApsaraDB for OceanBase, referencie uma fonte já adicionada pelo nome. Existem dois métodos de configuração: jdbcUrl e username. |
Sim |
N/A |
|
jdbcUrl |
Informações de conexão JDBC do banco de dados de destino. Utilize um array JSON para a descrição. É possível especificar vários endereços de conexão para um único banco. Quando múltiplos endereços são configurados, o ApsaraDB for OceanBase Reader testa a conectividade de cada endereço IP sequencialmente até encontrar um válido. Se todas as tentativas de conexão falharem, o ApsaraDB for OceanBase Reader reportará um erro. Nota
O parâmetro jdbcUrl deve estar incluído na unidade de configuração connection. Conforme a especificação oficial do ApsaraDB for OceanBase, o jdbcUrl pode conter informações adicionais de controle de conexão. Exemplo: |
Não |
N/A |
|
username |
Nome de usuário da fonte de dados. |
Não |
N/A |
|
password |
Senha correspondente ao nome de usuário especificado para a fonte de dados. |
Não |
N/A |
|
table |
Tabelas a serem sincronizadas. Utilize um array JSON para a descrição. A leitura de dados de várias tabelas simultaneamente é permitida. Ao configurar múltiplas tabelas, certifique-se de que todas possuam o mesmo schema. O ApsaraDB for OceanBase Reader não valida a consistência de schema entre as tabelas. Nota
O parâmetro table deve constar na unidade de configuração connection. |
Sim |
N/A |
|
column |
Colunas a serem sincronizadas das tabelas configuradas. Descreva as informações das colunas usando um array JSON. Por padrão, todas as colunas são utilizadas, por exemplo, [*].
|
Sim |
N/A |
|
splitPk |
Ao especificar splitPk durante a extração de dados pelo ApsaraDB for OceanBase Reader, os dados são divididos com base na coluna indicada. O sistema de sincronização inicia então tarefas concorrentes para aumentar a eficiência.
|
Não |
Vazio |
|
where |
O ApsaraDB for OceanBase Reader monta uma instrução SQL baseada nos parâmetros column, table e where fornecidos, utilizando-a para extrair os dados. Por exemplo, em testes, defina a condição where como limit 10. Em cenários reais, sincronize dados do dia atual definindo where como
|
Não |
N/A |
|
querySql |
Em certos cenários, o parâmetro where pode não bastar para descrever os filtros necessários. Use este parâmetro para definir uma instrução SQL de filtro personalizada. Quando configurado, o sistema ignora os parâmetros tables, columns e splitPk, aplicando a SQL definida para filtrar os dados. Ao configurar querySql, o ApsaraDB for OceanBase Reader desconsidera os parâmetros table, column, where e splitPk. |
Não |
N/A |
|
fetchSize |
Define quantas linhas são buscadas por lote entre o plug-in e o servidor de banco de dados. Esse valor determina o número de interações de rede entre o sistema de sincronização e o servidor, podendo melhorar significativamente o desempenho da extração. Nota
Um valor muito alto para fetchSize (>2048) pode causar erro de falta de memória (OOM) durante a sincronização. |
Não |
1.024 |
Exemplo de script do 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" } ] } }
Parâmetros do script do Writer
|
Parâmetro |
Descrição |
Obrigatório |
Valor padrão |
|
datasource |
Caso sua edição do DataWorks permita adicionar fontes de dados do ApsaraDB for OceanBase, faça referência a uma fonte existente pelo nome. Dois métodos de configuração estão disponíveis: jdbcUrl e username. |
Não |
N/A |
|
jdbcUrl |
Dados de conexão JDBC do banco de destino. O jdbcUrl faz parte da unidade de configuração connection.
|
Sim |
N/A |
|
username |
Nome de usuário da fonte de dados. |
Sim |
N/A |
|
password |
Senha associada ao nome de usuário da fonte de dados. |
Sim |
N/A |
|
table |
Nome da tabela onde os dados serão gravados. Utilize um array JSON para a descrição. Nota
Inclua table dentro da unidade de configuração connection. |
Sim |
N/A |
|
column |
Colunas da tabela de destino que receberão os dados. Separe os nomes por vírgulas (,). Exemplo: Nota
Especifique obrigatoriamente o parâmetro column; ele não pode permanecer vazio. |
Sim |
N/A |
|
obWriteMode |
Modo de gravação de dados na tabela de destino. Parâmetro opcional.
|
Não |
insert |
|
onClauseColumns |
Nota
Exclusivo do modo de tenant Oracle. Obrigatório quando Defina colunas de chave primária ou restrição única. Separe múltiplas colunas por vírgulas (,). Exemplo: |
Não |
N/A |
|
obUpdateColumns |
Nota
Este parâmetro tem efeito apenas se Colunas a atualizar diante de conflitos de gravação. Separe-as por vírgulas (,). Exemplo: |
Não |
Todas as colunas |
|
preSql |
Instruções SQL padrão executadas antes da gravação na tabela de destino. Para referenciar o nome da tabela nas instruções, utilize |
Não |
N/A |
|
postSql |
Instruções SQL padrão executadas após a conclusão da gravação na tabela de destino. |
Não |
N/A |
|
batchSize |
Quantidade de registros enviados por lote. Valores adequados reduzem interações de rede entre o sistema e o servidor, elevando o throughput geral. Nota
Valores excessivos para fetchSize (>2048) podem provocar erros de memória insuficiente (OOM) na sincronização. |
Não |
1.024 |