مشكلة في النسخ الاحتياطي متعدد المواقع على S3 - النسخ الاحتياطي مخزن في الجذر

لدي نسخة متعددة المواقع على AWS EC2. لدي النسخ الاحتياطي مُعدة كالتالي:

DISCOURSE_S3_BACKUP_BUCKET: lc-sitename
DISCOURSE_S3_SECRET_ACCESS_KEY: secret-key
DISCOURSE_S3_ACCESS_KEY_ID: key-id
DISCOURSE_BACKUP_LOCATION: s3

يتم تخزين النسخ الاحتياطي للمواقع متعددة المواقع في جذر الحاوية (bucket root)، ولكنها لا تظهر في القائمة في واجهة المستخدم. يتم تخزين النسخ الاحتياطي للموقع الرئيسي تحت default كما هو متوقع. هذا يعني أن النسخ الاحتياطي غير مرئية للاستعادة ولا يتم تقليمها وفقًا للإعدادات.

مقطع المواقع متعددة المواقع يبدو كالتالي:

        site:
           adapter: postgresql
           database: site
           pool: 25
           timeout: 5000
           host: data
           password: secret
           host_names:
             - community.site.org

هل يمكن أن يكون السبب هو أنه إذا لم يتم تعيين DISCOURE_USE_S3، فإن النسخ الاحتياطي ينتهي بها المطاف في المكان الخطأ؟ (لقد حاولت تعيين use_s3 في discourse.conf، ولكن لم أقم بإعادة تشغيل unicorn، وبدلاً من ذلك قمت بتشغيل أمر نسخ احتياطي من سطر الأوامر وما زال يضعه في الجذر، وليس في اسم الموقع الفرعي).

كانت هناك مشكلة مع التحميلات على S3 (ربما تكوين خاطئ للحاوية)، لذا فإن S3 مخصص للنسخ الاحتياطي فقط.

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

لقد أمضيت ساعة ونصف أخرى في هذا الأمر.

أحد مواقع multisite يضع ملفات التحميل النسخ الاحتياطي الخاصة به بشكل صحيح في الدليل الصحيح، لكن اثنين لا يفعلان ذلك.

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

@gerhard آسف على الإزعاج، ولكن هل تمانع في إلقاء نظرة سريعة على هذا لمعرفة ما إذا كان هناك شيء سخيف بشكل صارخ أغفله؟

نعم، يتم تخزين التحميلات حسب التصميم، إذا كان النسخ الاحتياطي من نسخة موقع واحد، يتم استعادته بشكل مختلف.

      was_multisite = BackupMetadata.value_for("multisite") == "t"
      upload_path = "/#{Discourse.store.upload_path}/"
      uploads_folder = was_multisite ? "/" : upload_path

لكن ألم يكن هذا يتعلق بمكان وضع النسخ الاحتياطية، وليس بمكان استعادة الصور؟

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

نعم.

هذا صحيح.

ولكن عفواً:

كما قلت (بشكل صحيح) في وقت سابق، هذا المثيل يستخدم (حاليًا؟) S3 للنسخ الاحتياطية فقط وليس للتحميلات.

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

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

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

لا أرى سببًا لانتهاء النسخ الاحتياطية التي أنشأها النظام في المكان الخطأ. الكود يبدو مباشرًا جدًا.

s3_helper يتم تكوينه بالدلو الصحيح واسم الموقع المتعدد.

أعني أنه عند إنشاء نسخة احتياطية من الواجهة الويب أو مهمة rake لاثنين من المضيفين المتعددي المواقع (والتي تم ترحيلها كلاهما من خادم آخر) ، يتم تحميل النسخة الاحتياطية إلى جذر سلة النسخ الاحتياطي s3 بدلاً من sitename/backupname.

يبدو الأمر غريباً بالنسبة لي أيضاً.

سأحاول إضافة بعض puts إلى تلك الدوال لمعرفة ما إذا كان بإمكاني تعقبها.

أعتقد أنني قمت بـ puts لـ source_path وكان المسار الكامل الصحيح في نظام التشغيل ، ولكن عندما يتم تحميله إلى S3 ، لم يعد اسم الموقع موجوداً في المسار.

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