Replicando dados com Kafka e Oracle CDC – Parte III
Olá pessoal !
No primeiro artigo expliquei sobre quais os requisitos necessários para implementarmos a replicação de dados utilizando Kafka. No segundo artigo foi explicado como instalar o Confluent Platform.
Agora é a vez de instalarmos os conectores !
Kafka Connect
O Kafka Connect é um componente do Apache Kafka usado para realizar a integração de streaming entre o Kafka e outros sistemas, como bancos de dados, serviços em nuvem, índices de pesquisa, sistemas de arquivos e armazenamentos de valores-chave.
O Kafka Connect facilita o fluxo de dados de várias fontes para o Kafka e o fluxo de dados do Kafka para vários destinos.
É nele onde iremos instalar os nossos conectores, que são:
Oracle CDC
Abaixo a explicação traduzida do site da Confluent:
O Confluent Oracle CDC Source Connector é um conector Premium Confluent e requer uma assinatura adicional, especificamente para este conector. O Oracle CDC Source Connector captura as alterações em um banco de dados Oracle e grava as alterações como registros de eventos de alteração nos tópicos do Kafka.
O conector usa o Oracle LogMiner para ler o log de redo do banco de dados e requer log complementar com colunas “ALL”. O conector suporta Oracle 11g, 12c, 18c e 19c.
Ele oferece suporte a bancos de dados de contêiner e bancos de dados que não são de contêiner e oferece suporte a bancos de dados executados no local ou na nuvem. O conector pode ser configurado para capturar um subconjunto das tabelas em um único banco de dados Oracle.
As tabelas capturadas são todas as tabelas acessíveis pelo usuário que correspondem a um padrão “incluir” e não correspondem a um padrão “excluir” separado. Opcionalmente, o conector pode começar tirando um instantâneo de cada uma das tabelas, para capturar todas as linhas em seu estado atual antes que as alterações sejam registradas.
O conector continua capturando as alterações individuais em nível de linha confirmadas pelos usuários do banco de dados. Ele grava esses eventos de alteração em tópicos do Kafka usando mapeamento flexível de tabela para tópico.
Por padrão, todos os eventos de alteração de cada tabela são gravados em um tópico Kafka separado.
Fonte: Confluent Kafka Connect
O conector Oracle CDC será a nossa SOURCE. Após a leitura dos redologs, ele irá inserir os dados em um novo tópico que ficará a espera do SINK.
Clique aqui fazer o download do Oracle CDC connector.
JDBC Connector
Abaixo a explicação traduzida do site da Confluent:
Os conectores JDBC de origem e coletor permitem a troca de dados entre bancos de dados relacionais e Kafka. O conector de origem JDBC permite importar dados de qualquer banco de dados relacional com um driver JDBC para tópicos do Kafka.
Ao usar o JDBC, esse conector pode oferecer suporte a uma ampla variedade de bancos de dados sem exigir código personalizado para cada um. Os dados são carregados executando periodicamente uma consulta SQL e criando um registro de saída para cada linha no conjunto de resultados.
Por padrão, todas as tabelas em um banco de dados são copiadas, cada uma para seu próprio tópico de saída. O banco de dados é monitorado para tabelas novas ou excluídas e se adapta automaticamente.Ao copiar dados de uma tabela, o conector pode carregar apenas linhas novas ou modificadas especificando quais colunas devem ser usadas para detectar dados novos ou modificados. O conector de coletor JDBC permite exportar dados de tópicos Kafka para qualquer banco de dados relacional com um driver JDBC.
Ao usar o JDBC, esse conector pode suportar uma ampla variedade de bancos de dados sem exigir um conector dedicado para cada um. O conector pesquisa os dados do Kafka para gravar no banco de dados com base na assinatura dos tópicos.
Fonte: Confluent Kafka Connect
É possível obter gravações idempotentes com upserts. A criação automática de tabelas e a evolução automática limitada também são suportadas.
O JDBC Connector será o nosso SINK. Ele ficará responsável por ler o tópico e fazer a replicação no banco de dados.
Clique aqui para fazer o download do JDBC Connector.
Instalando os conectores
- Faça o download dos conectores nos links descritos acima
- Copie para o diretório /home/<seu usuario>
Vamos listar os containers que estão executando:
docker compose ps
O que nos interessa é o CONNECT. Vamos copiar os arquivos de instalação do conector para dentro desse container e fazer a instalação. Para isso utilizaremos o comando docker cp.
docker cp confluentinc-kafka-connect-oracle-cdc-2.2.1.zip connect:/home/appuser
docker cp confluentinc-kafka-connect-jdbc-10.6.0.zip connect:/home/appuser
Com os arquivos copiados, vamos acessar o container e verificar se está tudo ok lá.
docker exec -it -u 0 connect /bin/bash
Você agora está conectado como root no container connect. Vamos listar os arquivos e ver se está tudo lá.
ls
Ótimo ! Os arquivos foram copiados com sucesso !
Agora vamos para a instalação propriamente dita. Comecemos com o Oracle CDC utilizando o confluent hub.
confluent-hub install confluentinc-kafka-connect-oracle-cdc-2.2.1.zip
Escolha a opção 1
Escolha a opção y
Escolha a opção y
Escolha a opção y
Oracle CDC connector instalado com sucesso !
Repita a mesma operação para o JDBC Connector.
confluent-hub install confluentinc-kafka-connect-oracle-cdc-2.2.1.zip
Hora de sair do container.
exit
Agora que vem o pulo do gato ! Precisaremos parar todos os containers e iniciá-los novamente para que os conectores apareçam.
docker compose stop
docker compose up -d
Vamos acessar o Confluent Platform e verificar se os conectores foram instalados.
Ambos os conectores instalados com sucesso !
No próximo artigo, iremos configurar o banco de dados para que o conector Oracle CDC possa fazer o seu trabalho.
Para isso precisaremos:
- 2 containers com Oracle 19c instalado (ou uma com 2 PDBs)
- SQL Developer instalado
No primeiro artigo você encontrará as instruções para fazer essas instalações.
Referências
O quarto artigo sai quando?
Tudo bem Geno ?
Não se preocupe, sairá em breve !
O próximo artigo é um pouco mais complexo, por isso a demora.