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
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.