النُسخ المتماثلة للقراءة في قاعدة بيانات Azure لـ MySQL

تُطبق على: قاعدة بيانات Azure للخادم الوحيد الخاص بـ MySQL

هام

قاعدة بيانات Azure لخادم MySQL الفردي على مسار الإيقاف. نوصي بشدة بالترقية إلى قاعدة بيانات Azure لخادم MySQL المرن. لمزيد من المعلومات حول الترحيل إلى خادم Azure Database for MySQL المرن، راجع ما الذي يحدث لقاعدة بيانات Azure لخادم MySQL الفردي؟

تسمح لك ميزة النسخ المتماثل للقراءة بنسخ البيانات قاعدة بيانات Azure لخادم MySQL إلى خادم للقراءة فقط. يمكنك إجراء نسخ متماثل من خادم المصدر إلى ما يصل إلى 5 نسخ متماثلة. يتم تحديث النسخ المتماثلة بصورة غير متزامنة باستخدام محرك MySQL الأصلي تقنية النسخ المتماثل المستندة إلى موضع الملف للسجل الثنائي (binlog). لمعرفة المزيد حول النسخ المتماثل binlog، راجع نظرة عامة حول النسخ المتماثل MySQL binlog.

النسخ المتماثلة هي خوادم جديدة تقوم بإدارتها على غرار قاعدة بيانات Azure العادية لخوادم MySQL. لكل نسخة متماثلة للقراءة، تُحاسب على الحوسبة المتوفرة في وحدات vCore والتخزين بالجيجابايت/شهر.

لمعرفة المزيد حول ميزات النسخ المتماثل MySQL ومشكلاته، راجع وثائق النسخ المتماثل MySQL.

إشعار

تحتوي هذه المقالة على مراجع لمصطلح slave، وهو مصطلح لم تعد Microsoft تستخدمه. عند إزالة المصطلح من البرنامج، بالتالي سنزيله من هذه المقالة.

متى تستخدم نسخة متماثلة للقراءة

تساعد ميزة النسخ المتماثل للقراءة على تحسين أداء وحجم أحمال العمل التي تتطلب القراءة بشكل مكثف. يمكن عزل أحمال عمل القراءة إلى النُسخ المتماثلة، بينما يمكن توجيه أحمال عمل الكتابة إلى النسخة الرئيسية.

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

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

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

النسخ المتماثل عبر المناطق

يمكنك إنشاء نسخة متماثلة للقراءة في منطقة مختلفة عن الخادم المصدر. يمكن أن يكون النسخ المتماثل عبر المناطق مفيدًا لسيناريوهات مثل تخطيط الإصلاح بعد كارثة أو تقريب البيانات من المستخدمين.

يمكنك الحصول على خادم مصدر في أي قاعدة بيانات Azure لمنطقة MySQL. يمكن أن يحتوي الخادم المصدر على نسخة متماثلة في منطقته المُقترنة أو مناطق النسخ المتماثلة العالمية. تُظهر الصورة التالية مناطق النسخ المتماثلة المتوفرة استنادًا إلى المنطقة المصدر.

مناطق النسخ المتماثلة العالمية

يمكنك إنشاء نسخة متماثلة للقراءة في أي من المناطق التالية، بغض النظر عن مكان وجود الخادم المصدر. تتضمن مناطق النسخ المتماثلة العالمية المدعومة ما يلي:

المنطقة توفر النسخة المتماثلة
شرق أستراليا ✔️
جنوب شرق أستراليا ✔️
جنوب البرازيل ✔️
وسط كندا ✔️
شرق كندا ✔️
Central US ✔️
شرق الولايات المتحدة ✔️
East US 2 ✔️
شرق آسيا ✔️
شرق اليابان ✔️
غرب اليابان ✔️
وسط كوريا ✔️
منطقة جنوب كوريا الجنوبية ✔️
أوروبا الشمالية ✔️
وسط شمال الولايات المتحدة ✔️
South Central US ✔️
جنوب شرق آسيا ✔️
شمال سويسرا ✔️
جنوب المملكة المتحدة ✔️
غرب المملكة المتحدة ✔️
غرب وسط الولايات المتحدة ✔️
غرب الولايات المتحدة ✔️
West US 2 ✔️
أوروبا الغربية ✔️
وسط الهند* ✔️
فرنسا الوسطى* ✔️
الإمارات العربية المتحدة، الشمال* ✔️
جنوب أفريقيا، الشمال* ✔️

إشعار

*المناطق التي تحتوي فيها قاعدة بيانات Azure ل MySQL على تخزين للأغراض العامة v2 في المعاينة العامة
*بالنسبة لمناطق Azure هذه، ستمتلك خيار إنشاء خادم في كل من التخزين للأغراض العامة v1 وv2. بالنسبة للخوادم التي أُنشئت باستخدام التخزين للأغراض العامة v2 في المعاينة العامة، فإنك مُقيّد بإنشاء خادم نسخة متماثلة فقط في مناطق Azure التي تدعم التخزين للأغراض العامة v2.

المناطق المقترنة

بالإضافة إلى مناطق النسخ المتماثلة العالمية، يمكنك إنشاء نسخة متماثلة للقراءة في منطقة Azure المُقترنة بالخادم المصدر. إذا كنت لا تعرف منطقتك المُقترنة، يمكنك معرفة المزيد من مقالة المناطق المُقترنة في Azure.

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

مع ذلك، هناك قيود يجب مراعاتها:

  • التوفر الإقليمي: تتوفر قاعدة بيانات Azure لـ MySQL في فرنسا الوسطى والإمارات العربية المتحدة، الشمال ومنطقة وسط ألمانيا. مع ذلك، لا تتوفر مناطقها المُقترنة.

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

إنشاء نسخة متماثلة

هام

  • تتوفر ميزة النسخ المتماثل للقراءة فقط قاعدة بيانات Azure لخوادم MySQL في مستويات الأسعار للأغراض العامة أو مُحسّن للذاكرة. تأكد من أن الخادم المصدر متواجد في أحد مستويات التسعير هذه.
  • إذا لم يكن لدى الخادم المصدر خوادم نسخ متماثلة موجودة، فقد يحتاج الخادم المصدر إلى إعادة تشغيل لإعداد نفسه للنسخ المتماثل اعتمادا على التخزين المستخدم (v1/v2). يرجى مراعاة إعادة تشغيل الخادم وتنفيذ هذه العملية في غير ساعات الذروة. راجع إعادة تشغيل خادم المصدر للمزيد من التفاصيل.

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

تُمكّن كل نسخة متماثلة auto-grow للتخزين. تسمح ميزة النمو التلقائي للنسخة المتماثلة بمواكبة البيانات المنسوخة نسخًا متماثلًا إليها، ومنع انقطاع النسخ المتماثل الناجم عن أخطاء خارج التخزين.

تعرف على كيفية إنشاء نسخة متماثلة للقراءة في مدخل Microsoft Azure.

الاتصال بنسخة متماثلة

عند الإنشاء، ترث النسخة المتماثلة قواعد جدار الحماية للخادم المصدر. بعد ذلك، تكون هذه القواعد مستقلة عن الخادم المصدر.

ترث النسخة المتماثلة حساب المسؤول من الخادم المصدر. تُنسخ جميع حسابات المستخدمين على الخادم المصدر إلى النُسخ المتماثلة للقراءة. يمكنك الاتصال بنسخة متماثلة للقراءة فقط باستخدام حسابات المستخدمين المتوفرة على الخادم المصدر.

يمكنك الاتصال بالنسخة المتماثلة باستخدام اسم المضيف وحساب مستخدم صالح، كما تفعل على قاعدة بيانات Azure العادية لخادم MySQL. بالنسبة لخادم يسمى myreplica مع اسم مستخدم المسؤول myadmin، يمكنك الاتصال بالنسخة المتماثلة باستخدام mysql CLI:

mysql -h myreplica.mysql.database.azure.com -u myadmin@myreplica -p

أدخل كلمة المرور لحساب المستخدم عند مطالبتك بها.

مراقبة النسخ المتماثل

تُوفر قاعدة بيانات Azure لـ MySQL مقياس تأخّر النسخ المتماثل بالثواني في مراقبة Azure. يتوفر هذا المقياس للنسخ المتماثلة فقط. يُحسب هذا المقياس باستخدام المقياس seconds_behind_master المتوفر في أمر MySQL SHOW SLAVE STATUS. عيّن تنبيه لإعلامك عندما يصل تأخّر النسخ المتماثل إلى قيمة غير مقبولة لحمل العمل.

إذا لاحظت زيادة تأخر النسخ المتماثل، فراجع استكشاف أخطاء زمن انتقال النسخ المتماثل وإصلاحها لاستكشاف الأسباب المحتملة وفهمها وإصلاحها.

إيقاف النسخ المتماثل

يمكنك إيقاف النسخ المتماثل بين مصدر ونسخة متماثلة. بعد إيقاف النسخ المتماثل بين الخادم المصدر والنسخة المتماثلة للقراءة، تصبح النسخة المتماثلة خادمًا مستقلًا. البيانات الموجودة في الخادم المستقل هي البيانات التي كانت متوفرة على النسخة المتماثلة في وقت بدء أمر إيقاف النسخ المتماثل. لا يُجاري الخادم المستقل الخادم المصدر.

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

هام

لا يمكن تحويل الخادم المستقل إلى نسخة متماثلة مرة أخرى. قبل إيقاف النسخ المتماثل على نسخة متماثلة للقراءة، تأكد من أن النسخة المتماثلة تحتوي على جميع البيانات التي تحتاجها.

تعرف على كيفية إيقاف النسخ المتماثل إلى نسخة متماثلة.

تجاوز الفشل

لا يوجد تجاوز فشل تلقائي بين خوادم المصدر والنسخة المتماثلة.

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

تلميح

إذا قمت بتجاوز الفشل إلى النسخة المتماثلة، فإن التأخّر في الوقت الذي تفك فيه ارتباط النسخة المتماثلة من المصدر سيشير إلى مقدار البيانات المفقودة.

بعد أن تقرر أنك تريد تجاوز الفشل إلى نسخة متماثلة:

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

  2. وجّه التطبيق إلى النسخة المتماثلة (السابقة)
    يحتوي كل خادم على سلسلة اتصال فريدة. حدّث التطبيق للإشارة إلى النسخة المتماثلة (السابقة) بدلًا من المصدر.

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

معرّف العملية العمومية (GTID)

معرّف العملية العمومية (GTID) هو معرّف فريد تم إنشاؤه مع كل عملية ملتزمة على خادم مصدر، ويتم إيقاف تشغيله افتراضيًا في قاعدة بيانات Azure لـ MySQL. GTID مدعوم في الإصدارين 5.7 و8.0 وفقط على الخوادم التي تدعم التخزين حتى 16 تيرابايت (التخزين للأغراض العامة v2). لمعرفة المزيد حول GTID وكيفية استخدامه في النسخ المتماثل، راجع وثائق النسخ المتماثل لخادم MySQL بواسطة معرف GTID.

يدعم MySQL نوعين من العمليات : عمليات GTID (المعرّفة بـ GTID) والعمليات المجهولة (ليس لديها GTID مخصص)

تتوفر معلمات الخادم التالية لتكوين GTID:

معلمة الخادم الوصف القيمة الافتراضية القيم
gtid_mode يشير إلى ما إذا كانت GTID تُستخدم لتحديد العمليات. لا يمكن إجراء التغييرات بين الأوضاع إلا خطوة واحدة في كل مرة بترتيب تصاعدي (على سبيل المثال OFF ->OFF_PERMISSIVE ->ON_PERMISSIVE ->ON) OFF OFF: يجب أن تكون كل من المعاملات الجديدة ومعاملات النسخ المتماثل مجهولة الهوية
OFF_PERMISSIVE: العمليات الجديدة مجهولة الهوية. يمكن أن تكون العمليات المنسوخة نسخًا متماثلًا إما عمليات مجهولة أو GTID.
ON_PERMISSIVE: العمليات الجديدة هي عمليات GTID. يمكن أن تكون العمليات المنسوخة نسخًا متماثلًا إما عمليات مجهولة أو GTID.
ON: يجب أن تكون كل من العمليات الجديدة والمنسوخة نسخًا متماثلًا عمليات GTID.
enforce_gtid_consistency يفرض تناسق GTID عن طريق السماح بتنفيذ تلك العبارات فقط التي يمكن تسجيلها بطريقة آمنة للعمليات. يجب تعيين هذه القيمة إلى ON قبل تمكين النسخ المتماثل لـ GTID. OFF OFF: يُسمح لجميع العمليات بمخالفة تناسق GTID.
ON: لا يسمح لأي عملية بمخالفة تناسق GTID.
WARN: يسمح لجميع المعاملات بمخالفة تناسق GTID، ولكن يتم إنشاء تحذير.

إشعار

  • بعد تمكين GTID، لا يمكنك إيقاف تشغيله مرة أخرى. إذا كنت بحاجة إلى إيقاف تشغيل GTID، يرجى الاتصال بالدعم.

  • تغيير GTID من قيمة إلى أخرى يمكن أن يكون خطوة واحدة فقط في كل مرة بترتيب تصاعدي للأوضاع. على سبيل المثال، إذا عُيّن gtid_mode حاليًا إلى OFF_PERMISSIVE، فمن الممكن التغيير إلى ON_PERMISSIVE ولكن ليس إلى ON.

  • للحفاظ على تناسق النسخ المتماثل، لا يمكنك تحديثه لخادم رئيسي/نسخة متماثلة.

  • يوصى بتعيين enforce_gtid_consistency إلى ON قبل أن تتمكن من تعيين gtid_mode=ON

لتمكين GTID وتكوين سلوك التناسق، حدّث معلمات الخادم gtid_mode وenforce_gtid_consistency باستخدام مدخل Microsoft Azure أو Azure CLI أو PowerShell.

إذا تم تمكين GTID على خادم مصدر (gtid_mode = ON)، فسيتم أيضًا تمكين GTID للنُسخ المتماثلة المُنشأة حديثًا واستخدام النسخ المتماثل لـ GTID. للتأكد من تناسق النسخ المتماثل، لا يمكن تغيير gtid_mode بمجرد إنشاء خادم (خوادم) رئيسي أو نسخة متماثلة مع تمكين GTID.

الاعتبارات والقيود

مستويات الأسعار

تتوفر النُسخ المتماثلة للقراءة حاليًا فقط في مستويات الأسعار للأغراض العامة ومُحسّن للذاكرة.

إشعار

تستند تكلفة تشغيل خادم النسخة المتماثلة إلى المنطقة التي يشتغل فيها خادم النسخة المتماثلة.

إعادة تشغيل الخادم المصدر

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

الخادم المصدر الذي يحتوي على التخزين للأغراض العامة v2، ستكون المعلمة log_bin قيد التشغيل بشكل افتراضي، ولا تتطلب إعادة تشغيل عند إضافة نسخة متماثلة للقراءة.

النُسخ المتماثلة الجديدة

تُنشأ نسخة متماثلة للقراءة كقاعدة بيانات Azure جديدة لخادم MySQL. لا يمكن تحويل خادم موجود إلى نسخة متماثلة. لا يمكنك إنشاء نسخة متماثلة من نسخة متماثلة أخرى للقراءة.

تكوين نسخة متماثلة

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

هام

قبل تحديث تكوين خادم المصدر إلى قيم جديدة، حدّث تكوين النسخة المتماثلة إلى قيم مساوية أو قيمة أكبر. يضمن هذا الإجراء أن النسخة المتماثلة يمكنها مواكبة أي تغييرات تم إجراؤها على المصدر.

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

النُسخ المتماثلة المتوقفة

إذا أوقفت النسخ المتماثل بين الخادم المصدر والنسخة المتماثلة للقراءة، تصبح النسخة المتماثلة المتوقفة خادمًا مستقلًا يقبل كل من عمليات القراءة والكتابة. لا يمكن تحويل الخادم المستقل إلى نسخة متماثلة مرة أخرى.

خوادم المصدر والخوادم المستقلة المحذوفة

عند حذف الخادم المصدر، يتم إيقاف النسخ المتماثل إلى جميع النُسخ المتماثلة للقراءة. تصبح هذه النسخ المتماثلة تلقائيًا خوادم مستقلة ويمكنها قبول كل من عمليات القراءة والكتابة. حُذف الخادم المصدر نفسه.

حسابات المستخدمين

يُنسخ جميع المستخدمين على الخادم المصدر إلى النُسخ المتماثلة للقراءة. يمكنك الاتصال بنسخة متماثلة للقراءة فقط باستخدام حسابات المستخدمين المتوفرة على الخادم المصدر.

معلمات الخادم

لمنع البيانات من أن تصبح غير متزامنة ولتجنب فقدان البيانات المحتمل أو تلفها، يتم تأمين بعض معلمات الخادم من التحديث عند استخدام النُسخ المتماثلة للقراءة.

يتم تأمين معلمات الخادم التالية على كل من خوادم المصدر والنسخ المتماثلة:

المعلمة event_scheduler مؤمنة على خوادم النسخ المتماثلة.

لتحديث إحدى المعلمات أعلاه على الخادم المصدر، احذف خوادم النسخ المتماثلة، وحّدث قيمة المعلمة على المصدر، وأعد إنشاء النُسخ المتماثلة.

GTID

يُدعم GTID في:

  • الإصدارات 5.7 و 8.0 من MySQL.
  • الخوادم التي تدعم التخزين حتى 16 تيرابايت. راجع مقالة مستوى الأسعار للحصول على قائمة كاملة بالمناطق التي تدعم تخزين 16 تيرابايت.

GTID متوقف عن التشغيل بشكل افتراضي. بعد تمكين GTID، لا يمكنك إيقاف تشغيله مرة أخرى. إذا كنت بحاجة إلى إيقاف تشغيل GTID، اتصل بالدعم.

إذا تم تمكين GTID على خادم مصدر، فسيتم أيضًا تمكين GTID للنُسخ المتماثلة المُنشأة حديثًا واستخدام النسخ المتماثل لـ GTID. للحفاظ على تناسق النسخ المتماثل، لا يمكنك تحديث gtid_mode على خادم (خوادم) المصدر أو النسخ المتماثلة.

غير ذلك

  • إنشاء نسخة متماثلة من نسخة متماثلة غير مدعوم.
  • قد تتسبب الجداول الموجودة في الذاكرة في أن تصبح النُسخ المتماثلة غير متزامنة. وهذا قيد على تقنية النسخ المتماثل MySQL. اقرأ المزيد في الوثائق المرجعية لـ MySQL للحصول على مزيد من المعلومات.
  • تأكد من أن جداول الخادم المصدر تحتوي على مفاتيح أساسية. قد يؤدي نقص المفاتيح الأساسية إلى نشوء زمن انتقال للنسخ المتماثل بين المصدر والنسخ المتماثلة.
  • راجع القائمة الكاملة لقيود النسخ المتماثل MySQL في وثائق MySQL

الخطوات التالية