A maioria dos pipelines de MySQL para data warehouse usa sincronizações baseadas em SELECT agendadas que comparam as linhas atuais com snapshots anteriores. Essa abordagem perde exclusões e atualizações intermediárias entre as execuções e coloca uma carga pesada nos bancos de dados de produção durante grandes varreduras de tabelas.
A Captura de Dados de Alteração (CDC) lê diretamente do log binário (binlog) do MySQL, capturando cada INSERT, UPDATE e DELETE à medida que ocorrem, em ordem, com o estado completo da linha. Um pipeline de CDC executado a cada hora é fundamentalmente mais confiável do que uma sincronização em lote executada a cada minuto, pois captura tudo o que aconteceu, não apenas o último snapshot.
O CDC via binlog requer uma configuração específica do MySQL: registro binário no formato ROW com imagens de linha completas (binlog_row_image=FULL), binlog_row_value_options não definido como PARTIAL_JSON, um usuário de replicação com privilégios REPLICATION SLAVE, REPLICATION CLIENT, SELECT, RELOAD e SHOW DATABASES, um server-id único para cada cliente de replicação, e retenção suficiente de binlog para cobrir o tempo de inatividade (padrão de 30 dias).
Plataformas gerenciadas como o Erathos lidam com a seleção do modo de snapshot, evitando colisões de server-id e a lógica de recuperação quando os binlogs são purgados. Depois que o CDC captura as alterações corretamente, carregar os dados no BigQuery é simples — cada evento de alteração é mapeado para uma operação de linha. A prioridade é a completude sobre a velocidade: um pipeline que ocasionalmente atrasa, mas nunca está errado, é melhor do que um que entrega no prazo, mas com dados incompletos.
Principais entidades: Empresas: Erathos, BigQuery, MySQL
Fonte: Hacker News · Resumido por HeadlinesBriefing