Um conector de origem MySQL sincroniza alterações no nível de linha de um banco de dados ApsaraDB RDS for MySQL para tópicos na sua instância do ApsaraMQ for Kafka. O conector usa o DataWorks para capturar eventos de captura de dados de alteração (CDC) — incluindo operações INSERT, UPDATE e DELETE — e os entrega aos tópicos do Kafka.
Como funciona
Ao criar um conector de origem MySQL pelo console do ApsaraMQ for Kafka, o sistema executa automaticamente as seguintes ações:
Ativa o DataWorks Basic Edition (gratuito).
Cria um workspace do DataWorks e um grupo de recursos exclusivo para integração de dados.
Gera tópicos de destino na sua instância do Kafka — um tópico por tabela de origem.
O grupo de recursos exclusivo (4 vCPUs, 8 GB de memória) executa as tarefas de sincronização de dados. Esses grupos usam assinatura mensal e se renovam automaticamente ao expirar.
Grupos de recursos exclusivos para integração de dados são serviços pagos. Para detalhes sobre preços, consulte Visão geral do faturamento.

Nomenclatura de tópicos e partições
O DataWorks gera um tópico de destino para cada tabela de origem seguindo este padrão de nomenclatura:
<topic-prefix>_<source-table-name>
O caractere sublinhado é adicionado automaticamente. Por exemplo, se o prefixo for mysql e as tabelas de origem forem table_1, table_2 e table_n, os tópicos gerados serão mysql_table_1, mysql_table_2 e mysql_table_n.

A quantidade de partições varia conforme a existência de chave primária na tabela de origem:
|
Tipo de tabela de origem |
Partições por tópico |
|
Com chave primária |
6 |
|
Sem chave primária |
1 |
Certifique-se de que sua instância do Kafka tenha tópicos e partições disponíveis em quantidade suficiente. Se a instância esgotar qualquer um desses recursos, a criação do tópico falhará e não será possível implantar o conector.
Região e rede
Mesma região — Quando a instância do RDS MySQL e a instância do Kafka estão na mesma região, o sistema cria automaticamente uma interface de rede elástica (ENI) na virtual private cloud (VPC) correspondente e a associa à instância do Elastic Compute Service (ECS) do grupo de recursos exclusivo. Nenhuma configuração manual de rede é necessária.
Regiões diferentes — Quando as instâncias estão em regiões distintas, garanta que:
Existe uma instância da Cloud Enterprise Network (CEN) na mesma conta Alibaba Cloud.
As VPCs tanto da instância do RDS MySQL quanto da instância do Kafka estejam anexadas à instância da CEN.
A largura de banda entre regiões esteja configurada para a instância da CEN.
Sem a configuração adequada da CEN, o sistema pode criar uma instância da CEN automaticamente, mas com largura de banda mínima. Isso pode causar erros de conectividade durante a criação do conector ou em tempo de execução.
Limites do grupo de recursos exclusivo
|
Limite |
Valor |
|
Máximo de conectores por grupo de recursos |
3 |
|
Máximo de associações de ENI de VPC por grupo de recursos |
2 |
Se um grupo de recursos existente tiver menos de três conectores, o DataWorks o reutilizará para novos conectores. No entanto, caso haja sobreposição de blocos CIDR ou outras restrições técnicas que impeçam a reutilização, o DataWorks criará um novo grupo de recursos.
Pré-requisitos
Antes de começar, verifique se você tem:
Uma instância do ApsaraMQ for Kafka com o recurso de conector habilitado, implantada em uma destas regiões: China (Shenzhen), China (Chengdu), China (Beijing), China (Zhangjiakou), China (Hangzhou), China (Shanghai) ou Singapura
Uma instância do ApsaraDB RDS for MySQL com banco de dados, conta de banco de dados e pelo menos uma tabela criada. Para referência de SQL, consulte Instruções SQL comuns para MySQL
Blocos CIDR não sobrepostos entre a VPC da sua instância do RDS MySQL e a VPC da sua instância do Kafka
Autorização concedida ao DataWorks para acessar suas ENIs por meio da página de Autorização de Acesso a Recursos da Nuvem
Tanto a fonte de dados (instância do ApsaraDB RDS for MySQL) quanto o destino dos dados (instância do ApsaraMQ for Kafka) criados na mesma conta Alibaba Cloud
Permissões da conta do banco de dados
A conta do banco de dados MySQL deve ter pelo menos as seguintes permissões:
|
Permissão |
Finalidade |
|
|
Ler linhas das tabelas de origem |
|
|
Conectar-se e ler o log binário do MySQL |
|
|
Consultar o status do log binário |
Conceda essas permissões com a seguinte instrução:
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO '<your-username>'@'%';
Substitua <your-username> pelo nome de usuário real da conta do banco de dados.
Permissões de usuário RAM
Caso utilize um usuário do Resource Access Management (RAM) em vez de uma conta Alibaba Cloud, anexe estas políticas ao usuário RAM:
|
Política |
Descrição |
|
|
Gerenciar todos os recursos do DataWorks na conta Alibaba Cloud |
|
|
Adquirir serviços da Alibaba Cloud |
Para instruções, consulte Conceder permissões a usuários RAM.
Criar e implantar o conector
Faça login no console do ApsaraMQ for Kafka.
Na seção Resource Distribution da página Overview, selecione a região da sua instância.
No painel de navegação à esquerda, clique em Connectors.
Na página Connectors, selecione sua instância na lista suspensa Select Instance e clique em Create Connector.
-
Conclua o assistente de três etapas: Clique em Next. Step 2: Configure source service Selecione ApsaraDB RDS for MySQL como serviço de origem e configure os parâmetros a seguir: Clique em Next. Step 3: Configure destination service Confirme a instância do Kafka de destino e clique em Create.
Step 1: Configure basic information
Parâmetro
Descrição
Exemplo
Name
Nome exclusivo do conector dentro da instância. De 1 a 48 caracteres; permite dígitos, letras minúsculas e hifens (
-). Não pode começar com hífen. O sistema cria automaticamente um consumer group chamadoconnect-<connector-name>.kafka-source-mysqlInstance
Exibe o nome e o ID da instância do Kafka selecionada.
demo alikafka_post-cn-st21p8vj****Parâmetro
Descrição
Exemplo
Region of ApsaraDB RDS for MySQL Instance
Região da instância do RDS MySQL de origem.
China (Shenzhen)
ApsaraDB RDS for MySQL Instance ID
ID da instância do banco de dados de origem.
rm-wz91w3vk6owmz****Database Name
Nome do banco de dados a ser sincronizado.
mysql-to-kafkaDatabase Account
Nome de usuário para a conexão com o banco de dados.
mysql_to_kafkaPassword of Database Account
Senha para a conexão com o banco de dados.
--
Database Table
Um ou mais nomes de tabelas, separados por vírgulas (
,). Cada tabela corresponde a um tópico.mysql_tblTables to Automatically Add
Expressão regular para detectar e sincronizar novas tabelas automaticamente. Use
.*para todas as tabelas..*Topic Prefix
Prefixo para nomes de tópicos gerados automaticamente. Deve ser globalmente único.
mysql Na página Connectors, localize o conector e clique em Deploy na coluna Actions. Quando a coluna Status exibir Running, o conector estará ativo e sincronizando dados.
Se a implantação do conector falhar, verifique se todos os pré-requisitos foram atendidos. Para modificar as configurações do conector após a implantação, clique em
Task Configurations
na coluna
Actions
para abrir o console do DataWorks.
Verificar a sincronização de dados
-
Insira uma linha de teste em uma tabela de origem: Para mais exemplos de SQL, consulte Instruções SQL comuns para MySQL.
INSERT INTO mysql_tbl (mysql_title, mysql_author, submission_date) VALUES ("mysql2kafka", "tester", NOW()); -
Use o recurso de consulta de mensagens no ApsaraMQ for Kafka para confirmar que os dados chegaram ao tópico correspondente. Para instruções, consulte Consultar mensagens. Um evento INSERT sincronizado com sucesso tem a seguinte aparência:
{ "schema": { "dataColumn": [ { "name": "mysql_id", "type": "LONG" }, { "name": "mysql_title", "type": "STRING" }, { "name": "mysql_author", "type": "STRING" }, { "name": "submission_date", "type": "DATE" } ], "primaryKey": [ "mysql_id" ], "source": { "dbType": "MySQL", "dbName": "mysql_to_kafka", "tableName": "mysql_tbl" } }, "payload": { "before": null, "after": { "dataColumn": { "mysql_title": "mysql2kafka", "mysql_author": "tester", "submission_date": 1614700800000 } }, "sequenceId": "1614748790461000000", "timestamp": { "eventTime": 1614748870000, "systemTime": 1614748870925, "checkpointTime": 1614748870000 }, "op": "INSERT", "ddl": null }, "version": "0.0.1" }
Campos da mensagem
|
Campo |
Descrição |
|
|
Nomes de colunas e tipos de dados da tabela de origem |
|
|
Colunas de chave primária da tabela de origem |
|
|
Tipo do banco de dados de origem, nome do banco de dados e nome da tabela |
|
|
Estado da linha antes da alteração ( |
|
|
Estado da linha após a alteração ( |
|
|
Tipo de operação: |
|
|
Timestamps de evento, sistema e checkpoint |
Para a especificação completa do formato de mensagem, consulte Formatos de mensagem.
Próximos passos
Consultar mensagens nos seus tópicos do Kafka
Habilitar o recurso de conector para instâncias adicionais