A grande migração contínua: trabalhos do CDC com o Confluent Cloud e o Relational Migrator
Avalie esse Tutorial
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.
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 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.
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.
- MongoDB Relational Migrator — este tutorial usa a versão 1.5.
- MySQL Workbench — este tutorial utiliza a versão 8.0.36. O Workbench é para que você possa interagir visualmente com seu banco de dados MySQL, por isso é opcional, mas se quiser seguir o tutorial exatamente, faça o download em sua máquina.
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.
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.
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.
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:
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 managed
e 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. Quando você vê o botão verde de status “Available”, isso significa que seu banco de dados está pronto para Go.
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_format
e 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:
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!
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:
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á.
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.1 CREATE 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 14 LOAD DATA LOCAL INFILE 'C:/Your/Path/2019.csv' 15 INTO TABLE world_happiness_report 16 FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' 17 IGNORE 1 ROWS;
Agora, vamos configurar nossa conta do Confluent Cloud!
Nosso primeiro passo é criar um novo ambiente. Podemos usar uma conta gratuita aqui também:
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.
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.properties
paraconfigurar 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 arquivo
user.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.
Antes desta etapa, verifique se baixou o Relational Migrator localmente.
Vamos usar nosso terminal para acessar nosso arquivo
user.properties
localizado dentro do download do Relational Migrator e editá-lo adequadamente para garantir que haja uma conexão sem problemas.1 cd ~/Library/Application\ Support /MongoDB/Relational\ Migrator/ 2 ls
Depois de ver seu arquivo
user.properties
, abra-o com:1 nano user.properties
Depois que seu arquivo for aberto, precisaremos fazer algumas edições. No topo do arquivo, descomente a linha que diz:
1 spring.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:
1 migrator.confluent.environment.environment-id: <Environment ID> 2 migrator.confluent.environment.cluster-id: <Cluster ID> 3 migrator.confluent.environment.bootstrap-server: <xx.region.provider.confluent.cloud:9092> 4 migrator.confluent.environment.rest-endpoint: <https://xxx.region.provider.confluent.cloud:443> 5 6 migrator.confluent.cloud-credentials.api-key: <Cloud API key> 7 migrator.confluent.cloud-credentials.api-secret: <Cloud API Secret> 8 9 migrator.confluent.kafka-credentials.api-key: <Cluster API key> 10 migrator.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.
Podemos colocá-lo em funcionamento diretamente do nosso terminal. Use os comandos mostrados abaixo para fazer isso:
1 cd "/Applications/MongoDB Relational Migrator.app/Contents/app" 2 java -jar application-1.5.0.jar
Isso abrirá o Spring e o Relational Migrator em seu navegador:
Depois que o Relational Migrator estiver em execução em seu navegador, conecte-o 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:
Em seguida, defina seu esquema inicial. Vamos começar com um esquema MongoDB recomendado porque é um pouco mais fácil trabalhar com ele.
Depois de fazer isso, você verá como ficará seu esquema relacional depois de migrar como documentos no MongoDB Atlas!
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.
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.
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 17 GRANT SELECT, RELOAD, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'anaiya'@'%' ; 18 19 /* Finalize the user’s permissions: */ 20 FLUSH 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:
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:
1 UPDATE world_happiness_report 2 SET Score = 5.800 3 WHERE `country_or_region`= `Finland` 4 LIMIT 1;
Depois de executar sua alteração no MySQL Workbench, clique no botão “Complete CDC” 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:
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!
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.