إنشاء نسخة احتياطية من قاعدة بيانات Discourse وتنزيلها واستعادتها

:bookmark: يوفر هذا الدليل تعليمات خطوة بخطوة لإنشاء نسخة احتياطية من قاعدة بيانات Discourse وتنزيلها واستعادتها.

:person_raising_hand: مستوى المستخدم المطلوب: مسؤول

يسمح Discourse لمسؤولي الموقع بإنشاء نسخة من قاعدة بيانات الموقع وتنزيلها. يمكن بعد ذلك تحميل النسخة الاحتياطية واستعادتها على أي منتدى Discourse.

تتضمن نسخ Discourse الاحتياطية قاعدة بيانات الموقع بالكامل، والتي تحتوي على كل شيء على الموقع: المواضيع، والمنشورات، والمستخدمون، والمجموعات، والإعدادات، والسمات، وما إلى ذلك. اعتمادًا على كيفية إنشاء ملف النسخ الاحتياطي، قد يتضمن عمليات التحميل أو قد لا يتضمنها. يتم حفظ النسخ الاحتياطية التي تتضمن عمليات التحميل كملفات *.tar.gz، بينما يتم حفظ النسخ الاحتياطية التي لا تتضمن عمليات التحميل كملفات *.sql.gz. راجع القسم التالي للحصول على التفاصيل.

على الرغم من أن البيانات التي تنشئها الإضافات (plugins) موجودة في قاعدة البيانات، إلا أنه يتم تثبيت الإضافات نفسها في ملف app.yml الخاص بك. لاستعادة موقعك إلى خادم جديد، ستحتاج إلى التأكد من أن التثبيت الخاص بك يتضمن الإضافات التي تحتاجها.

وضع القراءة فقط

يمكنك تفعيل وضع القراءة فقط في صفحة النسخ الاحتياطي لمنع تغييرات الموقع للمهام المتعلقة بالمسؤول. تعرف على المزيد حول وضع القراءة فقط هنا.

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

لإنشاء نسخة احتياطية من موقع Discourse الخاص بك، اتبع الخطوات التالية:

  1. انتقل إلى قسم المسؤول / النسخ الاحتياطية (Admin / Backups) في موقعك.
  2. انقر على زر النسخ الاحتياطي (Backup).

  1. ستفتح نافذة منبثقة تحتوي على مربع اختيار لتضمين عمليات تحميل الموقع في النسخة الاحتياطية. حدد هذا الخيار أو ألغ تحديده بناءً على تفضيلك.

:warning: إذا كان موقعك مستضافًا من قبلنا وترغب في إنشاء نسخة احتياطية تتضمن عمليات التحميل، فاتصل بفريق Discourse قبل إنشاء النسخة الاحتياطية.

  1. انقر على زر التأكيد لبدء النسخ الاحتياطي.

تنزيل نسخة احتياطية

عند اكتمال النسخ الاحتياطي، سيرسل لك Discourse إشعارًا.

  • انقر على الرابط الموجود في الإشعار للعودة إلى صفحة النسخ الاحتياطي. ثم انقر على زر تنزيل (Download).

  • سيتم إرسال بريد إلكتروني يحتوي على رابط لتنزيل النسخة الاحتياطية إليك. انقر على الرابط لحفظ النسخة الاحتياطية على جهاز الكمبيوتر الخاص بك.

تحميل نسخة احتياطية

  • لتحميل نسخة احتياطية، انتقل إلى قسم المسؤول / النسخ الاحتياطية (Admin / Backups) في موقعك، وانتقل إلى علامة التبويب ملفات النسخ الاحتياطي (Backup Files)، وانقر على زر تحميل (Upload).

  • سيؤدي هذا إلى فتح مدير ملفات المتصفح الخاص بك. حدد النسخة الاحتياطية من نظام الملفات الخاص بك وانقر على زر فتح (Open) في مدير الملفات. سيتم عرض ملف النسخ الاحتياطي الجديد في قائمة الملفات.

استعادة نسخة احتياطية

قبل أن تتمكن من استعادة ملف النسخ الاحتياطي الخاص بك، تحتاج إلى تمكين إعداد الموقع allow restore. بعد ذلك، في صفحة النسخ الاحتياطية (Backups)، ابحث عن النسخة الاحتياطية التي تريد استعادتها، وانقر على قائمة المزيد من الخيارات (⋮)، وحدد استعادة (Restore).

:warning: سيؤدي استعادة ملف نسخة احتياطية إلى الكتابة فوق جميع البيانات الموجودة على الموقع. عند استعادة النسخة الاحتياطية، سيتم تسجيل خروجك من الموقع وستحتاج إلى تسجيل الدخول مرة أخرى باستخدام بيانات الاعتماد الخاصة بك من الموقع الذي تم استعادته.

:warning: تأكد من أن الموقع الذي تقوم بالاستعادة إليه يعمل بنفس إصدار Discourse الخاص بالموقع القديم. من الأفضل تحديث كلا الموقعين إلى أحدث إصدار قبل تشغيل عملية النسخ الاحتياطي/الاستعادة.

تقوم عملية الاستعادة تلقائيًا بتعيين إعداد disable emails إلى “غير الموظفين” (non-staff)، لذلك لن يتم إرسال رسائل بريد إلكتروني إلى مستخدمي موقعك حتى تكون مستعدًا.

:discourse: إذا كان موقعك مستضافًا بواسطة Discourse، فسيتم تعطيل خيار الاستعادة. بعد تحميل ملف النسخ الاحتياطي، اتصل بفريق Discourse وأخبرنا باسم ملف النسخ الاحتياطي الذي ترغب في استعادته. سنقوم باستعادته لك.

النسخ الاحتياطي والاستعادة من سطر الأوامر

للمسؤولين الذين يشعرون بالارتياح لاستخدام سطر الأوامر، يمكنك إنشاء وإدارة النسخ الاحتياطية برمجيًا:

  • يتم تخزين النسخ الاحتياطية في /var/discourse/shared/standalone/backups.
  • ابدأ نسخة احتياطية باستخدام:
./launcher run app discourse backup

أو

docker exec app bash -c "discourse backup"

لمزيد من المعلومات حول النسخ الاحتياطي من سطر الأوامر، راجع: Backup discourse from the command line.

32 إعجابًا

هل هناك طريقة لإنشاء وتنزيل ملف النسخ الاحتياطي هذا برمجيًا؟ أعني، لدي بعض نصوص cron على الخادم تقوم بعمل نسخ احتياطية للعديد من الخدمات الأخرى، هل يمكنني إصدار بعض أوامر CLI مباشرة على الخادم للحصول على النسخة الاحتياطية هناك؟ ربما ./launcher app backup new-backup.backup أو شيء من هذا القبيل؟

النسخ الاحتياطي موجود في /var/discourse/shared/standalone/backups

يمكنك بدء النسخ الاحتياطي باستخدام

./launcher run app discourse backup

أو

docker exec app bash -c "discourse backup"

أعتقد.

إعجابَين (2)

هل هذا ممكن أيضًا في بيئة تطوير Docker، تم إعدادها كما هو موضح في https://meta.discourse.org/t/install-discourse-for-development-using-docker/102009؟

عندما أحاول كما هو موضح في قسم إنشاء نسخة احتياطية أعلاه، أحصل على الخطأ pg_dump: error: connection to database "discourse_development" failed: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL: Peer authentication failed for user "postgres".

السجل الكامل للنسخة الاحتياطية الفاشلة
[2024-09-04 15:03:39] [STARTED]
[2024-09-04 15:03:39] 'raphael.dasgupta' has started the backup!
[2024-09-04 15:03:39] Marking backup as running...
[2024-09-04 15:03:39] Making sure '/src/tmp/backups/default/2024-09-04-150339' exists...
[2024-09-04 15:03:39] Making sure '/src/public/backups/default' exists...
[2024-09-04 15:03:39] Updating metadata...
[2024-09-04 15:03:39] Dumping the public schema of the database...
[2024-09-04 15:03:40] pg_dump: error: connection to database "discourse_development" failed: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL: Peer authentication failed for user "postgres"
[2024-09-04 15:03:40] EXCEPTION: pg_dump failed
[2024-09-04 15:03:40] /src/lib/backup_restore/backuper.rb:173:in `dump_public_schema'
/src/lib/backup_restore/backuper.rb:36:in `run'
/src/script/spawn_backup_restore.rb:9:in `backup'
/src/script/spawn_backup_restore.rb:31:in `block in <main>'
/src/script/spawn_backup_restore.rb:4:in `fork'
/src/script/spawn_backup_restore.rb:4:in `<main>'
[2024-09-04 15:03:40] Cleaning stuff up...
[2024-09-04 15:03:40] Removing '.tar' leftovers...
[2024-09-04 15:03:40] Marking backup as finished...
[2024-09-04 15:03:40] Notifying 'raphael.dasgupta' of the end of the backup...
إعجاب واحد (1)

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

يرجى التكرم بالمساعدة.

هل جربت ./discourse-doctor

شكراً على ردك. المشكلة الرئيسية هي أنني قمت بتكوين بريد إلكتروني آخر من الواجهة الخلفية كمسؤول. فشل الاتصال برقم المنفذ 587 باستمرار، ولا يتم إرسال رسائل البريد الإلكتروني. هل هناك طريقة لتجاوز ذلك، أم أن هناك منفذًا آخر لاستخدامه؟

إعجاب واحد (1)

هل هذا هو الرد البديل عبر البريد الإلكتروني الذي أكدته؟

المنفذ 587 هو الذي أستخدمه للاتصال بـ smtp.eu.mailgun.org

هذه هي إعدادات الخادم لدي.

حسنًا، إذًا تريد Office 365 على نطاقك الأساسي و Discourse transactional email / mail-receiver بواسطة MX على نطاق فرعي؟

نعم، لأن بريدي الإلكتروني مُعد على 365

أعتقد أن سبب المشكلة هو استخدامك لـ Office 365 للبريد الإلكتروني للمعاملات. قد ترغب في استخدام خدمة بريد إلكتروني للمعاملات مثل Mailgun أو Brevo، وكلاهما يُستخدم مع Discourse دون مشاكل كبيرة.

إعجاب واحد (1)

يمكنني مساعدتك في الإعدادات الموصوفة. في الوقت الحالي، لن تتمكن من إرسال أو استقبال رسائل البريد الإلكتروني الخاصة بـ discourse باستخدام اشتراك (اشتراكات) Office 365 الخاص بك.

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

لقد قمت بتكوين إعدادات SMTP باستخدام Brevo واستخدمت المنفذ 587، وما زلت أتلقى نفس الخطأ. يرجى المساعدة بلطف، لست متأكدًا من أين أخطأت.

حسناً… ماذا عن تغيير المنفذ إلى 2525؟

إعجاب واحد (1)

هل تمكنت من جعل هذا يعمل؟

عند تحميل ملف النسخ الاحتياطي، لا يمكن تحديد ملف النسخ الاحتياطي الذي تم تنزيله، حيث يظهر باللون الرمادي ولا يمكن تحديده. الملف ينتهي بلاحقة tar.gz.

هل الملف الذي تحاول الاستعادة منه هو إصدار حديث من Discourse؟

هل قمت بتغيير اسم الملف بأي شكل من الأشكال؟ لن يعمل إذا لم يكن الاسم هو الاسم المحدد عند إنشاء النسخة الاحتياطية.

إعجاب واحد (1)