Explore o novo chatbot do Developer Center! O MongoDB AI chatbot pode ser acessado na parte superior da sua navegação para responder a todas as suas perguntas sobre o MongoDB .

Junte-se a nós no Amazon Web Services re:Invent 2024! Saiba como usar o MongoDB para casos de uso de AI .
Desenvolvedor do MongoDB
Central de desenvolvedor do MongoDBchevron-right
Produtoschevron-right
MongoDBchevron-right

A grande migração contínua: trabalhos do CDC com o Confluent Cloud e o Relational Migrator

Anaiya Raisinghani11 min read • Published Aug 23, 2024 • Updated Aug 23, 2024
AWSKafkaSQLMongoDB
Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty
Você está pronto para finalmente mover seus dados relacionais para o MongoDB e garantir que todas as alterações em seu banco de dados sejam tratadas corretamente? Embora esse processo possa ser desconcertante, Relational Migrator do MongoDB está aqui para ajudar a simplificar as coisas. Neste tutorial, mostraremos em detalhes como realizar capturas de dados de alteração de seus dados relacionais do MySQL para o MongoDB Atlas usando o Confluent Cloud e o Relational Migrator.

O que são trabalhos de CDC?

A captura de dados de alteração ou trabalhos de CDC são processos específicos que rastreiam toda e qualquer alteração em um banco de dados! Mesmo que haja uma pequena atualização em uma linha (ou 100), um trabalho de captura de dados de alteração garantirá que essa alteração seja refletida com precisão. Isso é muito importante em um mundo onde as pessoas querem resultados precisos imediatamente – os dados precisam ser atualizados constantemente. De instâncias básicas de CRUD (criar, ler, atualizar, excluir) a alterações de dados mais complexas, os trabalhos de CDC são extremamente importantes ao lidar com dados.

O que é o MongoDB Relational Migrator?

O MongoDB Relational Migrator é nossa ferramenta para ajudar os desenvolvedores a migrar seus bancos de dados relacionais para o MongoDB. A melhor parte disso é que o Relational Migrator o ajudará a escrever novo código ou editar o código existente para garantir que seu processo de migração funcione da forma mais tranquila possível, além de automatizar o processo de conversão do design do esquema do seu banco de dados. Isso significa que há menos complexidade e tempo de inatividade e menos erros do que se fosse encarregado de lidar com isso manualmente.

O que é o Confluent Cloud e por que o estamos usando?

Construído pelos criadores originais do Apache Kafka, oConfluent Cloud é uma plataforma de streaming de dados nativa e completa disponível em qualquer lugar que as empresas precisem dela: na nuvem, entre nuvens, on-premises e ambientes híbridos. Estamos usando-o para lidar com a transmissão de alterações em tempo real de nosso banco de dados relacional para o cluster MongoDB Atlas. O melhor do Confluent Cloud é que ele é simples de configurar e fornece 120+ conectores pré-criados para conectividade fácil e perfeita com qualquer outro sistema de dados. Além disso, você não precisa do Kafka para executar migrações de produção, pois o modo incorporado é suficiente para a maioria das migrações.
Também recomendamos que os usuários comecem com a versão incorporada, mesmo que estejam planejando usar o Relational Migrator no futuro para um início rápido, pois ele tem todos os mesmos recursos, exceto pela resiliência adicional em trabalhos de longa duração.
O Kafka pode ser relativamente complexo, portanto, é melhor adicioná-lo ao seu trabalho de migração como uma etapa específica para garantir que haja confusão limitada com o processo. Recomendamos trabalhar imediatamente em seu plano de migração e design de esquema e, em seguida, adicionar o Kafka ao planejar sua transição de produção. Vamos começar.

Pré-requisitos para o sucesso

Baixe o MongoDB Relational Migrator

Certifique-se de baixar o Relational Migrator em seu computador. A versão que estamos usando para este tutorial é a versão 1.5.0. Certifique-se de que funciona e que podes vê-lo no navegador antes de prosseguir.

Crie seu banco de dados de pia

Embora nosso banco de dados relacional seja nosso banco de dados de origem, para onde nossos dados vão é chamado de banco de dados coletor. Neste tutorial, queremos que nossos dados e todas as nossas alterações acabem no MongoDB, então vamos criar um MongoDB Atlas cluster para garantir que isso aconteça. Se precisar de ajuda para criar um cluster, consulte a documentação. Observe a região em que você está criando seu cluster e certifique-se de escolher hospedar seu cluster na AWS. Mantenha seu nome de usuário e senha em algum lugar seguro, pois você precisará deles mais tarde neste tutorial, e certifique-se de ter permitido o acesso de qualquer lugar (0.0.0.0/0) na aba “Network Access. Se você não tiver o acesso de rede adequado, não poderá se conectar a nenhuma das outras plataformas necessárias. Observe que "Access from Anywhere " não é recomendado para produção e é usado para este tutorial para facilitar a referência.Pegue aconnection stringdo seu cluster e salve-a em um local seguro. Vamos precisar dele mais tarde.

Crie um banco de dados no Amazon RDS

A partir de agora, o connectorpersonalizado da Confluent Cloud oferece suporte apenas a instâncias Amazon , portanto, verifique se está usando o Amazon RDS para seus bancos de dados relacionais, pois outros fornecedores de nuvem não funcionarão no momento. Como é importante manter tudo seguro, você precisará garantir o acesso à rede, com a possibilidade de exigir o AWS PrivateLink. Faça login em sua conta Amazon e vá até “Amazon RDS.” Você pode encontrá-lo na barra de Atlas Search na parte superior da tela.
[Página inicial do Amazon RDS]
Clique em “Databases” no lado esquerdo da tela. Se você não tiver um banco de dados pronto para uso (especificamente em sua conta da Amazon), crie um clicando no botão laranja. Você será direcionado a esta página. Selecione a opção MySQL: [Criar tela de banco de dados no Amazon RDS]
Depois de selecionar isso, role para baixo e altere a versão do MySQL para a versão compatível com sua versão do Workbench. Para o tutorial, estamos usando a versão 8.0.36.
Em seguida, preencha a área de Configurações. Para o DB cluster identifier, escolha um nome para o cluster do banco de dados. Escolha um Master username, clique no botão de credenciaisSelf managede preencha uma senha. Não se lembre deste nome de usuário e senha, você precisará deles durante o tutorial para configurar com sucesso suas várias conexões.
Para o restante do processo de configuração do banco de dados, você pode manter tudo default, exceto pressionar o botão de alternância para garantir que o banco de dados permita o Acesso Público. Isso é crucial! Siga o restante das etapas para concluir e criar seu banco de dados. [Configurar com sucesso o banco de dados no Amazon RDS]
Quando você vê o botão verde de status “Available”, isso significa que seu banco de dados está pronto para Go.

Crie um grupo de parâmetros.

Agora que nosso banco de dados está configurado, precisamos criar um grupo de parâmetros e modificar alguns itens para garantir que possamos realizar os trabalhos de CDC. Precisamos garantir que essa parte funcione para lidar com com sucesso nossos trabalhos de CDC. No lado esquerdo da página inicial do Amazon RDS, você verá o botão "Parameter groups ". Pressione aqui e crie um novo grupo de parâmetros.
No menu suspenso "Parameter group family, ", escolha mysql8.0, pois essa é a versão que estamos executando para este tutorial. Se você estiver usando algo diferente, fique à vontade para usar uma versão diferente. Dê um nome e uma descrição ao grupo de parâmetros e clique no botão laranja “create.
Depois de criado, clique no nome do parâmetro, clique no botão "Edit ", Atlas Search por binlog_formate altere a coluna "Value " de "MIXED " para "ROW. "
Isso é importante fazer porque alterar essa configuração permite gravar quaisquer alterações do banco de dados em um nível "row ". Isso significa que cada pequena alteração em seu banco de dados será registrada com precisão. Sem fazer essa alteração, você não poderá realizar adequadamente nenhum trabalho de CDC.
Agora, vamos associar nosso banco de dados a esse novo grupo de parâmetros. Clique em "Databases, ", escolha o que acabamos de criar e clique em "Modify. " Role todo o caminho até "DB Parameter Group. " Clique no menu suspenso e associe-o ao grupo que você acabou de criar. Como exemplo, aqui está o meu:
[Meu grupo de parâmetros]
Modifique a instância e clique em "Save." Quando terminar, Go e "Reboot" seu banco de dados para garantir que essas alterações sejam salvas corretamente. Lembre-se de que não é possível reinicializar enquanto o banco de dados estiver sendo modificado e precisa aguardar até que ele esteja no estado "Available ".
Vá para a aba "Connectivity & security " em seu banco de dados e copie seu "Endpoint " abaixo de onde diz "Endpoint & port. " Agora, vamos conectar nosso banco de dados do Amazon RDS ao nosso MySQL Workbench!

Conecte o Amazon RDS ao banco de dados relacional

Inicie o MySQL Workbench e clique no botão "+ " para estabelecer uma nova conexão. Seu endpoint que foi copiado acima Go em seu “Hostname.“ Mantenha a mesma porta. (Deveria ser 3306.) Seu nome de usuário e senha são de quando você criou seu cluster. Deve ser semelhante a isto:
[Configurações para configurar nova conexão no MySQL Workbench]
Clique em "Test Connection " e você deverá ver uma conexão bem-sucedida.
Se não conseguir se conectar ao clicar em "Test Connection, ", Go seu banco de dados do Amazon RDS, clique em " Grupo de segurança da VPC ", clique em "Edit inbound rules, ", clique em "Add rule, ", selecione "All traffic " em "Type, ", selecione "Anywhere-IPv4, " e salve-o. Tente novamente e funcionará.

Importe os dados de amostra para o seu banco de dados relacional

Para este tutorial, os dados usados são retirados do Kaggle na forma de um arquivo.csv, se você quiser usar o mesmo: Índice de sucesso do World: 2019. Você pode executar o seguinte script SQL no MySQL Workbench para criar uma nova tabela e carregar os dados do CSV (certifique-se de atualizar o caminho do arquivo). Como alternativa, se você tiver dados existentes, poderá usá-los.
1CREATE TABLE world_happiness_report (
2 overall_rank int DEFAULT NULL,
3 country_or_region text,
4 score double DEFAULT NULL,
5 gdp_per_capita double DEFAULT NULL,
6 social_support double DEFAULT NULL,
7 healthy_life_expectancy double DEFAULT NULL,
8 freedom_to_make_life_choices double DEFAULT NULL,
9 generosity double DEFAULT NULL,
10 perceptions_of_corruption double DEFAULT NULL
11);
12
13
14LOAD DATA LOCAL INFILE 'C:/Your/Path/2019.csv'
15INTO TABLE world_happiness_report
16FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'
17IGNORE 1 ROWS;
Agora, vamos configurar nossa conta do Confluent Cloud!

Configurar conta do Confluent Cloud

Nosso primeiro passo é criar um novo ambiente. Podemos usar uma conta gratuita aqui também: [Crie um ambiente no Confluent Cloud]
Na página do cluster, escolha a camada "Basic ". Esse nível também é gratuito. Certifique-se de ter configurado suas zonas e sua região para onde você está. Eles precisam corresponder à região do cluster do MongoDB Atlas e à região do banco de dados do Amazon RDS .
Depois que seu cluster for configurado, precisamos anotar várias chaves e IDs para nos conectar corretamente ao Relational Migrator. Precisamos observar:
  • ID do cluster.
  • ID do ambiente.
  • Servidor Bootstrap.
  • Ponto de extremidade REST.
  • Chave e segredo da API da nuvem.
  • Chave e segredo da API Kafka.
Você pode encontrar a maioria delas em seu “Cluster Settings,” e a ID do ambiente pode ser encontrada no lado direito da página do seu ambiente no Confluent.
Para chaves de API do Cloud, clique nas três linhas no lado direito da página inicial do Confluent.
[Onde encontrar chaves de API Confluent]
Clique em "Cloud API keys " e pegue "key " e "secret " se você já os tiver criado ou crie-os, se necessário.
Para as chaves da API Kafka, acesse a Visão geral do cluster e, no lado esquerdo, clique em "API Keys " para criá-las. Mais uma vez, salve seu "key " e "secret. "
Todas essas informações são cruciais, pois você precisará delas para inserir na pasta user.propertiesparaconfigurar a conexão entre o Confluent Cloud e o Relational Migrator do MongoDB.
Como você pode ver na documentação vinculada acima, suas chaves da API do Cloud serão salvas em seu arquivouser.properties como:
  • migrator.confluent.cloud-credentials.api-key
  • migrator.confluent.cloud-credentials.api-secret
E suas chaves de API Kafka como:
  • migrator.confluent.kafka-credentials.api-key
  • migrator.confluent.kafka-credentials.api-secret
Agora que temos nossa nuvem confluente configurada e todas as informações necessárias salvas, vamos configurar nossa conexão com o MongoDB Relational Migrator.

Conectar a Confluent Cloud ao MongoDB Relational Migrator

Antes desta etapa, verifique se baixou o Relational Migrator localmente.
Vamos usar nosso terminal para acessar nosso arquivouser.properties localizado dentro do download do Relational Migrator e editá-lo adequadamente para garantir que haja uma conexão sem problemas.
Use os comandos para encontrar nosso arquivo na janela do seu terminal:
1cd ~/Library/Application\ Support /MongoDB/Relational\ Migrator/
2ls
Depois de ver seu arquivouser.properties, abra-o com:
1nano user.properties
Depois que seu arquivo for aberto, precisaremos fazer algumas edições. No topo do arquivo, descomente a linha que diz:
1spring.profiles.active: confluent
Certifique-se de comentar qualquer outra coisa nesta seção que não tenha sido comentada. Queremos apenas o perfil Confluent ativo. Imediatamente abaixo dessa seção, precisamos adicionar todas as chaves mencionadas acima. Faça assim:
1migrator.confluent.environment.environment-id: <Environment ID>
2migrator.confluent.environment.cluster-id: <Cluster ID>
3migrator.confluent.environment.bootstrap-server: <xx.region.provider.confluent.cloud:9092>
4migrator.confluent.environment.rest-endpoint: <https://xxx.region.provider.confluent.cloud:443>
5
6migrator.confluent.cloud-credentials.api-key: <Cloud API key>
7migrator.confluent.cloud-credentials.api-secret: <Cloud API Secret>
8
9migrator.confluent.kafka-credentials.api-key: <Cluster API key>
10migrator.confluent.kafka-credentials.api-secret: <Cluster API Secret>
Não há necessidade de editar mais nada neste arquivo. Apenas certifique-se de que está usando a porta de servidor correta: 8278.
Quando isso estiver devidamente editado, grave-o no arquivo usando Ctr + O. Pressione Enter e saia do arquivo usando Ctr + X.
Agora, depois que o arquivo for salvo, vamos executar o MongoDB Relational Migrator.

Executando o MongoDB Relational Migrator

Podemos colocá-lo em funcionamento diretamente do nosso terminal. Use os comandos mostrados abaixo para fazer isso:
1cd "/Applications/MongoDB Relational Migrator.app/Contents/app"
2java -jar application-1.5.0.jar
Isso abrirá o Spring e o Relational Migrator em seu navegador:
[Primavera instalada e funcionando]
Depois que o Relational Migrator estiver em execução em seu navegador, conecte-o ao seu banco de dados MySQL: [Conectando ao seu banco de dados MySQL]
Você deseja inserir seu nome de host (o que usamos para conectar nosso Amazon RDS ao MySQL Workbench no início), o banco de dados com seus dados (o meu é chamado amazonTest, mas o seu será diferente) e, em seguida, seu nome de usuário e senha . Pressione o botão "Test connection " para garantir que a conexão seja bem-sucedida. Se for o caso, você verá uma barra verde na parte inferior.
Agora, queremos selecionar as tabelas a serem usadas. Vamos apenas clicar em nosso banco de dados: [Selecione opção de tabelas no Relational Migrator]
Em seguida, defina seu esquema inicial. Vamos começar com um esquema MongoDB recomendado porque é um pouco mais fácil trabalhar com ele.
[Definindo nosso esquema inicial]
Depois de fazer isso, você verá como ficará seu esquema relacional depois de migrar como documentos no MongoDB Atlas! [Esquema relacional e esquema MongoDB]
Agora, clique na aba "Data Migration " na parte superior da tela. Lembre-se de que criamos um cluster MongoDB no início deste tutorial para nossos dados de coleta? Precisamos de todas essas informações de conexão.
Primeiro, insira novamente todas as suas informações do Amazon Web Services RDS que carregamos anteriormente. Esses são os nossos dados de origem e agora estamos configurando nosso banco de dados de destino, ou coletor.
[Inserindo dados do MongoDB para nosso banco de dados do coletor]
Insira a string de conexão do MongoDB para seu cluster. Certifique-se de inserir o nome de usuário e a senha corretos.
Em seguida, clique em “Test connection” para garantir que você possa se conectar adequadamente ao seu banco de dados Atlas.
[Opções de migração]
Quando você especificar pela primeira vez que deseja uma migração contínua, receberá esta mensagem informando que precisa gerar um script para fazer isso. Clique no botão e um script será baixado e, em seguida, será colocado em seu MySQL Workbench. O script tem a seguinte aparência:
1/*
2* Relational Migrator needs source database to allow change data capture.
3* The following scripts must be executed on MySQL source database before starting migration.
4* For more details, please see https://debezium.io/documentation/reference/stable/connectors/mysql.html#setting-up-mysql
5*/
6
7/*
8* Before initiating migration job, the MySQL user is required to be able to connect to the source database.
9* This MySQL user must have appropriate permissions on all databases for which the Relational Migrator is supposed to capture changes.
10*
11* Connect to Amazon RDS Mysql instance, follow the below link for instructions:
12* https://dev.mysql.com/doc/mysql-cluster-excerpt/8.0/en/mysql-cluster-replication-schema.html
13*
14* Grant the required permissions to the user
15*/
16
17GRANT SELECT, RELOAD, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'anaiya'@'%' ;
18
19/* Finalize the user’s permissions: */
20FLUSH PRIVILEGES;
21
22
23/* Furthermore, binary logging must be enabled for MySQL replication on AWS RDS instance. Please see the below for instructions:
24* https://aws.amazon.com/premiumsupport/knowledge-center/enable-binary-logging-aurora/
25*
26* If the instance is using the default parameter group, you will need to create a new one before you can make any changes.
27* For MySQL RDS instances, create a Parameter Group for your chosen MySQL version.
28* For Aurora MySQL clusters, create a DB Cluster Parameter Group for your chosen MySQL version.
29* Edit the group and set the "binlog_format" parameter to "ROW".
30* Make sure your database or cluster is configured to use the new Parameter Group.
31*
32* Please note that you must reboot the database cluster or instance to apply changes, follow below for instructions:
33* https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_RebootCluster.html
34*/
Execute este script no MySQL Workbench pressionando o botão de raio. Você saberá que foi bem-sucedido se não vir nenhuma mensagem de erro no Workbench. Você também verá que, no Relational Migrator, a mensagem "Generate Script " se foi, informando que agora você pode usar o snapshot contínuo.
Dê a partida e ele funcionará! Seu estágio de snapshot terminará primeiro e, em seguida, seu estágio contínuo será executado:
[Snapshot contínuo no Relational Migrator]
Enquanto o snapshot contínuo estiver em execução, faça uma alteração no seu banco de dados. Estou mudando a pontuação de segurança da Finlândia de 7.8 a 5.8:
1UPDATE world_happiness_report
2SET Score = 5.800
3WHERE `country_or_region`= `Finland`
4LIMIT 1;
Depois de executar sua alteração no MySQL Workbench, clique no botão “Complete CDC” no Relational Migrator.
[Alteração contínua demonstrada no Relational Migrator]
Agora, vamos verificar nosso cluster MongoDB Atlas e ver se os dados estão carregados corretamente com o esquema correto e se nossa alteração foi transmitida corretamente:
[MongoDB Atlas mostrando que nosso tutorial foi bem-sucedido]
Como você pode ver, todas as suas informações do seu banco de dados MySQL original foram migradas para o MongoDB Atlas, e você pode transmitir quaisquer alterações no seu banco de dados!

Conclusão

Neste tutorial, migramos com sucesso seus dados MySQL e configuramos capturas de dados contínuas para o MongoDB Atlas usando o Confluent Cloud e o MongoDB Relational Migrator. Isso é superimportante, pois significa que você pode ver as alterações em tempo real em seu banco de dados do MongoDB Atlas, o que espelha as alterações que afetam seu banco de dados relacional.
Para obter mais informações e ajuda, use os seguintes recursos:
Principais comentários nos fóruns
Ainda não há comentários sobre este artigo.
Iniciar a conversa

Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty
Relacionado
Tutorial

Integrar o Azure Key Vault com a criptografia em nível de campo no lado do cliente do MongoDB


May 24, 2022 | 9 min read
Tutorial

Criar um pipeline de dados para o fluxo de alterações do MongoDB usando a assinatura Pub/Sub do BigQuery


Apr 02, 2024 | 5 min read
Início rápido

Introdução ao framework de agregação do MongoDB


Sep 23, 2022 | 5 min read
Início rápido

Trabalhando com Change Streams do seu aplicativo Swift


Jan 25, 2023 | 4 min read
Sumário