هل يدعم MySQL ClickPipe MariaDB؟
هل يدعم MySQL ClickPipe أيًا من PlanetScale أو Vitess أو TiDB؟
كيف تُدار عملية النسخ المتماثل؟
GTID وFilePos. وعلى عكس Postgres، لا توجد slot لإدارة الإزاحة. وبدلاً من ذلك، يجب تهيئة خادم MySQL لديك بحيث تكون فترة الاحتفاظ بـ binlog كافية. إذا أصبحت إزاحتنا داخل binlog غير صالحة (على سبيل المثال، إذا ظل الـ mirror متوقفًا مؤقتًا لفترة طويلة، أو حدث failover لقاعدة البيانات أثناء استخدام النسخ المتماثل FilePos)، فستحتاج إلى إعادة مزامنة الـ pipe. واحرص على تحسين materialized views التي تعتمد على جداول الوجهة، لأن الاستعلامات غير الفعّالة قد تُبطئ عملية الإدخال وتتسبب في تراجعها إلى ما بعد فترة الاحتفاظ.
ومن الممكن أيضًا أن تقوم قاعدة بيانات غير نشطة بتدوير log file من دون أن تتيح لـ ClickPipes التقدّم إلى إزاحة أحدث. وقد تحتاج إلى إعداد جدول heartbeat مع تحديثات مجدولة بانتظام.
في بداية التحميل الأولي، نسجّل إزاحة binlog التي سنبدأ منها. ويجب أن تظل هذه الإزاحة صالحة عند اكتمال التحميل الأولي حتى يتمكن CDC من التقدّم. إذا كنت تُدخل كمية كبيرة من البيانات، فتأكد من تهيئة فترة احتفاظ مناسبة لـ binlog. وأثناء إعداد الجداول، يمكنك تسريع التحميل الأولي عبر تهيئة استخدام مفتاح partitioning مخصص للتحميل الأولي للجداول الكبيرة ضمن الإعدادات المتقدمة، حتى نتمكن من تحميل جدول واحد بالتوازي.
لماذا يفشل الـ pipe الخاص بي بسبب خطأ في binlog مرتبط بـ max_allowed_packet؟
max_allowed_packet على خادم MySQL لديك. وبما أن الخادم لا يمكنه إرسال حدث يتجاوز هذا الحد، تتوقف قراءة تدفق binlog ولا يعود بإمكان CDC التقدم.
يحدث هذا غالبًا بسبب صفوف تحتوي على قيم BLOB أو TEXT أو JSON كبيرة. لحل هذه المشكلة:
- زِد قيمة
max_allowed_packetعلى المصدر. ارفعها لتكون أكبر من حجم أكبر تغيير صف لديك — وعادةً ما يكون تعيينها إلى الحد الأقصى1Gآمنًا:اضبطها أيضًا في تهيئة الخادم لديك (مثلmy.cnfأوDB Parameter Group) حتى تبقى سارية بعد إعادة التشغيل. - إذا كان صف واحد أكبر من 1G: أعد مزامنة الـ pipe.
لماذا يظهر لي خطأ في التحقق من شهادة TLS عند الاتصال بـ MySQL؟
x509: certificate is not valid for any names أو x509: certificate signed by unknown authority. يحدث ذلك لأن ClickPipes يفعّل تشفير TLS افتراضيًا.
لديك عدة خيارات لمعالجة هذه المشكلات:
- عيّن حقل TLS Host - إذا كان اسم المضيف في الاتصال مختلفًا عن الاسم الموجود في الشهادة (وهذا شائع مع AWS PrivateLink عبر Endpoint Service)، فعيّن “TLS Host (optional)” بحيث يطابق الاسم الشائع في الشهادة (CN) أو Subject Alternative Name (SAN).
- ارفع Root CA الخاص بك - ينطبق هذا على خوادم MySQL التي تستخدم جهات إصدار شهادات داخلية أو Google Cloud SQL ضمن إعداد CA الافتراضي لكل مثيل. لمزيد من المعلومات حول كيفية الوصول إلى شهادات Google Cloud SQL، راجع هذا القسم.
- اضبط شهادة الخادم - حدّث SSL certificate الخاصة بخادمك لتتضمن جميع أسماء المضيفين المستخدمة في الاتصال، واستخدم جهة إصدار شهادات موثوقة.
- تخطَّ التحقق من الشهادة - في MySQL أو MariaDB المستضاف ذاتيًا، إذ توفّر الإعدادات الافتراضية شهادة موقعة ذاتيًا لا يمكننا التحقق منها (MySQL، MariaDB). الاعتماد على هذه الشهادة يشفّر البيانات أثناء النقل، لكنه ينطوي على خطر انتحال هوية الخادم. نوصي باستخدام شهادات موقعة على نحو صحيح في بيئات production، لكن هذا الخيار مفيد للاختبار على مثيل لمرة واحدة أو عند الاتصال ببنية تحتية قديمة.