MySQL / التزامن والأداء والتشغيل / الدرس 17
النسخ الاحتياطي والاستعادة والتعافي إلى نقطة زمنية
صمم التعافي حول أهداف فقد البيانات والتوقف، ثم تحقق من قاعدة مستعادة بدلاً من الثقة بملف.
في هذه الصفحة
أهداف الدرس
- ميّز النسخ المنطقية والمادية والسجلات الثنائية.
- خطط للالتقاط المتسق والتدرب على الاستعادة والتعافي عند حدود المعاملات.
حدد الفقد والتوقف المقبولين
استخدم قاعدة المتجر الاصطناعية فقط. يحدد هدف نقطة التعافي الفقد المقبول، ويحدد هدف زمن التعافي مدة الاستعادة المقبولة. لا يضمن تفريغ ليلي وحده العودة إلى دقيقة قبل الحادثة. تشمل الاستراتيجية التكرار والاحتفاظ والتشفير والصلاحيات والتخزين خارج المضيف والاستعادة المنتظمة. والنسخة المتماثلة ليست احتياطياً مستقلاً إذ قد تنقل الحذف فوراً.
طابق طريقة الالتقاط مع المحرك
يسجل التفريغ المنطقي المخطط والصفوف كعبارات، وتلتقط النسخة المادية بنى التخزين بطريقة اتساق مدعومة. لا يعد نسخ مجلد البيانات الحي عشوائياً طريقة صحيحة. توفر mysqldump --single-transaction رؤية متسقة لـ InnoDB لا للجداول غير المعاملاتية، وقد تعطل DDL المتزامنة التفريغ. نسق تغييرات المخطط وافحص المحركات.
SELECT TABLE_NAME,ENGINE FROM information_schema.TABLES
WHERE TABLE_SCHEMA='mysql_course_lab' AND TABLE_TYPE='BASE TABLE'
ORDER BY TABLE_NAME;
TABLE_NAME | ENGINE
customers | InnoDB
order_items | InnoDB
orders | InnoDB
products | InnoDB
تستخدم customers و order_items و orders و products جميعها InnoDB حسب تعريف التدريب. تستبعد TABLE_TYPE العروض. يجب قراءة النتائج الحقيقية من الوجهة المصرح بها؛ ويغير جدول غير معاملاتـي واحد حجة الاتساق ويحتاج استراتيجية مختلفة.
اجعل التفريغ التوضيحي قابلاً للمراجعة
المثال الصدفي خطة لمختبر مستقل لا أمراً منفذاً هنا. يطلب خيار كلمة المرور السر بدلاً من تضمينه. يسجل source-data=2 إحداثيات معلقة وقد يتطلب صلاحيات وقفلًا وجيزاً. يناسب set-gtid-purged=OFF تصدير التدريب المعزول لا كل استعادة إنتاجية. ضم الإجراءات والأحداث والمشغلات عن قصد وتحقق من شمول الكائنات.
mysqldump --host=127.0.0.1 --user=lab_backup --password \
--single-transaction --quick --source-data=2 \
--routines --events --triggers --set-gtid-purged=OFF \
--databases mysql_course_lab > /tmp/mysql-course-lab.sql
لا تنفذه على وجهة مجهولة. افحص رمز الخروج والأخطاء واحم الملف وسجل إصدارات العميل والخادم والإحداثيات وانقل الناتج إلى تخزين دائم مضبوط. لا يثبت وجود ملف غير فارغ اكتمال التفريغ.
استعد إلى وجهة معزولة أولاً
قد تنشئ الاستعادة كائنات وتستبدلها، فاختر وجهة معزولة فارغة متوافقة وبمساحة كافية. استعد المخطط والبيانات والكائنات حسب اعتمادياتها وأبق التطبيق مفصولاً حتى الفحص. تحقق من الأعداد والعلاقات والإجماليات والتعريفات والقراءات، وقس المدة ووثق الصلاحيات والافتراضات الناقصة لا نجاح الاستيراد فقط.
SELECT (SELECT COUNT(*) FROM customers) AS customers,
(SELECT COUNT(*) FROM orders) AS orders,
(SELECT COUNT(*) FROM order_items) AS lines;
SELECT SUM(total) AS ordered_value FROM orders;
customers | orders | lines
3 | 3 | 4
ordered_value
65.00
الأعداد المتوقعة 3 و 3 و 4 وقيمة الطلبات 65.00. هي فحوص مفيدة لا برهان سلامة كامل؛ فقد يحافظ صف خاطئ على العدد والمجموع. طابق البنود وافحص هويات مختارة ومفاتيح خارجية قبل اعتماد الاستعادة.
أعد تشغيل فترة سجلات متحققة فقط
يبدأ التعافي بنسخة أساس متسقة وسلسلة سجلات ثنائية غير منقطعة بعد موضعها أوحد GTID المسجل. حدد المعاملة الضارة وتوقف قبل حدها لا وسط أحداثها. تساعد الأوقات على التحقيق لكن راجع المناطق الزمنية وحدود المعاملات. تدرب على نسخة وقارن ثوابت العمل واحفظ الأصول. لا ترتجل حذف السجلات أثناء الحادثة.
الأخطاء الشائعة وإصلاحها
ملف تفريغ يبدو ناجحاً ولا يمكن استعادته.
- لماذا يحدث؟
- لم تُفحص أخطاء الخروج أوالكائنات أوالصلاحيات أوتوافق الإصدار.
- كيف تصلحه؟
- أعد الالتقاط والتدرب المنضبط مع تسجيل التشخيص.
- كيف تتجنب تكراره؟
- اجعل فحص الاستعادة الدوري جزءاً من السياسة.
يحوي تفريغ يفترض اتساقه بيانات غير متطابقة.
- لماذا يحدث؟
- أبطلت جداول غير معاملاتية أو DDL متزامنة الافتراضات.
- كيف تصلحه؟
- استخدم طريقة تشمل المحركات وتنسق تغييرات المخطط.
- كيف تتجنب تكراره؟
- احصر المحركات وأوقف DDL غير المتوافقة أثناء الالتقاط.
تتوقف الاستعادة الزمنية قبل الوقت المطلوب.
- لماذا يحدث؟
- يكسر سجل مفقود أومحذوف سلسلة التشغيل.
- كيف تصلحه؟
- حدد آخر حد قابل للتعافي واستخدم سلسلة سليمة متحققة.
- كيف تتجنب تكراره؟
- طابق احتفاظ وأرشفة السجلات مع أهداف التعافي.
اختبر فهمك
1. نسخة عمرها 24 ساعة وسجلاتها اللاحقة مفقودة؛ هل تضمن فقد خمس دقائق؟
اعرض الحل المشروح
لا؛ تحد النسخة والسلسلة المتاحة نقطة الاستعادة. يتطلب هدف خمس دقائق استراتيجية التقاط وأرشفة وأدلة استعادة. اذكر الحد الفعلي بصدق ولا تساوِ الهدف المرغوب بضمان قائم.
2. لماذا لا تثبت الأعداد 3/3/4 والإجمالي 65.00 استعادة مثالية؟
اعرض الحل المشروح
قد تتساوى أعداد ومجاميع بيانات مختلفة. افحص المفاتيح والعلاقات ومطابقة بنود كل طلب والقيود والكائنات أيضاً. ينبغي أن يفحص التحقق معنى العمل وسلوك التطبيق لا الملخصات السهلة وحدها.
أهم ما تعلمته
- تفيد النسخة حين تُثبت قابليتها للاستعادة.
- احم نسخة الأساس وسلسلة السجلات وإجراء التعافي المقاس.