A fonte de dados do ApsaraDB for OceanBase permite ler e gravar dados no ApsaraDB for OceanBase. Use esta fonte de dados para configurar tarefas de sincronização 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
Todas as versões listadas referem-se ao ApsaraDB for OceanBase, o service gerenciado da Alibaba Cloud. O OceanBase Community Edition (CE) não é compatível. Para sincronizar dados de uma instância auto-gerenciada do OceanBase Community Edition, use primeiro o Data Transmission Service (DTS) para migrar os dados para o ApsaraDB RDS for MySQL e, em seguida, use o DataWorks para sincronizar os dados com o AnalyticDB for MySQL.
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 ler 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.
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 obedeça às restrições SQL do modo de tenant correspondente. Do contrário, a execução da instrução SQL pode resultar em erro.
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 Binlog-related operations (Alibaba Cloud instances), 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 distribuídos 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 de dados de um banco 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 de dados do ApsaraDB for OceanBase sejam configuradas e executadas corretamente no DataWorks. As seções a seguir detalham os preparativos necessários.
Configurar uma lista de permissões
Adicione o bloco CIDR da VPC do Serverless resource group ou do grupo de recursos exclusivo para Data Integration à lista de permissões do OceanBase. Para mais informações, consulte Add allowlist entries.
Criar uma conta e configurar permissões
Crie uma conta de banco de dados para as operações subsequentes. Essa conta deve possuir as permissões necessárias no OceanBase. Para mais detalhes, consulte Create an account and configure permissions.
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 Data source configuration. Consulte as descrições dos parâmetros no console do DataWorks para compreender o significado de cada parâmetro ao adicionar uma fonte de dados.
Desenvolver tarefas de sincronização de dados
Para obter informações sobre o ponto de entrada e o procedimento de configuração de uma tarefa de sincronização, consulte os guias de configuração a seguir.
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: Configure a batch synchronization task
Sincronização em tempo real de tabela única
Fontes compatíveis: Kafka
Guia de configuração: Configure a real-time synchronization task
Sincronização completa de banco de dados em tempo real
Fontes compatíveis: MySQL
Guia de configuração: Configure a real-time synchronization task
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 relacionados no script respeitando os requisitos unificados de formato. Para mais informações, consulte Script mode configuration. As informações abaixo descrevem os parâmetros obrigatórios para fontes de dados ao utilizar o editor de código na configuração de tarefas de sincronização em lote.
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 |
Caso a edição do DataWorks em uso permita adicionar fontes de dados do ApsaraDB for OceanBase, referencie uma fonte já adicionada pelo nome. Dois métodos de configuração estão disponíveis: jdbcUrl e username. |
Sim |
N/A |
|
jdbcUrl |
Informações de conexão JDBC do banco de dados de destino. Use um array JSON para a descrição. É possível especificar vários endereços de conexão para um único banco de dados. 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 incluir informações adicionais de controle de conexão. Por 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. Use 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 o splitPk durante a extração de dados pelo ApsaraDB for OceanBase Reader, os dados são divididos com base na coluna indicada por splitPk. 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 especificados, utilizando-a posteriormente para extrair os dados. Por exemplo, durante testes, defina a condição where como limit 10. Em cenários reais de negócio, sincronize dados gerados no dia atual definindo a condição where como
|
Não |
N/A |
|
querySql |
Em certos cenários de negócio, o parâmetro where pode não ser suficiente para descrever as condições de filtro necessárias. Use este parâmetro para definir uma instrução SQL de filtro personalizada. Quando configurado, o sistema de sincronização ignora os parâmetros tables, columns e splitPk, aplicando a instrução SQL configurada para filtrar os dados. Ao configurar o querySql, o ApsaraDB for OceanBase Reader desconsidera os parâmetros table, column, where e splitPk. |
Não |
N/A |
|
fetchSize |
Define a quantidade de linhas 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 de dados. Nota
Um valor de fetchSize excessivamente alto (>2048) pode provocar erros 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 a edição do DataWorks em uso permita adicionar fontes de dados do ApsaraDB for OceanBase, referencie uma fonte já adicionada pelo nome. Dois métodos de configuração estão disponíveis: jdbcUrl e username. |
Não |
N/A |
|
jdbcUrl |
Informações de conexão JDBC do banco de dados de destino. O jdbcUrl integra a unidade de configuração connection.
|
Sim |
N/A |
|
username |
Nome de usuário da fonte de dados. |
Sim |
N/A |
|
password |
Senha correspondente ao nome de usuário especificado para a fonte de dados. |
Sim |
N/A |
|
table |
Nome da tabela de destino para gravação dos dados. Use um array JSON para a descrição. Nota
O parâmetro table deve estar presente na unidade de configuração connection. |
Sim |
N/A |
|
column |
Colunas da tabela de destino onde os dados serão gravados. Separe os nomes das colunas por vírgulas (,). Exemplo: Nota
Especifique obrigatoriamente o parâmetro column; ele não pode permanecer vazio. |
Sim |
N/A |
|
obWriteMode |
Modo utilizado para gravar dados na tabela de destino. Parâmetro opcional.
|
Não |
insert |
|
onClauseColumns |
Nota
Utilizado no modo de tenant Oracle. Este parâmetro é obrigatório quando o Defina este parâmetro com colunas de chave primária ou de restrição única. Separe múltiplas colunas por vírgulas (,). Exemplo: |
Não |
N/A |
|
obUpdateColumns |
Nota
Este parâmetro entra em vigor quando o Colunas a serem atualizadas caso ocorra conflito de gravação. Separe múltiplas colunas por vírgulas (,). Exemplo: |
Não |
Todas as colunas |
|
preSql |
Instruções SQL padrão a executar antes da gravação de dados na tabela de destino. Para referenciar o nome da tabela nas instruções SQL, use |
Não |
N/A |
|
postSql |
Instruções SQL padrão a executar após a gravação de dados na tabela de destino. |
Não |
N/A |
|
batchSize |
Quantidade de registros enviados em cada lote. Esse valor reduz substancialmente as interações de rede entre o sistema de sincronização e o servidor, elevando o throughput geral. Nota
Um valor de fetchSize excessivamente alto (>2048) pode provocar erros de falta de memória (OOM) durante a sincronização. |
Não |
1.024 |