تطور هذا الموضوع لاحقًا إلى ‘استعادة الفاشلين’ من المشاركة الرابعة فصاعدًا، وهي المشكلة الرئيسية الآن. يمكنك تجاهل المشاركات الأربع الأولى.
لقد قمت بإعداد تحميلاتي إلى AWS S3 منذ سنوات/في البداية فقط.
حتى عندما (على حد علمي) لم أقم بتمكين خيار تضمين تحميلات S3 في النسخ الاحتياطية الخاصة بي، إلا أنني بالأمس، عندما اخترت تضمين ‘التحميلات’ في النسخ الاحتياطية الخاصة بي، حصلت على هذا في سجلاتي:
يثير هذا بعض التناقضات الغريبة، والتي تحيرني:
مساء أمس، قمت بتمكين الخيار في إعدادات المسؤول الخاصة بي لتضمين ‘التحميلات’ في النسخ الاحتياطية. وعندما قمت بعرض مجلد ‘التحميلات المشتركة’ المحلي الخاص بي عبر WinScp، كان يحتوي على أقل من 100 ملف في مجلد واحد فقط (لا توجد مجلدات أخرى 2x، 3x هناك، يمكنني مشاركة لقطات شاشة إذا لزم الأمر). فلماذا تظهر سجلات النسخ الاحتياطي أنه تم تنزيل حوالي 3 آلاف ملف. (‘فشل التنزيل’ مشكلة/صداع آخر في هذه السجلات، ولكن هذا ‘شيء آخر’). الآن، إذا كان يقوم بتنزيل هذه الملفات من التخزين المحلي، فأين توجد كل هذه الملفات الكثيرة؟ وإذا كان يقوم بالتنزيل من S3، فعندئذٍ، لماذا يقوم بالتنزيل من هناك، لأنني لم أغير هذا الخيار في وحدة تحكم Rails لتضمين بيانات S3 في النسخ الاحتياطية، ولم أنشئ أي خيار مشابه في قسم البيئة في ملف yml الخاص بي.
ثم اليوم قمت بتغيير هذا الخيار في وحدة تحكم Rails إلى ‘صحيح’. والآن، عندما قمت بتشغيل مهمة النسخ الاحتياطي، أظهرت نفس حوالي 3.2 ألف ملف تم تنزيلها، وحوالي 100 ‘فشل في التنزيل’. ولكن عندما تحققت في مخزن AWS S3 الخاص بي، كان يحتوي على ما يقرب من 10 أضعاف، 32 ألف ملف بحجم حوالي 3 جيجابايت. فلماذا لا يقوم بتنزيل كل هذه الملفات؟
أليس هناك طريقة لمطابقة/مزامنة كل هذه البيانات، وربما، معرفة التناقضات التي تحدث وأين؟
الآن أنا مرتبك جدًا، ماذا يجب أن أفعل. هدفي النهائي هو نقل تخزين AWS (المكلف جدًا) إلى إصدار أرخص (Hetzner نفسها، حيث يعمل خادم VPS الخاص بي، غير مكلف للغاية، لذا يمكنني زيادة مساحة تخزين الخادم الأساسي الخاص بي أيضًا).
حتى عندما يكون مجلد ‘Uploads’ الخاص بي (في دلو Aws S3) أكبر من 3 جيجابايت (3.2 ألف ملف)، لماذا تكون النسخ الاحتياطية أقل بقليل من 1 جيجابايت (مع تنزيل 2.9 ألف ملف فقط في النسخة الاحتياطية)، حتى بعد تمكين خيار ‘include_s3_uploads_in_backup’ عبر وحدة تحكم Rails؟
يقوم هذا الإعداد بتنزيل الملفات إلى دليل مؤقت وتضمينها في النسخة الاحتياطية. لا يضعها في دليل التحميلات. للحصول عليها في دليل التحميلات، تحتاج إلى استعادة النسخة الاحتياطية. سأقوم بذلك على خادم جديد حتى لا يتأثر خادمك الأصلي إذا حدث خطأ ما.
يبدو أن بعض الملفات قد تكون مفقودة. هل لديك مشاركات تحتوي على صور مفقودة؟ احتمال آخر هو أن جدول التحميلات يتضمن ملفات تم تحميلها لم تعد مشار إليها في المشاركات، لذلك لا تهم هذه الصور المفقودة.
إذا كانت حوالي 100 ملف فقط، فمن المحتمل ألا يكون الأمر خطيرًا.
أو قد يكون هناك خطأ في وقت ما قام بتنظيف (حذف) الملفات التي كان يجب الاحتفاظ بها.
لمعرفة الملفات التي تم تنزيلها، ستحتاج إلى تنزيل ملف النسخة الاحتياطية ومعرفة ما يحتويه. قم باستعادة النسخة الاحتياطية الخاصة بك إلى خادم جديد لمعرفة كيفية عملها.
لكن النقطة الرئيسية هي لماذا النسخة الاحتياطية أقل بقليل من 1 جيجابايت (مع 3100 ملف فقط) حتى عندما يكون مجلد ‘Uploads’ في S3 وحده بحجم 3.2 جيجابايت و 32 ألف ملف. (تظهر سجلات النسخ الاحتياطي بوضوح أنها قامت بتنزيل حوالي 10٪ فقط، 3 آلاف ملف).
[أجد أنه من الصعب جدًا عليّ إنشاء إعداد جديد لـ discourse بنطاق مختلف لاختبار هذا الأمر، على الرغم من أنني أجد أنه من السهل جدًا إنشاء لقطة ثم، إذا لزم الأمر، استعادة موقعي، الذي لا يشهد حركة مرور كثيفة، في غضون 5 دقائق دون أي إزعاج]
حسنًا، كنت أعتقد أنه حتى بعد تغيير الخيار في Rails C، لماذا لا أضيف هذا السطر في yml أيضًا DISCOURSE_INCLUDE_S3_UPLOADS_IN_BACKUPS: true معتقدًا أن هذا قد يستدعي جميع ملفاتي من Aws S3.
ولكن بعد تغيير هذا الخيار في yml، وإعادة بناء الحاوية، وتشغيل النسخ الاحتياطي، وجدت نفس الأسطر في سجلات النسخ الاحتياطي (3000 تنزيل وسائط مع حوالي 100 فشل).
وعندما حاولت الاستعادة (لم أغير أي إعدادات تحميل/S3 في إعدادات المسؤول الخاصة بي بعد)، فقد أعطت خطأ.
إذًا، لقد قمت بتعطيل عمليات التحميل إلى S3، ثم حاولت استعادة النسخة الاحتياطية الخاصة بي بحجم 1 جيجابايت (النسخة الاحتياطية لا تزال على AWS S3)، وفشلت مرة أخرى. ما الذي يمكن أن يسير على نحو خاطئ هنا؟
أيضًا، بعد فشل الاستعادة، تم تسجيل خروجي وعندما سجلت الدخول مرة أخرى، تم عرض لافتة تفيد بأنه تم تعطيل جميع رسائل البريد الإلكتروني لغير الموظفين. وعندما حاولت الوصول إلى السجل من الرابط الذي تلقيته عبر البريد الإلكتروني، لم يتم العثور على الملف/لا يمكن الوصول إليه (تظهر صفحة الخطأ المحددة الخاصة بي).
عندما كان يحاول الاستعادة، قبل أن يتم تسجيل خروجي مباشرة، كنت أرى رسائل السجل هذه:
[2024-08-19 04:12:58] 'Bathinda_Helper' has started the restore!
[2024-08-19 04:12:58] Marking restore as running...
[2024-08-19 04:12:58] Making sure /var/www/discourse/tmp/restores/default/2024-08-19-041258 exists...
[2024-08-19 04:12:59] Downloading archive to tmp directory...
في محاولة لاحقة ‘FAILED-restore’، تمكنت من النقر على رابط السجل قبل تسجيل خروجي. ها هو: log- failed restore.txt (98.9 KB)
لقد أجريت بعض التجارب التي تفيد بأن التحميلات الجديدة يتم إنشاؤها بالفعل على خادم أوبونتو المحلي الخاص بي. لكن استعادتها من S3 إلى المحلي تفشل. لكن الشيء هو أن بعض المشاركات التي فحصتها لا تزال تظهر الصور من S3 (تلك التي لم تُفقد).
أيضًا، بعد “فشل الاستعادة”، حتى عندما أسجل الدخول بنفس المسؤول، لا يمكنني الوصول إلى المرفق ‘Log.txt’. يعرض صفحة غير متوفرة / صفحة خطأ الإعداد الخاصة بي بدلاً من ذلك.
أنت تستعيد من حاوية web_only كما تفعل.
لقد قمت بتمكين الاستعادة بنجاح في الأمر الأول (لا أعرف لماذا ستحاول القيام بذلك مرة أخرى بطريقة أخرى) الآن قم بتنفيذ discourse restore
في الواقع، حاولت القيام بنفس الشيء تمامًا كما في لقطات الشاشة الخاصة بك في المنشور المشار إليه أعلاه. على أي حال، سأقوم الآن فقط بـ “استعادة Discourse”.
كما فهمت/آمل، لست بحاجة إلى تقديم أي مسار لملف النسخ الاحتياطي (.tz) الموجود في أي مكان، وسيقوم تلقائيًا بالتقاطه من مجلد النسخ الاحتياطي المحلي للخادم الخاص بي.