عن المشروع
## مقدمة
canal [kə'næl]، يعني القناة/الأنبوب/الخندق، الاستخدام الرئيسي هو تحليل سجلات التزايدية لقاعدة بيانات MySQL، وتوفير الاشتراك والاستهلاك للبيانات التزايدية. في وقت مبكر، بسبب احتياجات مزامنة مراكز البيانات عبر المناطق، تحولت علي بابا تدريجياً من أسلوب triggers إلى تحليل سجلات قاعدة البيانات، مما أدى إلى الكثير من أعمال الاشتراك والاستهلاك التزايدي.
أعمال الاشتراك والاستهلاك المبنية على تحليل السجلات التزايدية تشمل: مرآة قاعدة البيانات، النسخ الاحتياطي الفوري لقاعدة البيانات، بناء الفهرس وصيانته في الوقت الفعلي (تقسيم فهرس غير متجانس، فهرس مقلوب، إلخ)، تحديث ذاكرة التخزين المؤقت للأعمال، معالجة البيانات التزايدية مع منطق الأعمال.
يدعم canal حالياً إصدارات MySQL المصدرية: 5.1.x، 5.5.x، 5.6.x، 5.7.x، 8.0.x.
## مبدأ العمل
### مبدأ النسخ المتماثل الرئيسي-التابع في 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
- بعد أن يتلقى MySQL master طلب dump، يبدأ في دفع binary log إلى canal
- يحلل canal كائنات binary log (التي تكون في الأصل دفق بايت)
## ملاحظات تحديث الإصدارات الهامة
### إصدار canal 1.1.x
- اختبار الأداء الشامل والتحسين، بزيادة 150% (#726)
- دعم أصلي لمراقبة Prometheus (#765)
- دعم أصلي لإرسال رسائل Kafka (#695)
- دعم أصلي لاشتراك binlog في Alibaba Cloud RDS (حل التبديل التلقائي الرئيسي-الاحتياطي/التحليل دون اتصال لـ 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
- أداة ترحيل ومزامنة البيانات من Oracle إلى Alibaba: yugong
- مشروع مفتوح المصدر للمزامنة دون اتصال من Alibaba: DataX
- مشروع مفتوح المصدر لتجمع اتصالات قواعد البيانات من Alibaba: Druid
- أداة مزامنة البيانات في الوقت الفعلي من Alibaba: DTS
## ملاحظات حول المشكلات
- الإبلاغ عن مشكلة: GitHub Issues
- سيتم تجميع مشكلات المشروع ومزامنتها إلى مجتمع Alibaba Cloud Developer Community
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.