Skip to main content
يمكن لـ ClickPipes for MySQL اكتشاف تغييرات المخطط في الجداول المصدر، وفي بعض الحالات، نقل هذه التغييرات تلقائيًا إلى الجداول الوجهة. آلية التعامل مع كل عملية DDL موثقة أدناه:
إضافة أعمدة أثناء اللقطة غير مدعومة حاليًا. والحل البديل المقترح هو تنفيذ اللقطات قبل تغييرات المخطط المخطط لها أو بعدها، أو، إذا كان ClickPipe يتعطل بالفعل، إضافة عمود يدويًا من النوع المناسب إلى الجدول الوجهة.

القيم الافتراضية للأعمدة المضافة

بالنسبة إلى العمود المضاف، ينقل ClickPipes القيمة الافتراضية فقط عندما يتمكن من تحويلها بأمان إلى ClickHouse. وعند نقل قيمة افتراضية، يستخدمها ClickHouse عند قراءة أجزاء البيانات الأسبق من العمود الجديد. ونتيجةً لذلك، تحصل الصفوف الموجودة مسبقًا في ClickHouse على القيمة الافتراضية للمصدر دون إعادة تحديث الجدول بالكامل. ينقل ClickPipes القيم الحرفية للأعداد الصحيحة والعشرية وذات الفاصلة العائمة، والقيم المنطقية، وقيم السلاسل النصية والتواريخ البسيطة، وقيم enum أو set عندما يوفر خادم MySQL البيانات الوصفية الكاملة للصفوف في binlog. ويعيد كتابة القيم الحرفية للسلاسل النصية باستخدام اقتباس متوافق مع ClickHouse. يتعمد ClickPipes استبعاد القيم الافتراضية التي ليست قيمًا حرفية قابلة للنقل، بما في ذلك NULL، والقيم الحرفية للبتات، واستدعاءات الدوال مثل CURRENT_TIMESTAMP وNOW() وUUID()، وقيم السلاسل النصية التي تحتوي على شرطات مائلة عكسية أو محارف تحكم. يُضاف العمود مع ذلك، لكن ClickHouse يستخدم القيمة الافتراضية المعتادة لنوع البيانات في الأجزاء الأسبق من العمود. يلزم إجراء تحديث كامل للجدول إذا كان ينبغي أن تحتوي تلك الصفوف الموجودة على القيمة الافتراضية للمصدر. ينقل ClickPipes القيم الافتراضية فقط ضمن ALTER TABLE ADD COLUMN. ولا ينقل إلى ClickHouse العمليات اللاحقة التي تغيّر القيمة الافتراضية للعمود أو تزيلها.

قيود MySQL 5.x

إصدارات MySQL الأقدم من 8.0.1 لا تتضمن بيانات وصفية كاملة للأعمدة في binlog (binlog_row_metadata=FULL)، لذا تتعقّب ClickPipes الأعمدة بحسب ترتيبها. وهذا يعني ما يلي:
  • إضافة عمود في النهاية (ALTER TABLE ADD COLUMN ...) مدعومة.
  • أي DDL يغيّر ترتيب الأعمدة سيؤدي إلى ظهور خطأ في المسار، لأنه لن يعود بالإمكان بعد ذلك مطابقة المواضع الترتيبية بشكل موثوق. ويشمل ذلك:
    • ALTER TABLE DROP COLUMN ...
    • ALTER TABLE ADD COLUMN ... AFTER ... / FIRST
    • ALTER TABLE MODIFY COLUMN ... AFTER ... / FIRST
    • ALTER TABLE CHANGE COLUMN ... AFTER ... / FIRST
إذا واجهت هذا الخطأ، فستحتاج إلى إعادة مزامنة المسار.
آخر تعديل في ١٤ أغسطس ٢٠٢٦