إعداد فتحات الفشل في بوستجريس-١٧

تقدم PostgreSQL 17 قنوات التحويل التي تعزز إعدادات التوافر العالي. تضمن قناة النسخ المتماثل أن تظل البيانات موثوقة ومتسقة بين العقد أثناء النسخ المتماثل، بينما تضمن قناة التحويل التناسق بين العقد، تحديدًا أثناء وبعد حدوث التحويل.

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

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

لماذا تعتبر قنوات التحويل مهمة من منظور تاريخي

التحديات في PostgreSQL 15

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

تحسينات في بوستجريسكيول 16

فكرة الترميز المنطقي الحدى

بوستجريسكيول 16 قدم ميزة تُدعى الترميز المنطقي الحدى على الخوادم الاحتياطيه:

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

بوستجريسكيول 17: محدد القواعد – فتحات التحويل

  • فتحات التحويل: تقديم فتحات التحويل في بوستجريسكيول 17 يقضي على حاجة التدخل اليدوي عن طريق مزامنة فتحات النسخ المنطقية تلقائيًا بين الخوادم الأساسية والاحتياطية.
  • التزامن التلقائي: يضمن عامل التزامن الجديد للفتحات الممكنة للتحويل (تحويل = صحيح) دائمًا تزامنها، حتى عندما تكون العقدة الأساسية نشطة.
  • انتقال سلس: عند الانتقال التلقائي، يمكن للخادم الاحتياطي أن يتولى السيطرة كرئيسي دون فقدان أي فتحات تكرار، مما يضمن عدم فقدان البيانات والاستمرار في عملية التكرار.

ميزة

PostgreSQL 15

PostgreSQL 16

PostgreSQL 17

التكرار المنطقي

نعم

نعم

نعم

تزامن الفتحات التلقائي

لا

فك ترميز منطقي أدنى على الخادم الاحتياطي

فتحات الانتقال الكاملة

معالجة الانتقال التلقائي

الحاجة إلى تدخل يدوي

فتحات مُحضّرة مُسبقًا على الخادم الاحتياطي

فتحات الانتقال التلقائية

مزامنة الفتحات مع الخادم الاحتياطي

غير مدعوم

الحد الأدنى، يتطلب تكوين

تلقائي مع عامل slotsync

توفر الاتساق العالي للتكرار المنطقي

محدود

محسن بفك التشفير الأدنى

سلس مع فتح الفجوات التلقائي

إنشاء مجموعة عالية التوفر مع فتح الفجوات

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

  1. العقدة أ (الخادم الأساسي)
  2. العقدة ب (الاحتياطي الفعلي)
  3. العقدة ج (المشترك المنطقي)

المتطلبات

قبل أن نبدأ، تأكد أن لديك:

  • تم تثبيت PostgreSQL 17 على العقدات الثلاثة.
  • وصول SSH بدون كلمة مرور بين كل عقدة وأخرى.
  • فهم أساسي لـ PostgreSQL، تكرار PostgreSQL، وملفات تكوين PostgreSQL .

الخطوة 1: تكوين العقدة الأساسية (العقدة أ)

1.1 قم بتهيئة العنقود على NodeA

بعد تثبيت PostgreSQL على العقدة الرئيسية، قم بتهيئة العنقود؛ يمكنك استخدام الأوامر التالية:

Shell

 

1.2 قم بتكوين النسخ المتماثل في ملف postgresql.conf

بعد تهيئة العنقود، قم بتحرير ملف postgresql.conf، الموجود بشكل افتراضي في /home/pgedge/nodeA/postgresql.conf. اضبط قيم المعلمات التالية:

Shell

 

1.3 تحديث ملف pg_hba.conf للسماح بالوصول للنسخ المتماثل

يدير ملف pg_hba.conf مصادقة العملاء لخادم PostgreSQL. أضف الإدخال التالي إلى /home/pgedge/nodeA/pg_hba.conf لضمان الوصول لمستخدم النسخ المتماثل:

Shell

 

ثم، قم بإعادة تحميل التكوين:

Shell

 

1.4 إنشاء مستخدم نسخ متماثل

ثم، قم بتسجيل الدخول إلى PostgreSQL وأنشئ مستخدم النسخ المتماثل:

Shell

 

SQL

 

1.5 إنشاء جدول وإعداد نشر

بعد ذلك، ستحتاج إلى إنشاء جدول وإنشاء نشر مرتبط:

SQL

 

الخطوة 2: تكوين النسخة الاحتياطية الفعلية (NodeB)

2.1 تهيئة NodeB

بعد تثبيت PostgreSQL، قم بتهيئة NodeB:

Shell

 

2.1 إنشاء نسخة احتياطية أساسية

ثم، استخدم pg_basebackup لأخذ نسخة احتياطية من العنقود:

Shell

 

2.2 تكوين postgresql.conf على Node-B

قم بتعديل ملف postgresql.conf (الموجود في /home/pgedge/nodeB/postgresql.conf)، ضبط:

Shell

 

2.3 تمكين مزامنة فتحات الفشل

استخدم عميل psql لتسجيل الدخول إلى NodeB:

Shell

 

ثم، استخدم البيانات التالية لتكوين التكرار لـ NodeB:

SQL

 

اخرج من عميل psql وأعد تشغيل NodeB:

Shell

 

2.4 التحقق من مزامنة الفتحات

ثم، أعد الاتصال بـ NodeB باستخدام psql وتحقق من أن الفتحات متزامنة:

SQL

 

الخطوة 3: إعداد المشترك المنطقي (NodeC)

3.1 تهيئة العنقود وتكوين NodeC

بعد تثبيت PostgreSQL، قم بتهيئة العنقود؛ يمكنك استخدام الأوامر التالية:

Shell

 

ثم، عدل ملف /home/pgedge/nodeC/postgresql.conf، وضبط قيم المعلمات التالية:

Shell

 

3.2 إنشاء اشتراك على NodeC

استخدم الأمر التالي لإنشاء اشتراك على NodeC:

Shell

 

الخطوة 4: محاكاة الفشل وضمان الاستمرارية

يمكنك استخدام الأوامر التالية لمحاكاة فشل النقل والتأكد من استمرارية التكرار وحفظ سلامة البيانات.

4.1 محاكاة الفشل

استخدم الأوامر التالية لمحاكاة فشل NodeA، تليها الترقية من الوضع الاحتياطي إلى الأساسي لـ NodeB:

Shell

 

4.2 تحديث الاشتراك على NodeC

بعد الترويج لـ nodeB، قم بتسجيل الدخول إلى NodeC وقم بتحديث الاتصال ليعكس أن NodeB الآن هو العقدة الأساسية:

SQL

 

4.3 التحقق من استمرارية البيانات

لاختبار النسخ، استخدم psql لتسجيل الدخول إلى Node-B (الآن هو الأساسي):

SQL

 

تحقق من النسخ على Node-C:

SQL

 

الاستنتاج

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

من خلال تحسين التكوينات واستغلال إمكانيات PostgreSQL 17 الجديدة، يمكنك إنشاء بنية بيانات قاعدة بيانات قوية وفعالة لتطبيقاتك الحيوية.

Source:
https://dzone.com/articles/setting-up-failover-slots-in-postgresql-17