Sobre o projeto

## Introdução canal [kə'næl], que significa canal/encanamento/vala, é usado principalmente para análise de logs incrementais de banco de dados MySQL, fornecendo assinatura e consumo de dados incrementais. No início, a Alibaba, devido à necessidade de sincronização entre data centers, gradualmente mudou de triggers de negócios para análise de logs de banco de dados, gerando muitos negócios de assinatura e consumo incremental. Os negócios baseados em assinatura e consumo de logs incrementais incluem: espelhamento de banco de dados, backup em tempo real de banco de dados, construção e manutenção em tempo real de índices (índices heterogêneos divididos, índices invertidos, etc.), atualização de cache de negócios e processamento de dados incrementais com lógica de negócios. Atualmente, o canal suporta versões do MySQL de origem, incluindo 5.1.x, 5.5.x, 5.6.x, 5.7.x e 8.0.x. ## Princípio de Funcionamento ### Princípio de Replicação Mestre-escravo do MySQL - O master do MySQL grava alterações de dados no log binário (binary log, registrado como eventos de log binário, binary log events) - O slave do MySQL copia os eventos do binary log do master para o log de retransmissão (relay log) - O slave do MySQL reproduz os eventos no relay log, refletindo as alterações de dados em seus próprios dados ### Princípio de Funcionamento do canal - O canal simula o protocolo de interação do slave do MySQL, disfarçando-se como um slave do MySQL e enviando o protocolo dump ao master do MySQL - Após receber a solicitação de dump, o master do MySQL começa a enviar o binary log para o canal - O canal analisa o objeto do binary log (originalmente um fluxo de bytes) ## Notas Importantes sobre Atualizações de Versão ### Versão canal 1.1.x - Teste e otimização de desempenho geral, melhoria de 150% (#726) - Suporte nativo ao monitoramento Prometheus (#765) - Suporte nativo à entrega de mensagens Kafka (#695) - Suporte nativo à assinatura de binlog do Alibaba Cloud RDS (resolvendo troca automática de mestre/escravo e análise offline de binlog OSS) - Suporte nativo a imagens Docker (#801) ### Versão canal 1.1.4 - Introdução da capacidade WebUI, adicionando o projeto canal-admin, suportando gerenciamento dinâmico do canal voltado para WebUI, incluindo operação e manutenção online de configuração, tarefas, logs, etc. ## Documentação Documentação completa fornecida, incluindo Home, Introduction, QuickStart (Docker, Kafka/RocketMQ, Alibaba Cloud RDS, Prometheus), Canal Admin (QuickStart, Guide, ServerGuide, Docker), AdminGuide, ClientExample, ClientAPI, Performance, DevGuide, BinlogChange (MySQL 5.6/MariaDB), TableMetaTSDB, ReleaseNotes, Download, FAQ. ## Multilíngue O canal adota o modo cliente-servidor, com protocolo de interação usando protobuf 3.0. Os clientes podem implementar lógica de consumo em diferentes idiomas: - Cliente Java: exemplo oficial - Cliente C#: CanalSharp - Cliente Go: canal-go - Cliente PHP: canal-php - Cliente Python: canal-python - Cliente Rust: canal-rs - Cliente Nodejs: canal-nodejs O canal, como ferramenta de obtenção e análise incremental de binlog do MySQL, pode entregar registros de alterações a sistemas MQ (como Kafka/RocketMQ), aproveitando a capacidade multilíngue do MQ. ## Ferramentas Desenvolvidas com Base no canal - canal2sql (gera SQL com base no binlog) ## Projetos de Código Aberto e Produtos Relacionados - Projeto de código aberto do lado consumidor do canal: Otter - Ferramenta de migração e sincronização de dados da Alibaba para substituir Oracle: yugong - Projeto de código aberto de sincronização offline da Alibaba: DataX - Projeto de código aberto de pool de conexões de banco de dados da Alibaba: Druid - Ferramenta de sincronização de dados em tempo real da Alibaba: DTS ## Feedback de Problemas - Relatar issue: GitHub Issues - Os issues do projeto serão sincronizados e depositados na comunidade de desenvolvedores da Alibaba Cloud