প্রকল্প সম্পর্কে

## ভূমিকা 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 অনুরোধ পাওয়ার পর, canal-কে binary log পুশ করা শুরু করে - canal binary log অবজেক্ট পার্স করে (মূলত byte স্ট্রিম) ## গুরুত্বপূর্ণ সংস্করণ আপডেট বিবরণ ### 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 ## সমস্যা প্রতিক্রিয়া - ইস্যু রিপোর্ট: GitHub Issues - প্রজেক্ট ইস্যুগুলো অ্যালিবাবা ক্লাউড ডেভেলপার কমিউনিটিতে সিঙ্ক্রোনাইজ করা হবে