O DataWorks permite configurar uma tarefa de sincronização em lote no modo assistente ou script para sincronizar dados de bancos de dados e tabelas com sharding em uma única tabela de destino. Este tópico apresenta um exemplo de sincronização de dados de bancos de dados MySQL com sharding.
Pré-requisito
Prepare as fontes de dados para sincronização. Para mais informações, consulte Fontes de dados e plug-ins de leitura/gravação suportados.
Visão geral
Use os métodos abaixo para criar uma tarefa de sincronização em lote para sharding. A tabela a seguir compara essas abordagens.
|
Item |
Fonte de dados com sharding e interface sem código (recomendado) |
||
|
Suporte à interface sem código |
Sim |
Sim |
Não |
|
Configuração de nome de tabela baseada em regras |
Permite configurar nomes de tabelas de origem por expressões regulares. Durante a execução, a tarefa busca e sincroniza as tabelas correspondentes. |
Não suportado. |
Aceita configuração de nomes de tabelas por intervalo numérico, como |
|
Schemas de tabela idênticos obrigatórios |
Permite definir uma política para campos ausentes, de modo que algumas tabelas possam ter campos faltantes. Esses campos são gerados com valores NULL. |
Todas as tabelas devem possuir schemas idênticos. |
|
|
Referência de mapeamento de colunas |
Primeira tabela correspondente na fonte de metadados da fonte de dados com sharding. |
Primeira tabela da primeira fonte de dados. |
Definido manualmente no modo script. |
|
Quantidade de fontes de dados suportadas |
Uma fonte de dados com sharding aceita até 5.000 fontes de dados referenciadas. |
Recomenda-se configurar no máximo 50 fontes de dados por nó. |
|
|
Necessidade de modificar e implantar o nó ao adicionar uma fonte de dados |
Modificação do nó desnecessária. Após alterar a fonte de dados, a mudança entra em vigor nas novas instâncias em execução. |
Modifique a tarefa para incluir a nova fonte de dados e definir o nome da tabela correspondente. |
|
|
Tipos de fontes de dados suportados |
MySQL, PolarDB, PolarDB-O, OceanBase |
MySQL, PolarDB, AnalyticDB, OceanBase |
MySQL, PolarDB, AnalyticDB, SQL Server, Oracle, PostgreSQL, DM, DB2, Oracle, OceanBase |
Fonte de dados com sharding e interface sem código
-
Faça login no console do DataWorks. Na região desejada, clique em no painel de navegação à esquerda. Selecione um workspace na lista suspensa e clique em Go to Data Integration.
No painel de navegação à esquerda, clique em Data Source, clique em Add Data Source e selecione o tipo de fonte de dados. Este método suporta MySQL, PolarDB e PolarDB-O.
-
Crie uma fonte de dados padrão para cada banco de dados com sharding. Este tópico usa MySQL como exemplo. Para etapas detalhadas, consulte Configurar uma fonte de dados MySQL.
Após a criação, visualize a fonte de dados MySQL de cada banco com sharding na página Data Source List. Por exemplo, o nome da fonte de dados pode ser MySQL_20241114, correspondente ao banco de dados
user_info_20241114. -
Crie uma Sharded Data Source para consolidar várias fontes de dados padrão em uma única fonte, que servirá como origem para a sincronização de dados.
Clique em Add Data Source e selecione Sharded Data Source. Na caixa de diálogo Add Data Source, clique na aba Sharded Data Source. Os tipos disponíveis incluem MySQL (sharded), PolarDB-O (sharded) e PolarDB (sharded).
-
Escolha o tipo de fonte de dados com sharding conforme necessário e defina os parâmetros relevantes. Este tópico utiliza MySQL (sharded) como exemplo.
No campo Data Source Name, insira um nome como
Database_and_Table_Sharding_of_MySQL. Ao concluir a configuração, clique em OK para criar a fonte de dados com sharding.Descrição dos principais parâmetros:
Personalize o Data Source Name.
Select Data Sources: Selecione as fontes de dados padrão criadas para cada banco de dados com sharding.
-
Meta Data Source: Para sincronização de sharding, todas as fontes de dados precisam ter schemas de tabela idênticos. Escolha uma das fontes como modelo de metadados padrão para obter o schema de tabela padrão durante a configuração da tarefa de sincronização.
ImportanteSe os schemas das tabelas forem inconsistentes entre as fontes de dados, as tarefas de sincronização subsequentes falharão.
-
Configure a tarefa de sincronização de sharding.
Para configurar o sharding no modo assistente: Em Data Source, selecione MySQL (sharded) e escolha a fonte de dados com sharding criada anteriormente. Para ver todas as etapas de configuração da tarefa, consulte Configurar uma tarefa de sincronização em lote no modo assistente.
NotaEste tópico usa MySQL (sharded) como exemplo. Selecione o tipo apropriado conforme sua necessidade.
Na página de teste de conectividade de rede, a fonte de dados de origem chama-se Database_and_Table_Sharding_of_MySQL, o grupo de recursos é Serveless_Resource (China (Xangai), pagamento conforme o uso, 0,5 CU) e o destino é MaxCompute(ODPS) com o nome de fonte de dados doc_test_project. Os resultados do teste indicam que todos os três componentes estão conectados.
Clique em Next.
-
Selecione as tabelas a serem sincronizadas, clique em Save e Publish e conclua as etapas restantes.
Na página Configure Source and Destination, na etapa 2 Configure Task, a seção Source à esquerda está configurada da seguinte forma: a fonte de dados é MySQL (sharded), o método de seleção de tabela é Fixed Table, a tabela é user_info e a chave de divisão é id. (O sharding exige que todas as tabelas tenham schemas idênticos; caso contrário, ocorrerão erros de execução.) A seção Destination à direita tem a seguinte configuração: fonte de dados MaxCompute(ODPS), tabela user_info, informação de partição
pt=${bizdate}, modo de gravação Clear existing data before writing (Insert Overwrite) e conversão de strings vazias para NULL definida como No.
Fonte de dados padrão e interface sem código
Crie uma fonte de dados padrão para cada banco de dados com sharding. Este tópico usa MySQL como exemplo. Para etapas detalhadas, consulte Configurar uma fonte de dados MySQL.
-
Configure a tarefa de sincronização de sharding.
Para configurar o sharding no modo assistente: Na seção Data Source, clique em + Edit Source. No painel de seleção de fontes de dados exibido, selecione e adicione as fontes correspondentes aos múltiplos bancos de dados com sharding. Para ver todas as etapas de configuração da tarefa, consulte Configurar uma tarefa de sincronização em lote no modo assistente.
Adicione várias fontes de dados padrão em Selected Data Sources e clique em Confirm.
Clique em Next.
-
Selecione as tabelas a sincronizar em cada fonte de dados, clique em Save e Publish e conclua as etapas restantes.
ImportanteNesta configuração, a opção Data Sources for Sharded Databases Use Same Account and Password vem selecionada por padrão. Isso significa que todas as fontes de dados com sharding usarão a conta e a senha configuradas na primeira fonte de dados para acessar os bancos. Se seus bancos com sharding utilizarem contas e senhas diferentes, desmarque essa opção para que cada fonte use suas próprias credenciais.
Na página Configure Source and Destination, a seção Source à esquerda possui três fontes de dados MySQL com sharding configuradas (como MySQL_20241112, MySQL_20241114 e MySQL_20241113), e cada fonte seleciona a tabela user_info. A página exibe um aviso: "O sharding exige que todas as tabelas tenham schemas idênticos; caso contrário, ocorrerão erros de execução." A seção Destination à direita seleciona a fonte de dados MaxCompute(ODPS), a tabela é user_info, a informação de partição está definida como
pt=${bizdate}e o modo de gravação é Clear existing data before writing (Insert Overwrite).
Editor de código
-
Configure a tarefa de sincronização de sharding.
Para configurar o sharding no modo script: Veja abaixo um exemplo de script. Para consultar todas as etapas de configuração da tarefa, acesse Configurar uma tarefa de sincronização em lote no modo script.
ImportanteAntes de executar a tarefa, remova os comentários do código a seguir.
{ "type":"job", "version":"2.0", "steps":[ { "stepType":"mysql", "parameter":{ "envType":0, "column":[ "id", "name" ], "socketTimeout":3600000, "tableComment":"", "connection":[ //Configure connections based on the number of sharded databases { "datasource":"datasourceName1", //Data source 1 for sharded databases and tables "table":[ //Table list 1 for sharded databases and tables "tb1" ] }, { "datasource":"datasourceName2", //Data source 2 for sharded databases and tables "table":[ //Table list 2 for sharded databases and tables "tb2", "tb3" ] } ], "useSpecialSecret":true,//Each data source uses its own password "where":"", "splitPk":"id", "encoding":"UTF-8" }, "name":"Reader", "category":"reader" }, { "stepType":"odps", "parameter":{ "partition":"pt=${bizdate}", "truncate":true, "datasource":"odpsname", "envType":0, "isSupportThreeModel":false, "column":[ "id", "name" ], "emptyAsNull":false, "tableComment":"", "table":"t1", "consistencyCommit":false }, "name":"Writer", "category":"writer" } ], "setting":{ "executeMode":null, "errorLimit":{ "record":"" }, "speed":{ "concurrent":2, "throttle":false } }, "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] } }
Perguntas frequentes
Após criar uma fonte de dados com sharding, ela não aparece na lista suspensa de fontes de dados do nó de sincronização, e a API retorna o código de erro 610002
Sintoma: Depois de criar uma fonte de dados com sharding, ela não fica visível na lista suspensa de fontes de dados do nó de sincronização. A API /di/getDataSourceList retorna code:610002.
Causa: Trata-se de um problema conhecido causado por dados inconsistentes no sistema. Ele afeta apenas fontes de dados com sharding. Fontes de dados padrão, como MySQL e PolarDB, não são impactadas.
Solução: Abra um ticket informando o ID do workspace e o nome da fonte de dados. A equipe de backend do DataWorks investigará e limpará os dados inconsistentes.
Após a saída de um funcionário da empresa, as tarefas de sincronização de sharding falham e a fonte de dados com sharding configurada não é encontrada no nó de sincronização
Sintoma: Quando um funcionário deixa a empresa, as tarefas de sincronização de sharding criadas por ele passam de execução normal para falha. A fonte de dados com sharding configurada anteriormente desaparece do nó de sincronização, mas continua visível no centro de fontes de dados com teste de conectividade bem-sucedido. Alterar o proprietário da tarefa não resolve o problema.
Causa: Esse comportamento decorre de dados inconsistentes no sistema, relacionados a mudanças no status da conta do criador da fonte de dados (como desligamento da empresa). Esses dados impedem que a API de lista de fontes de dados retorne corretamente a fonte com sharding para os nós de sincronização.
Solução: Abra um ticket informando o ID do workspace e o nome da fonte de dados. A equipe de backend do DataWorks investigará e limpará os dados inconsistentes. Após a limpeza, a fonte de dados com sharding voltará a ficar visível e as tarefas de sincronização serão executadas normalmente.