इस प्रोजेक्ट के बारे में

## परिचय canal [kə'næl], जिसका अर्थ है जलमार्ग/पाइपलाइन/नहर, मुख्य रूप से MySQL डेटाबेस इंक्रीमेंटल लॉग पार्सिंग पर आधारित है, जो इंक्रीमेंटल डेटा सब्सक्रिप्शन और कंज़म्पशन प्रदान करता है। शुरुआत में अलीबाबा को क्रॉस-डेटासेंटर सिंक्रोनाइज़ेशन की आवश्यकता थी, इसलिए उन्होंने व्यावसायिक ट्रिगर विधि से धीरे-धीरे डेटाबेस लॉग पार्सिंग की ओर रुख किया, जिससे बड़ी संख्या में इंक्रीमेंटल सब्सक्रिप्शन और कंज़म्पशन सेवाएँ विकसित हुईं। लॉग इंक्रीमेंटल सब्सक्रिप्शन और कंज़म्पशन पर आधारित सेवाओं में शामिल हैं: डेटाबेस मिररिंग, डेटाबेस रीयल-टाइम बैकअप, इंडेक्स निर्माण और रीयल-टाइम रखरखाव (विभाजित हेटरोजीनियस इंडेक्स, इनवर्टेड इंडेक्स आदि), व्यावसायिक कैश रिफ्रेश, और व्यावसायिक लॉजिक के साथ इंक्रीमेंटल डेटा प्रोसेसिंग। वर्तमान में canal स्रोत MySQL संस्करणों का समर्थन करता है: 5.1.x, 5.5.x, 5.6.x, 5.7.x, 8.0.x। ## कार्य सिद्धांत ### MySQL मास्टर-स्लेव रेप्लिकेशन सिद्धांत - MySQL मास्टर डेटा परिवर्तनों को बाइनरी लॉग में लिखता है (binary log, जिसे बाइनरी लॉग इवेंट्स के रूप में रिकॉर्ड किया जाता है) - MySQL स्लेव मास्टर के binary log events को रिले लॉग (relay log) में कॉपी करता है - MySQL स्लेव relay log में इवेंट्स को रीप्ले करता है, डेटा परिवर्तनों को अपने डेटा में दर्शाता है ### canal कार्य सिद्धांत - canal MySQL स्लेव के इंटरैक्शन प्रोटोकॉल का अनुकरण करता है, खुद को MySQL स्लेव के रूप में प्रस्तुत करता है, और MySQL मास्टर को dump प्रोटोकॉल भेजता है - MySQL मास्टर dump अनुरोध प्राप्त करने के बाद, binary log को canal को पुश करना शुरू करता है - canal binary log ऑब्जेक्ट (मूल रूप से बाइट स्ट्रीम) को पार्स करता है ## महत्वपूर्ण संस्करण अपडेट विवरण ### canal 1.1.x संस्करण - समग्र प्रदर्शन परीक्षण और अनुकूलन, 150% सुधार (#726) - Prometheus मॉनिटरिंग के लिए मूल समर्थन (#765) - Kafka मैसेज डिलीवरी के लिए मूल समर्थन (#695) - अलीबाबा क्लाउड RDS के binlog सब्सक्रिप्शन के लिए मूल समर्थन (स्वचालित मास्टर-स्लेव स्विच/oss binlog ऑफ़लाइन पार्सिंग का समाधान) - Docker इमेज के लिए मूल समर्थन (#801) ### canal 1.1.4 संस्करण - WebUI क्षमता पेश की गई, canal-admin प्रोजेक्ट जोड़ा गया, जो WebUI-आधारित canal गतिशील प्रबंधन का समर्थन करता है, जिसमें कॉन्फ़िगरेशन, कार्य, लॉग आदि की ऑनलाइन व्हाइट-स्क्रीन ऑपरेशन और रखरखाव शामिल है ## दस्तावेज़ पूर्ण दस्तावेज़ उपलब्ध हैं, जिनमें Home, Introduction, QuickStart (Docker, Kafka/RocketMQ, अलीबाबा क्लाउड RDS, Prometheus), Canal Admin (QuickStart, Guide, ServerGuide, Docker), AdminGuide, ClientExample, ClientAPI, Performance, DevGuide, BinlogChange (MySQL 5.6/MariaDB), TableMetaTSDB, ReleaseNotes, Download, FAQ शामिल हैं। ## बहु-भाषा समर्थन canal क्लाइंट-सर्वर मोड अपनाता है, इंटरैक्शन प्रोटोकॉल 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 (binlog के आधार पर SQL उत्पन्न करता है) ## संबंधित ओपन-सोर्स और उत्पाद - canal कंज़्यूमर ओपन-सोर्स प्रोजेक्ट: Otter - अलीबाबा Oracle से डेटा माइग्रेशन सिंक्रोनाइज़ेशन टूल: yugong - अलीबाबा ऑफ़लाइन सिंक्रोनाइज़ेशन ओपन-सोर्स प्रोजेक्ट: DataX - अलीबाबा डेटाबेस कनेक्शन पूल ओपन-सोर्स प्रोजेक्ट: Druid - अलीबाबा रीयल-टाइम डेटा सिंक्रोनाइज़ेशन टूल: DTS ## समस्या प्रतिक्रिया - issue रिपोर्ट करें: GitHub Issues - प्रोजेक्ट Issues अलीबाबा क्लाउड डेवलपर समुदाय में समकालिक रूप से संग्रहीत होंगे