معرفی انواع CDC در MySQL

Image تحقیقات

معرفی انواع CDC در MySQL

سلام


در این مقاله قصد دارم شما رو با انواع ابزارهای CDC در MySQL آشنا کنم.
اگر با مفهوم CDC آشنا نیستید میتوانید پست قبلی من رو که در مورد معرفی CDC هستش رو مطالعه کنید.
در دو سال گذشته با توجه به داغ شدن مسائل مرتبط با بیگ دیتا و استفاده ترکیبی از دیتابیس های رابطه ای و دیگر دیتا استور ها، گروهی از شرکت ها و برنامه نویسان شروع به توسعه ابزارهایی برای Capture و انتقال داده های MySQL به محیطهای دیگر کردند.
در این پست قصد دارم چهار ابزار مطرح در ارتباط با CDC در MySQL رو بررسی و معرفی کنم.

نحوه ی کار ابزارهای CDC در MySQL

تقریبا تمامی ابزارهای CDC در MySQL، با فعال سازی binlog در MySQL و اتصال به آن، متوجه تغییرات رخ داده در دیتابیس ها می شوند.
در این بین ۴ ابزار توانستن محبوبیت بیشتری نسبت به دیگر ابزارهای فعال داشته باشند.


Maxwells


آدرس گیت هاب: https://github.com/zendesk/maxwell 
این ابزار که به صورت یک اسکریپت می باشد میتواند تغییرات داده های MySQL را به صورت Stream شناسایی کرده و آن را به محیط های دیگر مثل Kafka، RabbitMQ انتقال دهد.

نقاط قوت:

  1. قابلیت Produce کردن تغییرات داده ها به انواع Message Broker ها مثل Kafka، RabbitMQ

  2. قابلیت Bootstrap که به شما اجازه میدهد در اولین اتصال Maxwells به MySQL تمام داده های موجود در دیتابیس خوانده Produce شود.

نقاط ضعف:

  1. بزرگترین ضعف این ابزار عدم توانایی در failover و reliable بودن است.

 

mysql_streamer


آدرس گیت هاب: https://github.com/Yelp/mysql_streamer 
یکی از موفق ترین و پایدارترین ابزارهای CDC، ابزار Yelp_stream می باشد. این ابزار توسط شرکا Yelp توسعه و استفاده می شود.
شرکت yelp از این ابزار برای انتقال تغییرات دیتابیس خود به kakfa استفاده می کند.

نقاط قوت:

  1. توسعه دهنده مطرح و stable بودن.

نقاط ضعف:

  1. عدم گارانتی در اجرای صحیح آن در نسخه های بالاتر از ۵.۵

  2. مدت زمان زیادی از عدم توسعه آن گذشته است.

 

MaxScale 2.x


آدرس گیت هاب: https://github.com/mariadb-corporation/MaxScale 
این ابزار که مدت هاست توسط شرکت MariaDB توسعه داده می شود در ورژن ۲ قابلیت CDC را به ویژگی های این ابزار اضافه کرد.
توجه کنید که maxscale دارای قابلیت های فراوانی مثل Query routing، Firewall، Query cache و… می باشد و CDC تنها یکی از قابلیت های این ابزار می باشد.

نقاط قوت:

  1. Failover

نقاط ضعف:

  1. لایسنس free محدود به دو سال. (در صورت استفاده از Galera Cluster با 3 نود فعال از ابتدا پولی خواهد بود)

 

Debezium

آدرس گیت هاب: https://github.com/debezium/debezium 

این ابزار توسط توسعه دهندگان شرکت Redhat توسعه داده می شود.
یکی از بزرگترین محاسن این ابزار نسبت به دیگر ابزارها، توسعه آن در kafka connect میباشد. از این رو این ابزار از توانایی های Kafka connect یعنی reliable و scalable برخوردار می باشد.

 

نقاط قوت:

  1. قابلیت اتصال به انواع دیتابیس رابطه ای مانند MySQL، PostgreSQL، Oracle و همچنین دیتابیس MongoDB
  2. Reliable و Scalable بودن

 

نقاط ضعف:

  1. به دلیل طراحی در Kafka Connect تنها توانایی Produce کردن تغییرات را در Kafka دارد.
  2. به طور کامل Stable نمی باشد.

 

نتیجه گیری:

من تجربه کاری با دو ابزار Maxwells و Debezium رو داشته ام.

اگر قصد Produce کردن تغییرات دیتابیس به Message broker غیر از کافکا دارید پیشنهاد من استفاده از ابزار Maxwells می باشد. اما در صورتی که Message Broker شما Kafka می باشد، قطعا Debezium ابزار بسیار مطمعن تر و کاملتری نسبت به Maxwells می باشد.

در فیلم آموزشی Stream کردن داده ها از MySQL به ElasticSearch بیشتر با این ابزارها آشنا میشویم.

موفق باشید.