Englishworlber.sa
علم المملكة العربية السعوديةشركة سعودية · الرياض

دليل تقني

مستقبل نسخ احتياطي PostgreSQL: غوص عميق في pg_hardstorage

استكشف بنية النسخ الاحتياطي في pg_hardstorage، والتثبيت، وتدفّق WAL المستمر، وتمارين الاستعادة، والمقايضات العملية مقارنةً بـ pgBackRest وBarman.

٢٤ سبتمبر ٢٠٢٦ · 3 دقيقة قراءة

Official pg_hardstorage logo and Worlber PostgreSQL recovery editorial graphic

نسخة احتياطية من PostgreSQL لا تكون مفيدة إلا إذا كانت النسخة الأساسية سليمة، وكان WAL المطلوب متاحًا، وتم اختبار الاستعادة.pg_hardstorageتعالج هذه المشكلة عبر ثنائي Go ثابت يتصل عبر بروتوكول التكرار في PostgreSQL. يمكن تشغيله على مضيف نسخ احتياطي منفصل دون الحاجة إلى وصول shell أو وكيل على خادم قاعدة البيانات.

WAL مستمر، مع نسخ أساسية كمراسي

عملية دائمة pg_hardstorage wal streamتستقبل WAL عبر فتحة تكرار فيزيائية. توفر النسخ الأساسية المجدولة نقاط بداية متسقة للاستعادة؛ بينما يحمل التدفق التغييرات إلى الأمام. هذه عمليات منفصلة تستهدف المستودع نفسه. الإشراف على المُبثّ، ومراقبة التأخير وWAL المحفوظ، وأخذ نسخ أساسية دورية هي متطلبات تشغيلية، وليست نتائج اختيارية لتشغيل init.

يخزّن المستودع المقاطع حسب تجزئة المحتوى. يمنع الاستنساخ القائم على FastCDC تخزين المحتوى المتطابق مرارًا وتكرارًا عبر النسخ الأساسية، بينما تبقى كل نسخة أساسية عادية قابلة للاستعادة بشكل مستقل دون سلسلة تزايدية. كما يتم دعم النسخ التزايدية في PostgreSQL 17+ كـ خيار، لذا فإن عبارة «لا توجد سلاسل نسخ» تصف نموذج النسخ الكامل القائم على عناوين المحتوى الافتراضي، وليس حظرًا مطلقًا.

التثبيت وأخذ نسخة احتياطية أولى

يقدّم صفحة التثبيت الرسمية حاليًا البناء من المصدر كالمسار المتاح، ويتطلب Go 1.26 أو أحدث:

git clone https://github.com/cybertec-postgresql/pg_hardstorage

cd pg_hardstorage

make build

sudo make install

pg_hardstorage version

يُعلن أيضًا README الخاص بالمشروع عن مُثبّت curl وHomebrew tap، لكن صفحة التثبيت تقول إن الـ tap لم يُعبّأ بعد. تحقق من قناة الإصدار قبل استخدامه في الإنتاج؛ لا تُمرّر سكربتًا بعيدًا غير مفحوص إلى shell.

يحتاج خادم PostgreSQL 15–18 المُدار ذاتيًا إلى دور بصلاحية REPLICATION، وwal_level مضبوط على replica أو أعلى، وإتاحة وصول شبكي إلى نقطة نهاية التكرار الخاصة به. يُظهر دليل البدء السريع نسخة احتياطية أولى غير تفاعلية:

pg_hardstorage init --yes \

--deployment prod \

--pg-connection "host=10.0.0.10 user=replicator dbname=postgres" \

--repo file:///srv/pg-backups/prod

للحماية المستمرة، شغّل مُبثّ WAL تحت مُشرِف وجدول النسخ الأساسية. على سبيل المثال:

pg_hardstorage wal stream prod \

--pg-connection "host=10.0.0.10 user=replicator dbname=postgres" \

--repo file:///srv/pg-backups/prod


pg_hardstorage backup prod \

--pg-connection "host=10.0.0.10 user=replicator dbname=postgres" \

--repo file:///srv/pg-backups/prod

تستخدم هذه الأوامر قيمًا مؤقتة. اضبط المصادقة بشكل آمن بدلاً من وضع كلمة مرور حقيقية على سطر أمر shell.

تحقّق من قاعدة البيانات واستعدّها واختبرها

يتحقق التحقق من المستودع من التواقيع وجداول تجزئة المقاطع. ثم يتحقق تمرين الاستعادة مما إذا كانت البايتات تشكّل قاعدة بيانات عاملة:

pg_hardstorage verify prod latest --repo file:///srv/pg-backups/prod

pg_hardstorage restore prod latest \

--repo file:///srv/pg-backups/prod \

--target /var/tmp/restore-drill

ابدأ مثيل PostgreSQL معزولًا على المجلد المُستعاد وتأكد من البيانات التي تحتاجها. لاستعادة نقطة في الزمن، يوثّق دليل البنية المعمارية الأمر --to 'YYYY-MM-DD HH:MM:SS+00' جنبًا إلى جنب مع --target؛ اختر طابعًا زمنيًا مغطًّى بنسخة الأساس الاحتياطية وسجلات WAL المحفوظة. لا تفترض أن نجاح فحص المستودع وحده يثبت أن قاعدة البيانات ستنطلق.

كيف يقارن

  • pgBackRest: خيار ناضج مع سلاسل تفاضلية وتراكمية واستخدام واسع في الإنتاج. تكامله النموذجي عبر المضيف/SSH أو الأرشيف يختلف عن نموذج عميل التكرار عن بُعد الخاص بـ pg_hardstorage.

  • Barman:يدعم خادم نسخ احتياطي خارجي وخيارات البث (streaming) في PostgreSQL. إنه ليس "عبر SSH فقط"؛ بل يحدد وضع النشر نوع الوصول إلى المضيف المطلوب.

  • pg_hardstorage:تزيل النسخ الاحتياطي الكامل العادي المعتمد على المحتوى (content-addressed) الاعتماد على قوائم النسخ الاحتياطي السابقة. يناسب نموذج التكرار (replication) فقط قواعد البيانات المُدارة ذاتيًا حيث يملك نظام النسخ الاحتياطي وصولًا إلى الشبكة دون وصول إلى shell على مضيف قاعدة البيانات. وهو أحدث، ويقر مقارنة المشروع نفسه بسجل إنتاج الأطول لـ pgBackRest.

تقع الخدمات المُدارة مثل RDS وCloud SQL التي لا تُظهر واجهة التكرار المادي المطلوبة وBASE_BACKUP خارج نطاق الدعم لـ pg_hardstorage. تم توثيق آليات التعافي الواعي بـ Patroni، لكن التعافي الخالي من الفجوات لا يزال يعتمد على تكوين الخانات (slots) والمراقبة بشكل صحيح؛ أثبت ذلك من خلال مناورة تعافي واستعادة.

تقييم عملي

نفّذ نسخة احتياطية واستعادة مُوقّتة مقابل نسخة PostgreSQL مُدارة ذاتيًا قابلة للتخلص منها. قِس مدة الاستعادة، وتأكد من تغطية WAL، وجرّب إعادة تشغيل البث (streamer) والتعافي إذا كان ذلك مناسبًا، ثم راجع أذونات المستودع والاحتفاظ. تجعل هذه الفحوصات الوعد المعماري قابلًا للاختبار في بيئتك الخاصة.

خطّط لاستعادة PostgreSQL مع Worlber

يمكن لـ Worlber المساعدة في تصميم استراتيجية للنسخ الاحتياطي والتعافي الفوري (PITR) لقاعدة بيانات PostgreSQL مُدارة ذاتيًا، وتكوين حماية مستمرة لـ WAL، وتنفيذ مناورات استعادة مقابل أهداف التعافي الخاصة بك. تحدث إلى Worlber حول بيئة PostgreSQL الخاصة بك.

المصادر

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

تحدث مع مهندسي Worlber

أرسل لنا بيئتك وهدفك. سنوضح لك ما يصلح، وما لا يصلح، والخطوة الآمنة التالية.

contactus@worlber.com

مستقبل نسخ احتياطي PostgreSQL: غوص عميق في pg_hardstorage | Worlber Insights