نصائح تقنية: كيف يمكنني نسخ قاعدة بيانات Postgres احتياطيًا واستعادتها؟

كران سينغ

19‏/06‏/2013

البريد الإلكتروني

1 min read

نصائح تقنية: كيف يمكنني نسخ قاعدة بيانات Postgres احتياطيًا واستعادتها؟

النقاط الرئيسية

    • يمكن أن تستهدف النسخ الاحتياطية لـ PostgreSQL جدولًا واحدًا أو قاعدة بيانات واحدة أو جميع قواعد البيانات اعتمادًا على احتياجاتك.

    • pg_dump ينشئ ملف نصي SQL يحتوي على DDL والبيانات اللازمة لإعادة إنشاء الجدول أو قاعدة البيانات المستهدفة.

    • pg_dumpall يحتفظبنُسخ احتياطية لجميع قواعد البيانات على مثيل Postgres.

    • تتم الاستعادة باستخدام psql، والذي ينفذ تفريغ SQL مرة أخرى في قاعدة البيانات المستهدفة.

    • تتطلب عمليات الاستعادة على مستوى الجدول ضمان أن الجدول غير موجود مسبقًا لتجنب النزاعات.

    • عند نسخ جداول فردية احتياطيًا، كن حذرًا من التبعيات العلائقية.

    • يمكن أخذ التفريغات من محلية واستعادتها إلى مثيلات 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>.

    لكن تأكد من أن الجدول غير موجود بالفعل — وإلا فستحصل على أخطاء "موجود بالفعل" أثناء الاستعادة.

  • ماذا يحدث أثناء استعادة قاعدة البيانات بالكامل؟

    ملف الاستعادة يعمل:

    • CREATE TABLE

    • ALTER TABLE

    • COPY (لبيانات الجدول)
      إعادة قاعدة البيانات إلى حالتها بالضبط في وقت الإسقاط.

  • هل يمكنني الاستعادة إلى خادم مختلف عن الذي قمت بالنسخ الاحتياطي منه؟

    نعم. النُسخ الاحتياطية قابلة للنقل. يمكنك أخذ نسخة احتياطية محليًا واستعادتها إلى مثيل Postgres بعيد، بشرط أن تكون الإصدارات متوافقة.

  • هل يؤثر pg_dump على قاعدة البيانات التي تعمل؟

    لا. إنه يعمل عن طريق استعلامات SQL ولا يقفل قاعدة البيانات بأكملها. إنه يلتقط بسلام لقطة متسقة.

  • كيف يمكنني استعادة جميع قواعد البيانات من ملف pg_dumpall؟

    استخدام:

    psql -U <user> -f all_dump.sql

    هذا يعيد إنشاء كل قاعدة بيانات موجودة في التفريغ.

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

هذا مستند 'كيفية' يقدم أوامر أمثلة فقط، كيف يتم ذلك يعتمد بشكل كامل على الشخص الذي يقوم بذلك والحالات الخاصة. يجب دائمًا الحفاظ على سلامة البيانات التي تحاول عمل نسخ احتياطي لها. يعد النسخ الاحتياطي لقاعدة البيانات بأكملها خيارًا آمنًا دائمًا، ولكن عند النسخ الاحتياطي لجداول محددة يجب الحذر.

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

هذا مستند 'كيفية' يقدم أوامر أمثلة فقط، كيف يتم ذلك يعتمد بشكل كامل على الشخص الذي يقوم بذلك والحالات الخاصة. يجب دائمًا الحفاظ على سلامة البيانات التي تحاول عمل نسخ احتياطي لها. يعد النسخ الاحتياطي لقاعدة البيانات بأكملها خيارًا آمنًا دائمًا، ولكن عند النسخ الاحتياطي لجداول محددة يجب الحذر.

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

هذا مستند 'كيفية' يقدم أوامر أمثلة فقط، كيف يتم ذلك يعتمد بشكل كامل على الشخص الذي يقوم بذلك والحالات الخاصة. يجب دائمًا الحفاظ على سلامة البيانات التي تحاول عمل نسخ احتياطي لها. يعد النسخ الاحتياطي لقاعدة البيانات بأكملها خيارًا آمنًا دائمًا، ولكن عند النسخ الاحتياطي لجداول محددة يجب الحذر.

تفريغ SQL/pg_dump:

الفكرة وراء طريقة SQL-dump هي إنشاء ملف نصي يحتوي على أوامر SQL بحيث عندما يتم إدخالها مرة أخرى إلى الخادم، ستقوم بإعادة إنشاء قاعدة البيانات في نفس الحالة كما كانت في وقت التفريغ. يوفر PostgreSQL برنامج الأداة pg_dump لهذا الغرض.

يُعد pg_dump أداة فعالة وشاملة لأخذ نسخ احتياطية من قاعدة بيانات Postgres واستخدام النسخ الاحتياطية لاستعادة قاعدة البيانات. ومع ذلك، فإنه لا يقتصر فقط على قاعدة البيانات. يمكننا استخدام pg_dump لأخذ نسخ احتياطية من الجداول ومن ثم استخدامها لاستعادة الجداول الفردية كذلك. باستخدام pg_dump يمكنك أخذ نسخة احتياطية من قاعدة البيانات المحلية واستعادتها على قاعدة بيانات بعيدة.

الفكرة وراء طريقة SQL-dump هي إنشاء ملف نصي يحتوي على أوامر SQL بحيث عندما يتم إدخالها مرة أخرى إلى الخادم، ستقوم بإعادة إنشاء قاعدة البيانات في نفس الحالة كما كانت في وقت التفريغ. يوفر PostgreSQL برنامج الأداة pg_dump لهذا الغرض.

يُعد pg_dump أداة فعالة وشاملة لأخذ نسخ احتياطية من قاعدة بيانات Postgres واستخدام النسخ الاحتياطية لاستعادة قاعدة البيانات. ومع ذلك، فإنه لا يقتصر فقط على قاعدة البيانات. يمكننا استخدام pg_dump لأخذ نسخ احتياطية من الجداول ومن ثم استخدامها لاستعادة الجداول الفردية كذلك. باستخدام pg_dump يمكنك أخذ نسخة احتياطية من قاعدة البيانات المحلية واستعادتها على قاعدة بيانات بعيدة.

الفكرة وراء طريقة SQL-dump هي إنشاء ملف نصي يحتوي على أوامر SQL بحيث عندما يتم إدخالها مرة أخرى إلى الخادم، ستقوم بإعادة إنشاء قاعدة البيانات في نفس الحالة كما كانت في وقت التفريغ. يوفر PostgreSQL برنامج الأداة pg_dump لهذا الغرض.

يُعد pg_dump أداة فعالة وشاملة لأخذ نسخ احتياطية من قاعدة بيانات Postgres واستخدام النسخ الاحتياطية لاستعادة قاعدة البيانات. ومع ذلك، فإنه لا يقتصر فقط على قاعدة البيانات. يمكننا استخدام pg_dump لأخذ نسخ احتياطية من الجداول ومن ثم استخدامها لاستعادة الجداول الفردية كذلك. باستخدام pg_dump يمكنك أخذ نسخة احتياطية من قاعدة البيانات المحلية واستعادتها على قاعدة بيانات بعيدة.

كيفية نسخ قاعدة بيانات Postgres احتياطيًا:

نسخ احتياطي لجدول Postgres:

$ /opt/msys/3rdParty/bin/pg_dump–table maincontrol.orgs -U ecuser pe -f ms_table.sql

الأمر أعلاه هو مثال لكيفية أخذ نسخة احتياطية من جدول محدد من قاعدة بيانات Postgres. باستخدام الأمر أعلاه نقوم بنسخ الجدول 'orgs' في المخطط 'maincontrol' من قاعدة البيانات 'pe' إلى ملف ms_table.sql. لنسخ جدول محدد، استخدم الخيار –table TABLENAME في أمر pg_dump. إذا كانت هناك أسماء جداول متشابهة في مخططات مختلفة، فاستخدم الخيار –schema SCHEMANAME.

  1. نسخ احتياطي لقاعدة بيانات Postgres محددة:

    $ /opt/msys/3rdParty/bin/pg_dump -U ecuser pe -f pe_dump.sql

    هذا مثال لأخذ نسخة احتياطية من قاعدة بيانات Postgres محددة. باستخدام الأمر أعلاه نقوم بنسخ قاعدة بيانات Message Central 'pe' إلى ملف pe_dump.sql. يحتوي ملف النسخ الاحتياطي على أوامر لإنشاء الجداول وتعديلها ونسخها لجميع الجداول في قاعدة البيانات 'pe'.

  2. نسخ احتياطي لجميع قواعد بيانات Postgres:

    $ /opt/msys/3rdParty/bin/pg_dumpall -U ecuser> all_dump.sql

    يمكنك أخذ نسخة احتياطية لجميع قواعد البيانات باستخدام أمر pg_dumpall. سيقوم الأمر المذكور أعلاه بإنشاء نسخة لجميع قواعد البيانات الموجودة على مثيل Postgres الذي يعمل على الخادم المحدد. لعرض جميع قواعد البيانات التي تم نسخها احتياطيًا، استخدم الأمر grep “^[\]connect” all.sql.

نسخ احتياطي لجدول Postgres:

$ /opt/msys/3rdParty/bin/pg_dump–table maincontrol.orgs -U ecuser pe -f ms_table.sql

الأمر أعلاه هو مثال لكيفية أخذ نسخة احتياطية من جدول محدد من قاعدة بيانات Postgres. باستخدام الأمر أعلاه نقوم بنسخ الجدول 'orgs' في المخطط 'maincontrol' من قاعدة البيانات 'pe' إلى ملف ms_table.sql. لنسخ جدول محدد، استخدم الخيار –table TABLENAME في أمر pg_dump. إذا كانت هناك أسماء جداول متشابهة في مخططات مختلفة، فاستخدم الخيار –schema SCHEMANAME.

  1. نسخ احتياطي لقاعدة بيانات Postgres محددة:

    $ /opt/msys/3rdParty/bin/pg_dump -U ecuser pe -f pe_dump.sql

    هذا مثال لأخذ نسخة احتياطية من قاعدة بيانات Postgres محددة. باستخدام الأمر أعلاه نقوم بنسخ قاعدة بيانات Message Central 'pe' إلى ملف pe_dump.sql. يحتوي ملف النسخ الاحتياطي على أوامر لإنشاء الجداول وتعديلها ونسخها لجميع الجداول في قاعدة البيانات 'pe'.

  2. نسخ احتياطي لجميع قواعد بيانات Postgres:

    $ /opt/msys/3rdParty/bin/pg_dumpall -U ecuser> all_dump.sql

    يمكنك أخذ نسخة احتياطية لجميع قواعد البيانات باستخدام أمر pg_dumpall. سيقوم الأمر المذكور أعلاه بإنشاء نسخة لجميع قواعد البيانات الموجودة على مثيل Postgres الذي يعمل على الخادم المحدد. لعرض جميع قواعد البيانات التي تم نسخها احتياطيًا، استخدم الأمر grep “^[\]connect” all.sql.

نسخ احتياطي لجدول Postgres:

$ /opt/msys/3rdParty/bin/pg_dump–table maincontrol.orgs -U ecuser pe -f ms_table.sql

الأمر أعلاه هو مثال لكيفية أخذ نسخة احتياطية من جدول محدد من قاعدة بيانات Postgres. باستخدام الأمر أعلاه نقوم بنسخ الجدول 'orgs' في المخطط 'maincontrol' من قاعدة البيانات 'pe' إلى ملف ms_table.sql. لنسخ جدول محدد، استخدم الخيار –table TABLENAME في أمر pg_dump. إذا كانت هناك أسماء جداول متشابهة في مخططات مختلفة، فاستخدم الخيار –schema SCHEMANAME.

  1. نسخ احتياطي لقاعدة بيانات Postgres محددة:

    $ /opt/msys/3rdParty/bin/pg_dump -U ecuser pe -f pe_dump.sql

    هذا مثال لأخذ نسخة احتياطية من قاعدة بيانات Postgres محددة. باستخدام الأمر أعلاه نقوم بنسخ قاعدة بيانات Message Central 'pe' إلى ملف pe_dump.sql. يحتوي ملف النسخ الاحتياطي على أوامر لإنشاء الجداول وتعديلها ونسخها لجميع الجداول في قاعدة البيانات 'pe'.

  2. نسخ احتياطي لجميع قواعد بيانات Postgres:

    $ /opt/msys/3rdParty/bin/pg_dumpall -U ecuser> all_dump.sql

    يمكنك أخذ نسخة احتياطية لجميع قواعد البيانات باستخدام أمر pg_dumpall. سيقوم الأمر المذكور أعلاه بإنشاء نسخة لجميع قواعد البيانات الموجودة على مثيل Postgres الذي يعمل على الخادم المحدد. لعرض جميع قواعد البيانات التي تم نسخها احتياطيًا، استخدم الأمر grep “^[\]connect” all.sql.

كيفية استعادة قاعدة بيانات Postgres

  1. استعادة جدول Postgres :

    $ /opt/msys/3rdParty/bin/psql -U ecuser -f ms_table.sql pe

    سيقوم الأمر أعلاه بتثبيت الجدول الذي تم نسخه احتياطياً في ملف ms_table.sql إلى قاعدة البيانات ‘pe’. تأكد من أن هذا الجدول غير موجود بالفعل، أو ستواجه عددًا من الأخطاء ‘موجود بالفعل’. يقوم هذا الأمر بإنشاء الجدول وتصدير جميع البيانات إلى الجدول الذي تم إنشاؤه حديثًا.

  2. استعادة قاعدة بيانات postgres :

    $ /opt/msys/3rdParty/bin/psql -U ecuser -d pe -f pe_dump.sql

    مماثل لاستعادة الجدول، يمكننا استخدام الأمر أعلاه لاستعادة قاعدة البيانات بالكامل. هنا نقوم باستعادة قاعدة البيانات ‘pe’ باستخدام الملف pe_dump.sql الذي كنا قد أنشأناه أثناء نسخ قاعدة البيانات احتياطياً في قسم النسخ الاحتياطي أعلاه.

  3. استعادة جميع قواعد البيانات :

    $ /opt/msys/3rdParty/bin/psql -u ecuser -f all_dump.sql

    استعادة جميع قواعد البيانات باستخدام الأمر أعلاه. كان ‘all_dump.sql’ هو الملف الذي تم إنشاؤه باستخدام pg_dumpall. سيعطينا الأمر أعلاه جميع قواعد بيانات Postgres في الحالة نفسها التي كانت عليها عندما تم أخذ النسخة الاحتياطية من خادم قاعدة البيانات الأصلي.

  1. استعادة جدول Postgres :

    $ /opt/msys/3rdParty/bin/psql -U ecuser -f ms_table.sql pe

    سيقوم الأمر أعلاه بتثبيت الجدول الذي تم نسخه احتياطياً في ملف ms_table.sql إلى قاعدة البيانات ‘pe’. تأكد من أن هذا الجدول غير موجود بالفعل، أو ستواجه عددًا من الأخطاء ‘موجود بالفعل’. يقوم هذا الأمر بإنشاء الجدول وتصدير جميع البيانات إلى الجدول الذي تم إنشاؤه حديثًا.

  2. استعادة قاعدة بيانات postgres :

    $ /opt/msys/3rdParty/bin/psql -U ecuser -d pe -f pe_dump.sql

    مماثل لاستعادة الجدول، يمكننا استخدام الأمر أعلاه لاستعادة قاعدة البيانات بالكامل. هنا نقوم باستعادة قاعدة البيانات ‘pe’ باستخدام الملف pe_dump.sql الذي كنا قد أنشأناه أثناء نسخ قاعدة البيانات احتياطياً في قسم النسخ الاحتياطي أعلاه.

  3. استعادة جميع قواعد البيانات :

    $ /opt/msys/3rdParty/bin/psql -u ecuser -f all_dump.sql

    استعادة جميع قواعد البيانات باستخدام الأمر أعلاه. كان ‘all_dump.sql’ هو الملف الذي تم إنشاؤه باستخدام pg_dumpall. سيعطينا الأمر أعلاه جميع قواعد بيانات Postgres في الحالة نفسها التي كانت عليها عندما تم أخذ النسخة الاحتياطية من خادم قاعدة البيانات الأصلي.

  1. استعادة جدول Postgres :

    $ /opt/msys/3rdParty/bin/psql -U ecuser -f ms_table.sql pe

    سيقوم الأمر أعلاه بتثبيت الجدول الذي تم نسخه احتياطياً في ملف ms_table.sql إلى قاعدة البيانات ‘pe’. تأكد من أن هذا الجدول غير موجود بالفعل، أو ستواجه عددًا من الأخطاء ‘موجود بالفعل’. يقوم هذا الأمر بإنشاء الجدول وتصدير جميع البيانات إلى الجدول الذي تم إنشاؤه حديثًا.

  2. استعادة قاعدة بيانات postgres :

    $ /opt/msys/3rdParty/bin/psql -U ecuser -d pe -f pe_dump.sql

    مماثل لاستعادة الجدول، يمكننا استخدام الأمر أعلاه لاستعادة قاعدة البيانات بالكامل. هنا نقوم باستعادة قاعدة البيانات ‘pe’ باستخدام الملف pe_dump.sql الذي كنا قد أنشأناه أثناء نسخ قاعدة البيانات احتياطياً في قسم النسخ الاحتياطي أعلاه.

  3. استعادة جميع قواعد البيانات :

    $ /opt/msys/3rdParty/bin/psql -u ecuser -f all_dump.sql

    استعادة جميع قواعد البيانات باستخدام الأمر أعلاه. كان ‘all_dump.sql’ هو الملف الذي تم إنشاؤه باستخدام pg_dumpall. سيعطينا الأمر أعلاه جميع قواعد بيانات Postgres في الحالة نفسها التي كانت عليها عندما تم أخذ النسخة الاحتياطية من خادم قاعدة البيانات الأصلي.

أخبار أخرى

اقرأ المزيد من هذه الفئة

A person is standing at a desk while typing on a laptop.

المنصة الأصلية للذكاء الاصطناعي التي تتوسع مع عملك.

A person is standing at a desk while typing on a laptop.

المنصة الأصلية للذكاء الاصطناعي التي تتوسع مع عملك.

A person is standing at a desk while typing on a laptop.

المنصة الأصلية للذكاء الاصطناعي التي تتوسع مع عملك.