مجموعة MySQL

تُعدّ تقنية MySQL Cluster ، والمعروفة أيضًا باسم MySQL NDB Cluster، تقنيةً توفر تجميعًا لا يعتمد على مشاركة البيانات وتجزئة تلقائية لنظام إدارة قواعد بيانات MySQL . وهي مصممة لتوفير توافر عالٍ وإنتاجية عالية مع زمن استجابة منخفض، مع السماح بقابلية توسع شبه خطية. [ 2 ] يتم تنفيذ MySQL Cluster من خلال محرك التخزين NDB أو NDBCLUSTER الخاص بـ MySQL ("NDB" اختصار لـ Network Database ) .

بنيان

تم تصميم MySQL Cluster وفقًا لبنية موزعة متعددة الخوادم الرئيسية متوافقة مع معايير ACID ، دون وجود نقطة فشل واحدة . يستخدم MySQL Cluster التجزئة التلقائية (التقسيم) لتوسيع نطاق عمليات القراءة والكتابة على الأجهزة القياسية، ويمكن الوصول إليه عبر واجهات برمجة تطبيقات SQL وNon-SQL (NoSQL) .

النسخ

يستخدم نظام MySQL Cluster داخليًا النسخ المتزامن عبر آلية التزام ثنائية المراحل لضمان كتابة البيانات إلى عدة عُقد عند الالتزام بها. ويتطلب ضمان التوافر وجود نسختين (تُعرفان بالنسخ المتماثلة ). يقوم MySQL Cluster تلقائيًا بإنشاء "مجموعات عُقد" بناءً على عدد النسخ المتماثلة وعُقد البيانات التي يُحددها المستخدم. تُنسخ التحديثات بشكل متزامن بين أعضاء مجموعة العُقد لحماية البيانات من الفقدان ودعم تجاوز الأعطال السريع بين العُقد. يختلف النسخ المتماثل في نظام Cluster عن "النسخ المتماثل في MySQL"، الذي يكون غير متزامن .

من الممكن أيضًا نسخ البيانات بشكل غير متزامن بين المجموعات؛ ويُشار إلى ذلك أحيانًا باسم "نسخ مجموعات MySQL" أو "النسخ الجغرافي". يُستخدم هذا عادةً لنسخ المجموعات بين مراكز البيانات لأغراض استعادة البيانات في حالات الكوارث التقنية ، أو لتقليل تأثيرات زمن استجابة الشبكة من خلال وضع البيانات فعليًا بالقرب من مجموعة من المستخدمين. على عكس نسخ MySQL القياسي، يستخدم النسخ الجغرافي في مجموعات MySQL التحكم التفاؤلي في التزامن ومفهوم الحقب لتوفير آلية لاكتشاف التعارضات وحلها، [ 3 ] مما يُمكّن من إنشاء مجموعات نشطة/نشطة بين مراكز البيانات.

ابتداءً من MySQL Cluster 7.2، تم دعم النسخ المتزامن بين مراكز البيانات من خلال ميزة التجميع متعدد المواقع. [ 4 ]

تقسيم البيانات الأفقي (التجزئة التلقائية)

يتم تنفيذ MySQL Cluster كقاعدة بيانات رئيسية متعددة موزعة بالكامل مما يضمن أن التحديثات التي يتم إجراؤها بواسطة أي تطبيق أو عقدة SQL متاحة على الفور لجميع العقد الأخرى التي تصل إلى المجموعة، ويمكن لكل عقدة بيانات قبول عمليات الكتابة.

يتم تقسيم البيانات في جداول MySQL Cluster (NDB) تلقائيًا عبر جميع عُقد البيانات في النظام. ويتم ذلك باستخدام خوارزمية تجزئة تعتمد على المفتاح الأساسي للجدول ، وهو أمر غير مرئي للتطبيق النهائي. يمكن للعملاء الاتصال بأي عُقدة في المجموعة ، وستصل الاستعلامات تلقائيًا إلى الأجزاء الصحيحة اللازمة لتنفيذ الاستعلام أو إتمام المعاملة. يدعم MySQL Cluster الاستعلامات والمعاملات عبر الأجزاء.

يُمكن للمستخدمين تحديد مخططات التقسيم الخاصة بهم. يُتيح ذلك للمطورين إضافة "وعي التوزيع" إلى التطبيقات من خلال التقسيم بناءً على مفتاح فرعي مشترك بين جميع الصفوف التي يتم الوصول إليها بواسطة المعاملات عالية التشغيل. يضمن هذا أن تكون البيانات المستخدمة لإتمام المعاملات موجودة في نفس الجزء من البيانات، مما يُقلل من عدد قفزات الشبكة.

التخزين الهجين

تتيح خدمة MySQL Cluster تخزين مجموعات البيانات التي تتجاوز سعة جهاز واحد والوصول إليها عبر أجهزة متعددة.

يحتفظ نظام MySQL Cluster بجميع الأعمدة المفهرسة في الذاكرة الموزعة. كما يمكن الاحتفاظ بالأعمدة غير المفهرسة في الذاكرة الموزعة أو على القرص باستخدام ذاكرة تخزين مؤقتة للصفحات . يتيح تخزين الأعمدة غير المفهرسة على القرص لنظام MySQL Cluster تخزين مجموعات بيانات أكبر من إجمالي الذاكرة المتاحة للأجهزة المجمعة.

يقوم نظام MySQL Cluster بكتابة سجلات إعادة التنفيذ (Redo logs) إلى القرص لجميع تغييرات البيانات، بالإضافة إلى حفظ نقاط التحقق من البيانات على القرص بانتظام. يتيح ذلك للنظام استعادة البيانات من القرص باستمرار بعد انقطاع الخدمة بالكامل. ونظرًا لكتابة سجلات إعادة التنفيذ بشكل غير متزامن مع إتمام المعاملات، فقد تُفقد بعض المعاملات في حال تعطل النظام بالكامل، ولكن يمكن التخفيف من ذلك باستخدام النسخ المتماثل الجغرافي أو نظام المجموعات متعددة المواقع المذكور سابقًا. يبلغ تأخير الكتابة غير المتزامن الافتراضي الحالي ثانيتين، وهو قابل للتكوين. لا تؤدي سيناريوهات الفشل العادية إلى أي فقدان للبيانات نظرًا لتكرار البيانات المتزامن داخل النظام.

عندما يتم الاحتفاظ بجدول MySQL Cluster في الذاكرة، فإن المجموعة لا تصل إلى وحدة التخزين القرصية إلا لكتابة سجلات الإعادة ونقاط التحقق. ولأن عمليات الكتابة هذه متسلسلة وتتضمن أنماط وصول عشوائي محدودة، فإن MySQL Cluster يحقق معدلات إنتاجية كتابة أعلى مع موارد تخزين قرصية محدودة مقارنةً بأنظمة إدارة قواعد البيانات العلائقية التقليدية التي تعتمد على التخزين المؤقت على القرص. ويمكن تعطيل عملية حفظ نقاط التحقق هذه على القرص لبيانات الجدول الموجودة في الذاكرة (لكل جدول على حدة) إذا لم تكن هناك حاجة إلى التخزين الدائم على القرص.

لا شيء مشترك

صُممت مجموعة MySQL بحيث لا تحتوي على نقطة فشل واحدة . شريطة إعداد المجموعة بشكل صحيح، يمكن لأي عقدة أو نظام أو قطعة من الأجهزة أن تتعطل دون أن تتعطل المجموعة بأكملها. لا يُشترط وجود قرص مشترك ( SAN ). يمكن أن تكون وصلات الربط بين العقد من نوع إيثرنت قياسي ، أو إيثرنت جيجابت ، أو إنفينيباند ، أو SCI .

واجهات برمجة تطبيقات SQL و NoSQL

بما أن نظام MySQL Cluster يخزن الجداول في عقد البيانات، بدلاً من خادم MySQL، فهناك واجهات متعددة متاحة للوصول إلى قاعدة البيانات:

مدير مجموعة MySQL

يُعدّ MySQL Cluster Manager، وهو جزء من MySQL Cluster CGE التجاري، أداةً مصممة لتبسيط إنشاء وإدارة قاعدة بيانات MySQL Cluster CGE من خلال أتمتة مهام الإدارة الشائعة، بما في ذلك التوسع عبر الإنترنت، والترقيات، والنسخ الاحتياطي/الاستعادة، وإعادة التهيئة. كما يقوم MySQL Cluster Manager بمراقبة واستعادة عُقد تطبيق MySQL Server وعُقد الإدارة، بالإضافة إلى عُقد بيانات MySQL Cluster، بشكل تلقائي.

عامل تشغيل MySQL Ndb

يُسهّل مُشغّل MySQL Ndb مفتوح المصدر نشر وتشغيل MySQL Cluster على بيئة Kubernetes . يقوم Ndb Operator بنشر عُقد MySQL Cluster المُحاوية، بما في ذلك عُقد البيانات والإدارة وSQL، ضمن عدد من مجموعات StatefulSets، مع تخزين البيانات في وحدات تخزين دائمة. تُعزز آليات Kubernetes ميزات التوافر العالي لـ MySQL Cluster، على سبيل المثال، استعادة التكرار التلقائي للتوافر العالي بعد أعطال الأجهزة عن طريق نقل وحدات pods إلى أجهزة جديدة. يُمكّن تشغيل MySQL Cluster على Kubernetes من تشغيل مجموعة كاملة من البرامج السحابية الأصلية بنفس الطريقة على السحابات الخاصة أو العامة.

مجموعة NDB

نظام NDB Cluster هو نظام قاعدة البيانات الموزعة الذي يقوم عليه نظام MySQL Cluster. يمكن استخدامه بشكل مستقل عن خادم MySQL ، حيث يصل المستخدمون إلى النظام عبر واجهة برمجة تطبيقات NDB (C++). يشير اختصار "NDB" إلى قاعدة بيانات الشبكة .

من منظور خادم MySQL ، فإن NDB Cluster عبارة عن محرك تخزين لتخزين جداول الصفوف .

من منظور NDB Cluster، تُعتبر نسخة خادم MySQL عملية API متصلة بالمجموعة. يدعم NDB Cluster الوصول المتزامن من أنواع أخرى من عمليات API، بما في ذلك Memcached وJavaScript/Node.js وJava وJPA وHTTP/REST. يمكن لجميع عمليات API العمل على نفس الجداول والبيانات المخزنة في NDB Cluster.

يستخدم MySQL Cluster خادم MySQL لتوفير الإمكانيات التالية بالإضافة إلى Ndb Cluster:

  • قدرة تحليل/تحسين/تنفيذ استعلامات SQL
    • موصلات للتطبيقات عبر JDBC و ODBC وما إلى ذلك.
  • آليات الربط بين الجداول
  • مصادقة المستخدم وتفويضه
  • نسخ البيانات غير المتزامن إلى أنظمة أخرى

تستخدم جميع عمليات واجهة برمجة التطبيقات (API) بما في ذلك خادم MySQL مكتبة عميل NDBAPI [ 5 ] C++ للاتصال بمجموعة NDB وتنفيذ العمليات.

تطبيق

يستخدم نظام MySQL Cluster ثلاثة أنواع مختلفة من العقد (العمليات)  :

  • عقدة البيانات (عملية ndbd/ndbmtd) : تخزن هذه العقد البيانات. يتم توزيع الجداول تلقائيًا عبر عقد البيانات التي تتولى أيضًا بشفافية موازنة الأحمال، والنسخ المتماثل، والتعافي من الأعطال، والإصلاح الذاتي.
  • عقدة الإدارة (عملية ndb_mgmd) : تُستخدم لتهيئة ومراقبة المجموعة. وهي مطلوبة فقط لبدء أو إعادة تشغيل عقدة المجموعة. يمكن أيضًا تهيئتها كمحكمين، ولكن هذا ليس إلزاميًا (يمكن تهيئة خوادم MySQL كمحكمين بدلاً من ذلك). [ 6 ]
  • عقدة التطبيق أو عقدة SQL (عملية mysqld) : خادم MySQL (mysqld) يتصل بجميع عقد البيانات لتخزين البيانات واسترجاعها. هذا النوع من العقد اختياري؛ إذ يُمكن الاستعلام عن عقد البيانات مباشرةً عبر واجهة برمجة تطبيقات NDB، إما باستخدام واجهة برمجة تطبيقات C++ الأصلية أو إحدى واجهات برمجة تطبيقات NoSQL الإضافية المذكورة أعلاه.

بشكل عام، يُتوقع أن تعمل كل عقدة على مضيف فعلي منفصل، أو جهاز افتراضي، أو مثيل سحابي (مع أن من الشائع جدًا وضع عقد الإدارة مع خوادم MySQL). ولأفضل الممارسات، يُنصح بعدم وضع العقد ضمن نفس مجموعة العقد على مضيف فعلي واحد (لأن ذلك سيمثل نقطة فشل واحدة).

الإصدارات

ابتداءً من الإصدار 8.0، يعتمد MySQL Cluster مباشرةً على الإصدارات المقابلة من MySQL Server. سابقًا، كانت أرقام إصدارات MySQL Cluster منفصلة عن أرقام إصدارات MySQL Server - على سبيل المثال، كان MySQL Cluster 7.6 يعتمد على/يحتوي على مكون الخادم من MySQL 5.7.

تتضمن الإصدارات الأحدث من MySQL Cluster جميع ميزات الإصدارات الأقدم، بالإضافة إلى بعض الميزات الجديدة. الإصدارات المتوفرة حاليًا:

  • مجموعة MySQL 9.7 LTS مبنية على إصدار MySQL 9.7 LTS
  • مجموعة MySQL 8.4 LTS مبنية على إصدار MySQL 8.4 LTS
أضف دعمًا لبروتوكول TLS على الاتصالات الداخلية للمجموعة
  • مجموعة MySQL 8.0 مبنية على MySQL 8.0
زيادة الحد الأقصى لحجم الصف إلى 30 كيلوبايت، ودعم ما يصل إلى 144 عقدة بيانات، وتحسين التصفية والربط الموزعين، ودعم الربط الخارجي المتوازي والربط الجزئي، وتحسين معالجة المخطط وقوائم التحكم بالوصول، وإعادة تسمية الأعمدة عبر الإنترنت، وتبسيط التكوين، والنسخ الاحتياطي والاستعادة المتوازية متعددة الخيوط، وتحسين أداء بيانات القرص، ودعم مُحسَّن لتكوينات 3 و4 نسخ متماثلة، ودعم شبكات التوصيل المتعددة، ودعم تحويلات الاستعادة، وتحسين أداء كتابة البيانات الثنائية الكبيرة، وتشفير النسخ الاحتياطي، ودعم IPv6، والتكوين التلقائي للخيوط، وتحسين أداء الاسترداد، وتحسين تعدد خيوط الاستعلام. [ 7 ]
  • مجموعة MySQL 7.6 مبنية على MySQL 5.7
تحسين أوقات إعادة التشغيل والاستعادة، وتقليل استخدام مساحة القرص، وتحسين أداء الربط، وأداة استيراد جديدة، واتصال الذاكرة المشتركة، وتحسين الوعي بالبنية السحابية. [ 8 ]

الإصدارات القديمة (التي لم تعد قيد التطوير):

  • مجموعة MySQL 8.1 مبنية على إصدار MySQL 8.1 المبتكر
  • مجموعة MySQL 8.2 مبنية على إصدار MySQL 8.2 Innovation
  • مجموعة MySQL 8.3 مبنية على إصدار MySQL 8.3 Innovation
  • مجموعة MySQL 7.5 مبنية على MySQL 5.7
يتضمن دعمًا لمجموعات بيانات أكبر (أكثر من 128 تيرابايت لكل عقدة)، وقابلية توسع محسّنة للقراءة من خلال جداول محسّنة للقراءة، ودعمًا محسّنًا للغة SQL. [ 9 ]
  • مجموعة MySQL 7.4 مبنية على MySQL 5.6
يتضمن ذلك تحسينات في اكتشاف التعارضات وحلها، وتحسين أوقات إعادة تشغيل العقد، وواجهة برمجة تطبيقات جديدة للأحداث. [ 10 ]
  • مجموعة MySQL 7.3 مبنية على MySQL 5.6
يتضمن دعمًا لقيود المفاتيح الخارجية ، وواجهة برمجة تطبيقات Node.js / JavaScript ، وبرنامج تثبيت تلقائي. [ 11 ]
  • مجموعة MySQL 7.2 مبنية على MySQL 5.5
يتضمن ذلك ميزة تحديد موقع الاستعلام التكيفي (التي تدفع عمليات الربط إلى عقد البيانات)، وواجهة برمجة تطبيقات Memcached، ونسخ متماثل جغرافي نشط/نشط مبسط، وتجميع متعدد المواقع، وتحسينات قابلية التوسع لعقد البيانات، وامتيازات مستخدم موحدة. [ 12 ]
  • مجموعة MySQL 7.1 مبنية على MySQL 5.1.D
يتضمن موصلات ClusterJ و ClusterJPA
  • مجموعة MySQL 7.0 مبنية على MySQL 5.1.C
يتضمن عقد بيانات متعددة الخيوط (ndbmtd)، و DDL المعاملاتي، ودعم نظام التشغيل Windows.
  • مجموعة MySQL 6.3 مبنية على MySQL 5.1.B
يشمل النسخ الاحتياطي المضغوط + LCP، ودعم النسخ الدائري، واكتشاف/حل التعارضات، وتحسين الجداول، إلخ.
  • مجموعة MySQL 6.2 مبنية على MySQL 5.1.A
أول إصدار "مخصص لشركات الاتصالات" أو "إصدار بمستوى شركات الاتصالات". يدعم 255 عقدة، وتعديل الجداول عبر الإنترنت، وتحسينات في زمن استجابة النسخ المتماثل والإنتاجية، إلخ.
  • تم تضمين Ndb في شجرة مصدر MySQL 5.1.X

متطلبات

لأغراض التقييم، يمكن تشغيل MySQL Cluster على خادم فعلي واحد. أما بالنسبة لعمليات النشر في بيئة الإنتاج، فإن الحد الأدنى لمتطلبات النظام هو 3 خوادم/مضيفين.

  • 2 × عقدة بيانات
  • 1 × عقدة التطبيق / الإدارة

أو

  • 2 × عقدة بيانات + تطبيق
  • عقدة إدارة واحدة

التكوينات كالتالي:

  • أنظمة التشغيل: لينكس ، سولاريس ، ويندوز ، ماك أو إس (للتطوير فقط)
  • المعالج: Intel/AMD x86/x86-64، UltraSPARC
  • الذاكرة: 1 جيجابايت
  • سعة القرص الصلب: 3 جيجابايت
  • الشبكة: عقدة واحدة أو أكثر (إيثرنت قياسي - TCP/IP)

يمكن العثور على النصائح والتوصيات المتعلقة بنشر مجموعات عالية الأداء وذات جودة إنتاجية في دليل تقييم مجموعة MySQL ودليل تحسين أداء قاعدة بيانات مجموعة MySQL .

تاريخ

استحوذت شركة MySQL AB على التقنية الكامنة وراء MySQL Cluster من شركة Alzato ، وهي شركة ناشئة صغيرة أسستها شركة Ericsson . صُممت NDB في الأصل لسوق الاتصالات ، نظرًا لمتطلباتها العالية من حيث التوافر والأداء. [ 13 ]

تم دمج MySQL Cluster المستند إلى محرك التخزين NDB في منتج MySQL ، وكان أول إصدار له في MySQL 4.1.

الكتب

MySQL Cluster 7.5 من الداخل والخارج. [ 14 ] كتاب من تأليف ميكائيل رونستروم، مؤسس تقنية NDB.

Pro MySQL NDB Cluster. [ 15 ] كتاب من تأليف جيسبر ويسبورغ كروغ وميكيا أوكونو، مهندسي دعم MySQL.

يدعم

يُرخص برنامج MySQL Cluster بموجب رخصة GPLv 2. ويتوفر الدعم التجاري كجزء من MySQL Cluster CGE، الذي يتضمن أيضًا إضافات غير مفتوحة المصدر مثل MySQL Cluster Manager وMySQL Enterprise Monitor، بالإضافة إلى MySQL Enterprise Security وMySQL Enterprise Audit.

انظر أيضاً

  • Galera Cluster، [ 16 ] مكتبة نسخ متزامنة عامة متعددة النسخ الرئيسية لقواعد البيانات المعاملاتية لـ MySQL و MariaDB .
  • يُعد Percona Server for MySQL XtraDB Cluster أيضًا مزيجًا من مكتبة Galera للنسخ المتماثل وMySQL التي تدعم تعدد النسخ الرئيسية.
  • RonDB، [ 17 ] نسخة معدلة من MySQL Cluster التي يتم صيانتها بواسطة Hopsworks.

مراجع

  1. "ملاحظات إصدار MySQL NDB Cluster 9.7" . mysql.com .
  2. شركة أوراكل. "معايير أداء مجموعات MySQL: أوراكل وإنتل تحققان مليار عملية كتابة في الدقيقة" . mysql.com . تم الاطلاع عليه بتاريخ 24 يونيو 2013 .
  3. MySQL  :: دليل مرجعي لـ MySQL 5.6  :: 17.6.11 حل تعارضات النسخ المتماثل لمجموعة MySQL . Dev.mysql.com. تم الاطلاع عليه بتاريخ 18-09-2013.
  4. نسخ قواعد البيانات بشكل متزامن عبر مراكز البيانات - هل أنت مجنون؟ (مدونة أوراكل حول MySQL) . Blogs.oracle.com (2011-10-03). تم الاطلاع عليه بتاريخ 2013-09-18.
  5. دليل مطور واجهة برمجة تطبيقات مجموعة MySQL
  6. جون ستيفنز، مايك كروكنبرغ، رولاند بومان (2007): "دليل دراسة شهادة مدير قاعدة بيانات MySQL 5.1 Cluster" ، ص 86
  7. "MySQL :: دليل مرجعي لـ MySQL 8.0 :: 22.1.4 ما الجديد في NDB Cluster" . dev.mysql.com .  
  8. أصبح MySQL Cluster 7.6 متاحًا الآن بشكل عام ، مدونة أوراكل MySQL، 1 يونيو 2018
  9. أصبح MySQL Cluster 7.5 متاحًا الآن للجميع!، مدونة أوراكل MySQL، 18 أكتوبر 2016
  10. إصدار MySQL Cluster 7.4 العام: 200 مليون استعلام في الثانية، ونسخ جغرافي نشط-نشط، والمزيد ، ملخص MySQL Cluster 7.4
  11. أصبح MySQL Cluster 7.3 متاحًا الآن للجميع – نظرة عامة ، ملخص MySQL Cluster 7.3
  12. الميزات الجديدة في MySQL Cluster 7.2 ، منطقة مطوري MySQL
  13. تود ر. وايس (14 أكتوبر 2003). "MySQL تستحوذ على شركة Alzato المتخصصة في أنظمة إدارة البيانات" . Computerworld.com . تاريخ الاطلاع: 5 نوفمبر 2012 .
  14. ميكائيل رونستروم (12 فبراير 2018). "MySQL Cluster 7.5 من الداخل والخارج" . bod.se. تم الاطلاع عليه في 1 أغسطس 2022 .
  15. ^ يسبر ويسبورج كروغ، ميكيا أوكونو (2017). مجموعة برو MySQL NDB . apress.com. دوى : 10.1007/978-1-4842-2982-8 . رقم ISBN 978-1-4842-2981-1. S2CID 10326666 . تم الاسترجاع في 1 أغسطس 2022 . 
  16. مجموعة جاليرا
  17. "إعلان RonDB" . تم الاطلاع عليه في 1 أغسطس 2022 .

MySQL

آخر