Об этом проекте

## Введение canal [kə'næl], что означает канал/трубопровод/арык, в основном используется для анализа инкрементных журналов MySQL и предоставления услуг подписки и потребления инкрементных данных. Раньше в Alibaba из-за потребностей синхронизации между дата-центрами постепенно перешли от триггеров к анализу журналов базы данных, что породило множество бизнес-задач по подписке и потреблению инкрементных данных. Бизнес-сценарии на основе инкрементной подписки и потребления журналов включают: зеркалирование базы данных, резервное копирование в реальном времени, построение индексов и их обслуживание в реальном времени (разделение гетерогенных индексов, инвертированных индексов и т.д.), обновление кэша бизнес-приложений, обработку инкрементных данных с бизнес-логикой. В настоящее время canal поддерживает исходные версии MySQL: 5.1.x, 5.5.x, 5.6.x, 5.7.x, 8.0.x. ## Принцип работы ### Принцип репликации master-slave в MySQL - MySQL master записывает изменения данных в бинарный журнал (binary log, события записываются как binary log events) - MySQL slave копирует binary log events с master в журнал relay log - MySQL slave воспроизводит события из relay log, отражая изменения данных в своих данных ### Принцип работы canal - canal имитирует протокол взаимодействия MySQL slave, маскируясь под MySQL slave и отправляя протокол dump на MySQL master - Получив запрос dump, MySQL master начинает отправлять binary log в canal - canal анализирует объекты binary log (исходно это поток байтов) ## Важные обновления версий ### Версия canal 1.1.x - Общее тестирование производительности и оптимизация, улучшение на 150% (#726) - Встроенная поддержка мониторинга Prometheus (#765) - Встроенная поддержка доставки сообщений в Kafka (#695) - Встроенная поддержка подписки на binlog Alibaba Cloud RDS (решение проблем автоматического переключения master/slave и офлайн-анализа oss binlog) - Встроенная поддержка Docker-образов (#801) ### Версия canal 1.1.4 - Добавлена возможность WebUI, новый проект canal-admin, поддерживающий динамическое управление canal через WebUI, включая конфигурацию, задачи, журналы и другие возможности онлайн-эксплуатации без использования командной строки ## Документация Предоставляется полная документация, включая 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. ## Многоязычность canal использует модель client-server, протокол взаимодействия основан на protobuf 3.0, клиенты могут реализовывать логику потребления на разных языках: - Java-клиент: официальный пример - C#-клиент: CanalSharp - Go-клиент: canal-go - PHP-клиент: canal-php - Python-клиент: canal-python - Rust-клиент: canal-rs - Nodejs-клиент: canal-nodejs canal, как инструмент для инкрементного получения и анализа MySQL binlog, может доставлять записи изменений в MQ-системы (например, Kafka/RocketMQ), используя многоязычные возможности MQ. ## Инструменты на основе canal - canal2sql (генерация SQL на основе binlog) ## Связанные открытые проекты и продукты - Открытый проект для потребителей canal: Otter - Инструмент миграции данных Alibaba для отказа от Oracle: yugong - Открытый проект Alibaba для офлайн-синхронизации: DataX - Открытый проект Alibaba для пула соединений с БД: Druid - Инструмент синхронизации данных в реальном времени Alibaba: DTS ## Обратная связь по проблемам - Сообщить о проблеме: GitHub Issues - Вопросы проекта также синхронизируются в сообщество разработчиков Alibaba Cloud