Uma fonte de dados DRDS (PolarDB-X 1.0) permite ler e gravar dados no DRDS (PolarDB-X 1.0). Este tópico descreve os recursos de sincronização de dados do DataWorks para essa fonte de dados.
Primeiros passos
Para iniciar a sincronização de dados com o DRDS (PolarDB-X 1.0), conclua estas etapas em ordem:
Crie uma conta de banco de dados com permissão
replace into. Consulte Pré-requisitos.Adicione o DRDS (PolarDB-X 1.0) como fonte de dados no DataWorks. Consulte Adicionar uma fonte de dados.
Configure e execute uma tarefa de sincronização. Consulte Desenvolver uma tarefa de sincronização de dados.
Pré-requisitos
Antes de começar, verifique se você possui:
Uma conta de banco de dados DRDS (PolarDB-X 1.0) com a permissão
replace into. Para obter instruções de configuração, consulte Criar uma conta.
Limitações
Leitura e gravação offline
O plugin DRDS (PolarDB-X 1.0) é compatível apenas com o mecanismo MySQL. Como o DRDS (PolarDB-X 1.0) é um banco de dados MySQL distribuído, a maioria de seus protocolos de comunicação segue os padrões do MySQL.
O MySQL 8.0 no DRDS (PolarDB-X 1.0) oferece suporte a Grupos de recursos Serverless (recomendado) e grupos de recursos exclusivos para Data Integration.
O DRDS (PolarDB-X 1.0) Writer conecta-se ao proxy de um banco de dados DRDS (PolarDB-X 1.0) remoto via Java Database Connectivity (JDBC) e executa instruções
replace intopara gravar dados. A tabela de destino deve ter uma chave primária ou um índice exclusivo para evitar gravações duplicadas.-
O DRDS (PolarDB-X 1.0) Writer recupera dados de um Reader por meio da estrutura de sincronização de dados e os grava usando instruções
replace into. O Writer acumula dados e os confirma no proxy do DRDS (PolarDB-X 1.0), que determina o roteamento para uma ou mais tabelas.Se não houver conflito de chave primária ou índice exclusivo, o comportamento será equivalente a
insert into.Em caso de conflito, a nova linha substitui todos os campos da linha existente.
NotaA tarefa requer pelo menos a permissão
replace into. Permissões adicionais dependem das instruções SQL especificadas empreSqlepostSql. Há suporte para leitura a partir de visualizações.
Tipos de campo suportados
O DRDS (PolarDB-X 1.0) Reader e Writer oferecem suporte à maioria dos tipos de dados. Verifique se seus tipos de dados constam na lista a seguir antes de configurar uma tarefa de sincronização.
|
Categoria de tipo |
Tipos de dados do DRDS (PolarDB-X 1.0) |
|
Tipos inteiros |
INT, TINYINT, SMALLINT, MEDIUMINT, BIGINT |
|
Tipos de ponto flutuante |
FLOAT, DOUBLE, DECIMAL |
|
Tipos de string |
VARCHAR, CHAR, TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT |
|
Tipos de data e hora |
DATE, DATETIME, TIMESTAMP, TIME, YEAR |
|
Tipos booleanos |
BIT, BOOL |
|
Tipos binários |
TINYBLOB, MEDIUMBLOB, BLOB, LONGBLOB, VARBINARY |
Adicionar uma fonte de dados
Antes de desenvolver uma tarefa de sincronização no DataWorks, adicione o DRDS (PolarDB-X 1.0) como fonte de dados. Siga as instruções em Gerenciamento de fontes de dados. As descrições dos parâmetros estão disponíveis no console do DataWorks durante a adição da fonte de dados.
Desenvolver uma tarefa de sincronização de dados
Configurar uma tarefa de sincronização offline para uma única tabela
Configure usando a interface sem código ou o editor de código. Consulte Configurar uma tarefa na interface sem código e Configurar uma tarefa no editor de código.
Para obter uma referência completa de parâmetros e exemplos de script, consulte Apêndice: Demonstração de script e parâmetros.
Configurar uma tarefa de sincronização offline para um banco de dados inteiro
Consulte Configurar uma tarefa de sincronização offline para um banco de dados inteiro.
Perguntas frequentes
Por que o DRDS (PolarDB-X 1.0) Reader não garante consistência de dados entre shards?
O DRDS (PolarDB-X 1.0) é um banco de dados distribuído. Quando o Reader extrai dados de diferentes tabelas fragmentadas subjacentes, ele captura snapshots em diferentes pontos no tempo, e não de um único intervalo de tempo consistente. Portanto, não é possível garantir forte consistência entre bancos de dados e tabelas fragmentados.
Como a codificação afeta a sincronização de dados?
O DRDS (PolarDB-X 1.0) suporta configurações de codificação nos níveis de campo, tabela, banco de dados e instância. A prioridade das configurações de codificação, da maior para a menor, é: campo, tabela, banco de dados e, por fim, instância. Defina a codificação como UTF-8 no nível do banco de dados para evitar problemas.
O DRDS (PolarDB-X 1.0) Reader usa JDBC para extração de dados, o que lida com a conversão de codificação automaticamente. No entanto, se a codificação usada ao gravar dados na camada subjacente diferir da codificação declarada, o Reader não detectará a incompatibilidade e o resultado da sincronização poderá conter caracteres ilegíveis.
Como configuro a sincronização incremental de dados?
O DRDS (PolarDB-X 1.0) Reader usa instruções JDBC SELECT para extração de dados. Use uma cláusula WHERE para filtrar apenas os registros adicionados ou alterados desde a última sincronização:
Baseado em timestamp: Se sua aplicação grava um campo
modifycom um timestamp de alteração para cada registro (abrangendo adições, atualizações ou exclusões lógicas), adicione uma cláusulaWHEREusando o timestamp da última execução de sincronização.Baseado em ID autoincremental: Para fluxos de dados somente de anexação, adicione uma cláusula
WHEREusando o ID autoincremental máximo da sincronização anterior.
Se seus dados não tiverem um campo que distinga registros novos ou modificados dos existentes, o Reader não poderá oferecer suporte à extração incremental. Nesse caso, apenas a sincronização completa de dados estará disponível.
Não há suporte para condições de filtro baseadas em nomes de tabelas físicas na cláusula WHERE.
Apêndice: Demonstração de script e parâmetros
Para configurar uma tarefa de sincronização em lote usando o editor de código, siga o formato de script unificado descrito em Configurar uma tarefa no editor de código. As seções a seguir descrevem os parâmetros e fornecem exemplos de script.
Demonstração de script do Reader
{
"type": "job",
"version": "2.0",
"steps": [
{
"stepType": "drds",
"parameter": {
"datasource": "",
"column": [
"id",
"name"
],
"where": "",
"table": "",
"splitPk": ""
},
"name": "Reader",
"category": "reader"
},
{
"stepType": "stream",
"parameter": {},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"errorLimit": {
"record": "0"
},
"speed": {
"throttle": true,
"concurrent": 1,
"mbps": "12"
}
},
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
}
}
Parâmetros de script do Reader
|
Parâmetro |
Descrição |
Obrigatório |
Valor padrão |
|
|
Nome da fonte de dados. O valor deve corresponder ao nome da fonte de dados adicionada no DataWorks. |
Sim |
Nenhum |
|
|
Tabela da qual sincronizar os dados. |
Sim |
Nenhum |
|
|
Colunas a serem sincronizadas, especificadas como um array JSON. Use |
Sim |
Nenhum |
|
|
Condição de filtro usada para construir a instrução |
Não |
Nenhum |
|
|
Chave de fragmentação usada para leituras paralelas. |
Não |
Nenhum |
Demonstração de script do Writer
{
"type": "job",
"version": "2.0",
"steps": [
{
"stepType": "stream",
"parameter": {},
"name": "Reader",
"category": "reader"
},
{
"stepType": "drds",
"parameter": {
"postSql": [],
"datasource": "",
"column": [
"id"
],
"writeMode": "insert ignore",
"batchSize": "1024",
"table": "test",
"preSql": []
},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"errorLimit": {
"record": "0"
},
"speed": {
"throttle": true,
"concurrent": 1,
"mbps": "12"
}
},
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
}
}
Parâmetros de script do Writer
|
Parâmetro |
Descrição |
Obrigatório |
Valor padrão |
|
|
Nome da fonte de dados. O valor deve corresponder ao nome da fonte de dados adicionada no DataWorks. |
Sim |
Nenhum |
|
|
Tabela de destino na qual os dados serão gravados. |
Sim |
Nenhum |
|
|
Modo de gravação. Valores válidos: |
Não |
|
|
|
Colunas de destino nas quais gravar dados, especificadas como uma lista separada por vírgulas. Exemplo: |
Sim |
Nenhum |
|
|
Instruções SQL a serem executadas antes do início da tarefa de sincronização. Na interface sem código, apenas uma instrução é suportada. No editor de código, várias instruções são suportadas. Exemplo: |
Não |
Nenhum |
|
|
Instruções SQL a serem executadas após a conclusão da tarefa de sincronização. Na interface sem código, apenas uma instrução é suportada. No editor de código, várias instruções são suportadas. Exemplo: |
Não |
Nenhum |
|
|
Número de registros a serem confirmados por lote. Valores maiores reduzem as idas e vindas de rede e melhoram o throughput, mas valores muito grandes podem causar erros de falta de memória (OOM). |
Não |
|