À propos du projet

## Introduction Canal [kə'næl], signifiant canal/pipe/rigole, est principalement utilisé pour l'analyse des journaux incrémentaux de la base de données MySQL, fournissant un abonnement et une consommation de données incrémentales. Au début, Alibaba, en raison des besoins de synchronisation inter-centres de données, est passé progressivement des déclencheurs métier à l'analyse des journaux de base de données, générant de nombreux services d'abonnement et de consommation incrémentale. Les services basés sur l'abonnement et la consommation de journaux incrémentaux incluent : la réplication de base de données, la sauvegarde en temps réel, la construction d'index et la maintenance en temps réel (index hétérogènes, index inversés, etc.), le rafraîchissement du cache métier, et le traitement de données incrémentales avec logique métier. Actuellement, Canal prend en charge les versions MySQL suivantes : 5.1.x, 5.5.x, 5.6.x, 5.7.x, 8.0.x. ## Principe de fonctionnement ### Principe de réplication maître-esclave MySQL - Le maître MySQL écrit les modifications de données dans le journal binaire (binary log, enregistré comme événements de journal binaire). - L'esclave MySQL copie les événements du journal binaire du maître dans le journal de relais (relay log). - L'esclave MySQL rejoue les événements du journal de relais pour refléter les modifications de données sur ses propres données. ### Principe de fonctionnement de Canal - Canal simule le protocole d'interaction de l'esclave MySQL, se faisant passer pour un esclave MySQL, et envoie un protocole de dump au maître MySQL. - Après réception de la demande de dump, le maître MySQL commence à pousser le journal binaire vers Canal. - Canal analyse les objets du journal binaire (initialement un flux d'octets). ## Notes de mise à jour importantes ### Version Canal 1.1.x - Tests et optimisations de performances globales, amélioration de 150 % (#726). - Prise en charge native de la surveillance Prometheus (#765). - Prise en charge native de la livraison de messages Kafka (#695). - Prise en charge native de l'abonnement binlog pour Alibaba Cloud RDS (gestion du basculement automatique maître-esclave / analyse hors ligne du binlog OSS). - Prise en charge native de l'image Docker (#801). ### Version Canal 1.1.4 - Introduction de la capacité WebUI, ajout du projet canal-admin, prise en charge de la gestion dynamique de Canal via WebUI, y compris la configuration, les tâches, les journaux, etc., pour une exploitation en ligne en mode écran blanc. ## Documentation Fournit une documentation complète, y compris 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. ## Multilingue Canal adopte un modèle client-serveur, avec un protocole d'interaction utilisant protobuf 3.0. Les clients peuvent implémenter la logique de consommation dans différents langages : - Client Java : exemple officiel - Client C# : CanalSharp - Client Go : canal-go - Client PHP : canal-php - Client Python : canal-python - Client Rust : canal-rs - Client Nodejs : canal-nodejs Canal, en tant qu'outil d'acquisition et d'analyse incrémentale du binlog MySQL, peut livrer les enregistrements de modifications aux systèmes MQ (tels que Kafka/RocketMQ), en tirant parti des capacités multilingues de MQ. ## Outils basés sur Canal - canal2sql (génération de SQL basée sur le binlog) ## Projets open source et produits associés - Projet open source côté consommateur de Canal : Otter - Outil de migration et de synchronisation de données d'Alibaba pour quitter Oracle : yugong - Projet open source de synchronisation hors ligne d'Alibaba : DataX - Projet open source de pool de connexions de base de données d'Alibaba : Druid - Outil de synchronisation de données en temps réel d'Alibaba : DTS ## Retour d'information - Signaler un problème : GitHub Issues - Les problèmes du projet seront également publiés sur la communauté des développeurs d'Alibaba Cloud.