PostgreSQL / المتقدم: الأدلة والتشغيل الموثوق / الدرس 17
المزامنة والاتساق والتحويل عند الفشل
قارن النسخ الفيزيائية والمنطقية وافصل استلام السجل عن إعادته، وحدد ملكية الكتابة والتعافي قبل التحويل.
في هذه الصفحة
أهداف الدرس
- تفسير حدود الاستلام والإعادة والحفظ المتزامن.
- شرح الفتحات والهوية المنطقية ومخاطر الترقية.
تعيد النسخة الفيزيائية تاريخ العنقود
ترسل المزامنة الفيزيائية WAL إلى نسخة متوافقة تعيد تاريخ العنقود. تقرأ hot standby وقد تتأخر. الاستلام والكتابة والتثبيت والتطبيق مراحل مختلفة، وقد تفقد غير المتزامنة عملاً مؤكداً إذا فقد الأصل قبل وصوله للناجي. حدد قبول القدم وقراءة آخر كتابة ولا تعتبر النسخ مثل الكاتب.
راقب التعافي والإعادة منفصلين
تحدد pg_is_in_recovery وضع التعافي وتعرض دوال LSN موضعي الاستلام والإعادة. تحتاج NULL سياق البث والوجهة. وقت آخر معاملة معادة ليس ساعة تأخر عامة؛ قد يكون قدمه طبيعياً مع أصل خامل. قارن المواضع وحداثة التطبيق عبر الوقت ولا نختلق حالة سليمة.
SELECT pg_is_in_recovery(), pg_last_wal_receive_lsn(),
pg_last_wal_replay_lsn(), pg_last_xact_replay_timestamp();
فسرها على النسخة المطلوبة وبصلاحيات مناسبة؛ للخمول والوجهة غير المتعافية معنى آخر.
للمتانة والاحتفاظ كلف
قد ينتظر الحفظ إقرار نسخ مختارة وفق synchronous_commit وإعدادها. لا تصبح كل قراءة حديثة تلقائياً؛ يختلف remote_apply عن إقرار التثبيت. تحتفظ الفتحات بالتاريخ اللازم وقد يستهلك مستهلك متوقف WAL ومساحة كبيرة. راقب الاحتفاظ والفشل؛ الفتحة ليست تخزيناً لا نهائياً والمزامنة ليست نسخة ضد الخطأ المنطقي.
اقرأ تقدم الإرسال دون تغيير البنية
تعرض pg_stat_replication على الأصل مرسلي WAL ومواضع الكتابة والتثبيت والإعادة. تعتمد الرؤية على الصلاحيات وقد يعني الفراغ غياب اتصال لا خلل البيانات. للفترات معنى موثق وقد تصبح NULL أو قديمة بالخمول. اربط الإرسال والاستلام والإعادة والاحتفاظ، ولا تبرر النتائج إعادة ضبط الفتحات أو التخطي أو الترقية.
SELECT application_name, state, sync_state,
sent_lsn, write_lsn, flush_lsn, replay_lsn
FROM pg_stat_replication ORDER BY application_name;
SELECT slot_name, slot_type, active, restart_lsn
FROM pg_replication_slots ORDER BY slot_name;
البنية والمواضع غير محددة، واحمِ المعرفات التشغيلية عند مشاركة التشخيص.
للمزامنة المنطقية نطاق مختلف
تنشر المنطقية تغييرات جداول مختارة وتحتاج هوية مناسبة للتحديث والحذف. قد تخدم انتقال إصدارات ولا تنسخ تلقائياً DDL والتسلسل وكل الكائنات، فخططها منفصلة. يجب منع الأصل القديم وإثبات كاتب واحد عند الترقية؛ ينتج عن تاريخين اختلاف. توفر PostgreSQL لبنات لا قرار تحويل آلياً عاماً أو ضمان فقد صفري. اختبر التوجيه والإعادة والنسخ والرجوع.
الأخطاء الشائعة وإصلاحها
يغيب سجل حديث من النسخة
- لماذا يحدث؟
- لم يطبق السجل المطلوب في الوجهة.
- كيف تصلحه؟
- استخدم سياسة الحداثة وقارن تقدم الاستلام والإعادة.
- كيف تتجنب تكراره؟
- وثق القراءات القابلة للتأخر وقراءة آخر كتابة.
يكبر WAL خلف فتحة غير نشطة
- لماذا يحدث؟
- لا يقدم المستهلك التاريخ المحتفظ به.
- كيف تصلحه؟
- افحص المستهلك والميزانية بخطة تعافٍ مراجعة.
- كيف تتجنب تكراره؟
- نبه للاحتفاظ والخمول قبل نفاد القرص.
يفتقد المشترك المنطقي مخططاً أو حالة تسلسل
- لماذا يحدث؟
- اختلط نقل تغييرات الجداول باستنساخ العنقود.
- كيف تصلحه؟
- انقل المستثنى وتحقق من التحويل منفصلاً.
- كيف تتجنب تكراره؟
- احصر قيود المنطقية للإصدارات الدقيقة.
اختبر فهمك
1. وقت آخر معاملة معادة قديم ساعة ولم يقبل الأصل كتابة خلالها. هل ثبت تأخر ساعة؟
اعرض الحل المشروح
لا؛ قد يحدد آخر معاملة حقيقية فقط. قارن WAL وحداً تطبيقياً معلوماً لا فرق الساعة وحده، وتحقق من الوجهة والتعافي. مثل الخمول في التنبيه كيلا يعد هدوء العمل توقفاً.
2. لماذا يمنع إجراء التحويل الأصل القديم قبل قبول كتابة النسخة المرقاة؟
اعرض الحل المشروح
إذا كتب الاثنان نشأ تاريخان لا يتصالحان تلقائياً. أثبت سلطة كتابة واحدة وحد التعافي ووجه العملاء، وخطط إعادة القديم من مصدر متسق. لا يقرر نجاح فحص العملية ملكية البيانات الآمنة.
أهم ما تعلمته
- الاستلام والتثبيت والإعادة وحداثة القراءة حدود منفصلة.
- تحتاج المزامنة احتفاظاً ومنع كتابة وتصميم تعافٍ مستقل.