Об этом проекте
## Введение
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
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.