معظم خطوط أنابيب MySQL إلى المستودع تستخدم مزامنات SELECT المجدولة التي تقارن الصفوف الحالية باللقطات السابقة. هذا النهج يفقد الحذف والتحديثات الوسيطة بين التشغيلات، ويضع حملًا ثقيلًا على قواعد البيانات الإنتاجية أثناء مسح الجداول الكبيرة.
تقنية التقاط بيانات التغيير (CDC) تقرأ مباشرة من سجل MySQL الثنائي (binlog)، وتلتقط كل عملية INSERT و UPDATE و DELETE كما تحدث، بالترتيب، مع حالة الصف الكاملة. خط أنابيب CDC يعمل كل ساعة هو أساسًا أكثر موثوقية من مزامنة الدُفعات التي تعمل كل دقيقة، لأنه يلتقط كل ما حدث، وليس فقط أحدث لقطة.
يتطلب CDC عبر binlog تكوينًا محددًا لـ MySQL: تسجيل ثنائي بتنسيق ROW مع صور صفوف كاملة (binlog_row_image=FULL)، ولا يتم تعيين binlog_row_value_options إلى PARTIAL_JSON، مستخدم نسخ متماثل يتمتع بامتيازات REPLICATION SLAVE، REPLICATION CLIENT، SELECT، RELOAD، و SHOW DATABASES، معرّف خادم فريد لكل عميل نسخ متماثل، واحتفاظ كافٍ بـ binlog لتغطية وقت التوقف (الافتراضي 30 يومًا).
المنصات المدارة مثل Erathos تتعامل مع اختيار وضع اللقطة، وتجنب تصادم server-id، ومنطق الاسترداد عند حذف binlogs. بمجرد أن يلتقط CDC التغييرات بشكل صحيح، يصبح هبوط البيانات في BigQuery مباشرًا — كل حدث تغيير يُسجَّل كعملية على صف. الأولوية هي للشمولية على حساب السرعة: خط أنابيب occasionally يتأخر لكنه nunca يخطئ يتفوق على خط أنابيب يهبط بيانات غير كاملة في الوقت المحدد.
الكيانات الرئيسية: الشركات: Erathos, BigQuery, MySQL
الأسئلة الشائعة: لماذا يكون CDC عبر binlog أكثر موثوقية من المزامنة الدورية القائمة على SELECT؟
CDC يلتقط كل عملية INSERT، UPDATE، و DELETE من سجل MySQL الثنائي بالترتيب مع حالة الصف الكاملة، بينما المزامنة الدورية ترى فقط اللقطة الحالية وتفتقد الحذف والتحديثات الوسيطة بين التشغيلات.
المصدر: Hacker News · لخّصه HeadlinesBriefing