نصائح تقنية: كيف يمكنني عمل نسخة احتياطية واستعادة قاعدة بيانات Postgres؟
كاران سينغ
19/06/2013
البريد الإلكتروني
1 min read

النقاط الرئيسية
يمكن أن تستهدف نسخ احتياطية PostgreSQL جدولًا واحدًا، قاعدة بيانات واحدة، أو جميع قواعد البيانات اعتمادًا على احتياجاتك.
pg_dumpينشئ ملف نصي بـ SQL يحتوي على DDL والبيانات اللازمة لإعادة إنشاء الجدول أو قاعدة البيانات المستهدفة.pg_dumpallيقوم بعمل نسخ احتياطية لـ كل قاعدة بيانات على قطعة Postgres.يتم الاستعادة باستخدام
psql، الذي ينفذ الدفعة SQL مرة أخرى في قاعدة البيانات المستهدفة.تتطلب الاستعادة على مستوى الجدول التأكد من أن الجدول لا existe بالفعل لتجنب النزاعات.
عند عمل نسخ احتياطية لجداول فردية، كن واعيًا لـ الاعتمادات العلائقية.
يمكن أخذ الدفعات من المحلي واستعادتها إلى قطع Postgres عن بُعد.
تشمل النسخ الاحتياطية أوامر
CREATE،ALTER، وCOPYاعتمادًا على ما يتم تصديره.تعتمد استراتيجية النسخ الاحتياطي المناسبة على فهم علاقات الجدول، واستخدام المخطط، وبيئات النشر.
تأكد دائمًا من سلامة البيانات عن طريق أخذ النسخ الاحتياطية التي تشمل الجداول المرجعية عند الضرورة.
أهم النقاط في الأسئلة والأجوبة
ماذا يفعل pg_dump بالضبط؟
pg_dumpيولد ملف SQL نصي يحتوي على المجموعة الكاملة من الأوامر اللازمة لإعادة إنشاء جدول أو قاعدة بيانات تمامًا كما كانت موجودة في وقت النسخ الاحتياطي.هل يمكنني عمل نسخة احتياطية لجدول واحد فقط بدلاً من قاعدة بيانات كاملة؟
نعم. استخدم
pg_dump --table TABLENAMEلتصدير جدول محدد. إذا كانت هناك جداول بنفس الاسم موجودة عبر المخططات، استخدم--schemaلتحديد المخطط الصحيح.هل يجب أن أقلق بشأن الجداول ذات الصلة عند إجراء نسخ احتياطي لجدول واحد؟
بالتأكيد. PostgreSQL هو نظام قاعدة بيانات علائقية، لذا قد تشير جداول أخرى إلى الجدول الذي تقوم بنسخه احتياطيًا. إذا قمت باستعادة جدول واحد فقط دون الجداول ذات الصلة، قد تكسر سلامة المراجع.
كيف يمكنني نسخ قاعدة البيانات بالكامل احتياطيًا؟
قم بتشغيل أمر مثل:
pg_dump -U <user> <database> -f <output.sql>هذا يقوم بتصدير جميع الجداول وتعريفات المخطط والفهارس والبيانات لتلك قاعدة البيانات.
ماذا تفعل pg_dumpall؟
pg_dumpallيقوم بعمل نسخة احتياطية من كل قاعدة بيانات على الخادم في ملف SQL واحد. إنه مفيد عند نقل أو أخذ لقطة من مثيل Postgres بالكامل.هل يمكنني استعادة جدول إلى قاعدة بيانات موجودة؟
نعم. استخدم
psql -U <user> -f <file.sql> <database>.ولكن تأكد من أن الجدول لاexists بالفعل — وإلا ستواجه أخطاء "يتمثل بالفعل" أثناء الاستعادة.
ماذا يحدث خلال استعادة قاعدة البيانات بالكامل؟
تعمل ملف الاستعادة:
إنشاء جدولتعديل جدولنسخ(لبيانات الجدول)
إعادة قاعدة البيانات إلى حالتها الدقيقة في وقت التفريغ.
هل يمكنني الاستعادة إلى خادم مختلف عن الخادم الذي قمت بالنسخ الاحتياطي منه؟
نعم. النسخ الاحتياطية قابلة للنقل. يمكنك أخذ نسخة احتياطية محليًا واستعادتها إلى مثيل Postgres بعيد، بشرط أن تكون الإصدارات متوافقة.
هل يؤثر pg_dump على قاعدة البيانات النشطة؟
لا. يعمل من خلال استعلامات SQL ولا يؤمن قاعدة البيانات بأكملها. يأخذ بشكل آمن لقطة متسقة.
كيف يمكنني استعادة جميع قواعد البيانات من ملف pg_dumpall؟
استخدم:
psql -U <user> -f all_dump.sqlهذا يعيد إنشاء كل قاعدة بيانات موجودة في النسخة الاحتياطية.



