O DataWorks oferece o HybridDB for MySQL Reader e o HybridDB for MySQL Writer para sincronizar dados entre o HybridDB for MySQL e outras fontes de dados.
Limites
O HybridDB for MySQL Reader lê tabelas e visualizações. Na leitura de tabelas, selecione todas as colunas ou um subconjunto, reordene-as, adicione campos constantes e use funções do HybridDB for MySQL, como
now().A sincronização em lote aceita visualizações.
Mapeamentos de tipos de dados
O HybridDB for MySQL Reader e o Writer mapeiam os tipos de dados conforme descrito abaixo.
|
Categoria |
Tipos de dados do HybridDB for MySQL |
Observações |
|
Inteiro |
INT, TINYINT, SMALLINT, MEDIUMINT, BIGINT, YEAR |
O tipo TINYINT(1) é tratado como dado inteiro |
|
Ponto flutuante |
FLOAT, DOUBLE, DECIMAL |
|
|
String |
VARCHAR, CHAR, TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT |
|
|
Data e hora |
DATE, DATETIME, TIMESTAMP, TIME |
|
|
Booleano |
BOOL |
|
|
Binário |
TINYBLOB, MEDIUMBLOB, BLOB, LONGBLOB, VARBINARY |
Os tipos de dados não listados acima não são suportados.
Adicionar uma fonte de dados
Adicione a fonte de dados do HybridDB for MySQL ao DataWorks antes de criar uma tarefa de sincronização. Para obter instruções, consulte 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
Sincronizar dados de uma única tabela
Use um dos métodos a seguir:
Para consultar a lista completa de parâmetros e exemplos de código para o editor de código, veja Apêndice: Código e parâmetros.
Sincronizar todos os dados de um banco de dados
Consulte Configure uma tarefa de sincronização completa de banco de dados em tempo real.
Apêndice: Código e parâmetros
HybridDB for MySQL Reader
Exemplo de código
{
"type": "job",
"steps": [
{
"parameter": {
"datasource": "px_aliyun_hymysql",
"column": [
"id",
"name",
"sex",
"salary",
"age",
"pt"
],
"where": "id=10001",
"splitPk": "id",
"table": "person"
},
"name": "Reader",
"category": "reader"
},
{
"parameter": {}
}
],
"version": "2.0",
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
},
"setting": {
"errorLimit": {
"record": ""
},
"speed": {
"concurrent": 7,
"throttle": true,
"mbps": 1
}
}
}
Parâmetros
|
Parâmetro |
Descrição |
Obrigatório |
Padrão |
|
|
Nome da fonte de dados. Deve corresponder exatamente ao nome configurado no DataWorks. |
Sim |
Nenhum |
|
|
Nome da tabela de origem. Cada tarefa de sincronização lê dados de apenas uma tabela. |
Sim |
Nenhum |
|
|
Colunas a serem lidas, definidas como um array JSON. Use |
Sim |
Nenhum |
|
|
Coluna usada para fragmentar os dados em leituras paralelas. Defina como uma coluna de chave primária para garantir a distribuição mais uniforme possível. Apenas colunas inteiras são suportadas. Colunas do tipo string, ponto flutuante e data são ignoradas, e o leitor volta ao modo de thread única. |
Não |
Nenhum |
|
|
Cláusula WHERE para filtrar linhas, como |
Não |
Nenhum |
|
|
SQL personalizado para filtragem avançada ou junções de múltiplas tabelas. Quando definido, substitui os parâmetros |
Não |
Nenhum |
|
|
Obrigatório para tabelas fragmentadas. Defina como |
Sim (apenas tabelas fragmentadas) |
|
Ao configurar uma tabela fragmentada diretamente no editor de código (sem alternar a partir da interface sem código), o parâmetro "singleOrMulti": "multi" não é gerado automaticamente. Adicione-o manualmente. Sem esse parâmetro, o leitor extrai dados apenas do primeiro shard.
QuandoquerySqlestá definido, o leitor ignoratable,column,whereesplitPk. As credenciais de conexão ainda são lidas dedatasource.
HybridDB for MySQL Writer
Exemplo de código
{
"type": "job",
"steps": [
{
"parameter": {}
},
{
"parameter": {
"postSql": [],
"datasource": "px_aliyun_hy***",
"column": [
"id",
"name",
"sex",
"salary",
"age",
"pt"
],
"writeMode": "insert",
"batchSize": 256,
"encoding": "UTF-8",
"table": "person_copy",
"preSql": []
},
"name": "Writer",
"category": "writer"
}
],
"version": "2.0",
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
},
"setting": {
"errorLimit": {
"record": ""
},
"speed": {
"concurrent": 7,
"throttle": true,
"mbps": 1
}
}
}
Modos de gravação
|
Modo |
Comportamento quando não há conflito |
Comportamento quando ocorre conflito de chave primária ou índice único |
|
|
Grava os dados diretamente |
Não consegue gravar nas linhas conflitantes; os dados conflitantes são tratados como dados sujos |
|
|
Grava os dados diretamente |
Atualiza os campos especificados nas linhas conflitantes |
Parâmetros
|
Parâmetro |
Descrição |
Obrigatório |
Padrão |
|
|
Nome da fonte de dados. Deve corresponder exatamente ao nome configurado no DataWorks. |
Sim |
Nenhum |
|
|
Nome da tabela de destino. |
Sim |
Nenhum |
|
|
Modo de gravação. Consulte a seção Modos de gravação acima. |
Não |
|
|
|
Colunas a serem gravadas, especificadas como um array JSON — por exemplo, |
Sim |
Nenhum |
|
|
Instrução SQL executada antes da tarefa de sincronização, útil para excluir dados desatualizados, por exemplo. A interface sem código aceita uma instrução; já o editor de código permite múltiplas instruções. |
Não |
Nenhum |
|
|
Instrução SQL executada após a tarefa de sincronização, como adicionar um carimbo de data/hora. A interface sem código aceita uma instrução; o editor de código permite várias. |
Não |
Nenhum |
|
|
Quantidade de registros gravados por lote. Ajuste este valor conforme sua carga de trabalho. Valores excessivamente altos podem provocar erros de falta de memória (OOM). |
Não |
1.024 |