Compartilhar via


Adicionar origem da CDA do Banco de Dados MySQL para um Eventstream

Observação

Este artigo contém referências ao termo SLAVE, um termo que a Microsoft não usa mais. Quando o termo for removido do software, também o removeremos deste artigo.

Este artigo mostra como adicionar uma fonte do MySQL Change Data Capture a um fluxo de eventos. Atualmente, o CDC do Banco de Dados MySQL tem suporte nos seguintes serviços em que os bancos de dados podem ser acessados publicamente:

  • banco de dados do Azure para MySQL
  • Amazon RDS para MySQL
  • Amazon Aurora MySQL
  • Google Cloud SQL para MySQL (GCP).

Este guia usa a CDC do Banco de Dados do Azure para MySQL como exemplo.

Depois que a origem CDC do Banco de Dados MySQL for adicionada ao fluxo de eventos, ela capturará alterações de linha nas tabelas especificadas. Essas alterações podem ser processadas em tempo real e enviadas para destinos diferentes para análise posterior.

Observação

Não há suporte para esta origem nas seguintes regiões de capacidade do espaço de trabalho: Oeste dos EUA 3 e Oeste da Suíça.

Pré-requisitos

  • Acesso a um espaço de trabalho no modo de licença de capacidade do Fabric (ou) no modo de licença de Avaliação com permissões de Colaborador ou superior.
  • Acesso a uma instância do Banco de Dados MySQL, como: um banco de dados no Banco de Dados do Azure para MySQL – Servidor Flexível.
  • Seu banco de dados MySQL precisa ter acesso público e não estar protegido por firewall ou assegurado em uma rede virtual.
  • Caso não tenha um Eventstream, crie um Eventstream.

Configurar um BD MySQL

O conector usa o conector Dobezium MySQL para capturar alterações no Banco de Dados MySQL. Você deve definir um usuário do MySQL com privilégios apropriados em todos os bancos de dados dos quais o Messaging Connector pode capturar as alterações. Você pode usar diretamente o usuário administrador para se conectar ao banco de dados que normalmente tem os privilégios apropriados ou pode seguir estas etapas para criar um novo usuário:

Observação

A nova conta de usuário ou administrador e a senha correspondente serão usadas para se conectar ao banco de dados posteriormente dentro do Eventstream.

  1. No prompt de comando mysql, crie o usuário MySQL:

    mysql> CREATE USER 'user'@'%' IDENTIFIED BY 'password';
    
  2. Conceda os privilégios necessários ao usuário:

    mysql> GRANT SELECT, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'user'@'%';
    

    Observação

    Quando um bloqueio de leitura global não está disponível, como em opções hospedadas como o Amazon RDS ou o Aurora, bloqueios no nível da tabela são usados para criar o instantâneo consistente. Nesse caso, você precisa conceder permissão de LOCK TABLES ao usuário. Além disso, para dar suporte a operações de FLUSH durante o instantâneo, talvez você também precise conceder privilégios de RELOAD ou FLUSH_TABLES.

  3. Finalize as permissões do usuário:

    mysql> FLUSH PRIVILEGES;
    

Para confirmar se o usuário ou administrador tem os privilégios necessários concedidos, execute este comando e, em seguida, os privilégios necessários na etapa nº 2 devem ser mostrados:

SHOW GRANTS FOR user;

Para obter mais informações sobre como conceder as permissões necessárias ao usuário, consulte o conector do Debezium para MySQL: documentação do Debezium.

Habilitar o log binário

Você deve habilitar o log binário para duplicação do MySQL. Os logs binários registram atualizações de transações para que as ferramentas de duplicação propaguem as alterações. Esta seção usa CDC do Banco de Dados do Azure para MySQL como exemplo para mostrar as etapas de configuração.

  1. Na página do portal do Azure para sua conta do Banco de Dados do Azure para MySQL, selecione Parâmetros do servidor em Configurações na navegação à esquerda.

  2. Na página Parâmetros do servidor, configure as propriedades apresentadas a seguir e, em seguida, selecione Salvar.

    • Para binlog_row_image, selecione completo.

    • Para binlog_expire_logs_seconds, defina o número de segundos que o serviço aguardará antes que o arquivo de log binário seja limpo. Defina o valor para atender às necessidades do seu ambiente, por exemplo, 86.400.

    Uma captura de tela das configurações do log binário para duplicação em Parâmetros do servidor.

Adicionar o banco de dados MySQL (CDC) como fonte

Caso ainda não adicionou nenhuma fonte ao Eventstream, selecione o bloco Usar fonte externa.

Captura de tela que mostra a seleção do bloco Usar fonte externa.

Caso esteja adicionando a fonte a um Eventstream já publicado, alterne para o modo Editar, selecione Adicionar fonte na faixa de opções e selecione Fontes externas.

Captura de tela que mostra a seleção de Adicionar fonte para o menu Fontes externas.

Na página Selecionar uma fonte de dados, pesquise e selecione Conectar no bloco Banco de dados MySQL (CDA).

Captura de tela que mostra a seleção do Banco de dados MySQL (CDA) como o tipo de origem no assistente Obter eventos.

Configurar e conectar ao Banco de Dados MySQL (CDC)

  1. Na tela Conectar, em Conexão, selecione Nova conexão para criar uma conexão na nuvem.

    Captura de tela que mostra a página Conectar.

  2. Insira as seguintes configurações de conexão e credenciais de conexão para o banco de dados MySQL e selecione Conectar.

    • Servidor: o endereço do servidor do seu banco de dados MySQL, por exemplo, my-mysql-server.mysql.database.azure.com.

    • Banco de dados: o nome do banco de dados, por exemplo, my_database.

    • Nome da conexão: é gerado automaticamente ou você pode inserir um novo nome para essa conexão.

    • Nome de usuário e Senha: Insira as credenciais do seu banco de dados MySQL. Certifique-se de inserir a conta de administrador do servidor ou a conta de usuário criada com os privilégios necessários concedidos.

      Uma captura de tela das configurações de conexão do BD MySQL do Azure (CDA).

  3. Insira as informações a seguir para configurar a fonte de dados CDC do Banco de Dados MySQL e selecione Próximo.

    • Porta: o valor padrão é 3306. Se a conexão de nuvem selecionada estiver configurada em Gerenciar conexões e gateways, certifique-se de que o número da porta corresponda ao configurado lá. Se eles não corresponderem, o número da porta na conexão de nuvem em Gerenciar conexões e gateways terá precedência.

    • tabela: Selecione Todas as tabelas ou Insira os nomes da tabela. Se você selecionar o último, especifique tabelas usando uma lista separada por vírgulas de identificadores de tabela completos (databaseName.tableName) ou expressões regulares válidas. Por exemplo:

      • Use databaseName.test.* para selecionar todas as tabelas cujos nomes começam com databaseName.test.
      • Use databaseName\.(test1|test2) para selecionar databaseName.test1 e databaseName.test2.

      Você pode misturar ambos os formatos usando vírgulas. O limite total de caracteres para toda a entrada é de 102.400 caracteres .

    • ID do Servidor: insira um valor exclusivo para cada servidor e cliente de duplicação no cluster MySQL. O valor padrão é 1000.

    Observação

    Defina uma ID do Servidor diferente para cada leitor. Cada cliente de banco de dados MySQL para leitura de binlog deve ter uma ID exclusiva, chamada ID do servidor. O MySQL Server usa essa ID para manter a conexão de rede e a posição do log binário. Tarefas diferentes que compartilham a mesma ID do Servidor podem resultar na leitura da posição errada do log binário. Portanto, a recomendação é para definir uma ID do Servidor diferente para cada leitor.

  4. Você pode expandir as configurações avançadas para acessar mais opções de configuração para a origem CDC do Banco de Dados MySQL:

    • Modo de bloqueio de instantâneo: as opções são:
      • Minimal (default): mantém um bloqueio de leitura global somente durante a fase inicial para capturar o esquema e os metadados. O restante da captura instantânea usa uma transação REPEATABLE READ, permitindo atualizações enquanto os dados estão sendo lidos.
      • Extended: mantém um bloqueio de leitura global durante toda a duração do instantâneo, bloqueando todas as gravações. Use para obter consistência total se o bloqueio de gravação for aceitável.
      • None: ignora a aquisição de bloqueios de tabela durante a captura do instantâneo. Seguro somente se nenhuma alteração de esquema ocorrer durante o processo.
    • Modo de tratamento decimal: especifica como o conector manipula DECIMAL e NUMERIC valores de coluna:
      • Precise: representa valores usando tipos decimais exatos (por exemplo, Java BigDecimal) para garantir a precisão total e a precisão na representação de dados.
      • Double: converte valores em números de ponto flutuante de precisão dupla. Isso melhora a usabilidade e o desempenho, mas pode resultar em uma perda de precisão.
      • String: codifica valores como cadeias de caracteres formatadas. Isso facilita o consumo em sistemas downstream, mas perde informações semânticas sobre o tipo numérico original.
    • Modo de instantâneo: especifique os critérios para executar um instantâneo quando o conector for iniciado:
      • Initial: O conector executa um instantâneo somente quando nenhum offset foi registrado para o nome do servidor lógico ou se ele detecta que um instantâneo anterior não foi concluído. Após a conclusão do instantâneo, o conector começa a transmitir registros de eventos para alterações subsequentes no banco de dados.
      • InitialOnly: O conector executa um instantâneo apenas quando nenhum deslocamento foi registrado para o nome do servidor lógico. Depois que o instantâneo for concluído, o conector para. Ele não adota o modo de streaming para ler eventos de alteração do binlog.
      • NoData: o conector executa um instantâneo que captura apenas o esquema, mas não qualquer dado de tabela. Defina essa opção se você não precisa de uma visão consistente dos dados, mas apenas das alterações ocorrendo desde a inicialização do conector.

    Também é possível editar o nome de origem selecionando o botão Lápis para o Nome de origem na seção Detalhes do Fluxo à direita.

    Uma captura de tela da seleção de Tabelas, ID do Servidor e Porta para a conexão do BD MySQL do Azure (CDA).

  5. Na página Revisar + conectar, depois de examinar o resumo da origem da CDC do Banco de Dados MySQL, selecione Adicionar para concluir a configuração.

    Captura de tela que mostra a página Examinar e conectar com o botão Adicionar selecionado.

Exibir o Eventstream atualizado

  1. Você verá a origem do Banco de Dados MySQL (CDC) adicionada ao eventstream no Modo de edição.

    Uma captura de tela da origem do BD MySQL do Azure (CDA) adicionada no Modo de edição com o botão Publicar em destaque.

  2. Selecione Publicar para publicar as alterações e começar a transmitir dados CDC do MySQL DB para o fluxo de eventos.

    Uma captura de tela da origem da CDA do Banco de Dados MySQL do Azure adicionada no modo Dinâmico.

Outros conectores: