أنا أجرب بعض الأشياء على Cloudflare وكنت أفكر في ترك R2 في المستقبل. لهذا السبب، عندما كنت أفحص النسخ الاحتياطية، رأيت أن التثبيتات لم يتم تضمينها وظهر خطأ. عند إجراء نسخة احتياطية يدويًا، يظهر نفس الخطأ في سجلات المعاملات. يتم نسخ الصور والملفات الموجودة محليًا احتياطيًا، ولكن الصور الموجودة في Cloudflare R2 لا يتم نسخها احتياطيًا.
مثال لرمز خطأ:
فشل تنزيل original/1X/4b8754c367e54bc5271454a09b8bd4c1a8b882d5.png بسبب خطأ Aws::S3::Errors::Http501Error
/var/www/discourse/lib/s3_helper.rb:280:in `rescue in download_file'
/var/www/discourse/lib/s3_helper.rb:277:in `download_file'
/var/www/discourse/lib/file_store/s3_store.rb:338:in `download_file'
/var/www/discourse/lib/backup_restore/backuper.rb:321:in `block in add_remote_uploads_to_archive'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8.4/lib/active_record/relation/batches.rb:71:in `each'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8.4/lib/active_record/relation/batches.rb:71:in `block in find_each'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8.4/lib/active_record/relation/batches.rb:138:in `block in find_in_batches'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8.4/lib/active_record/relation/batches.rb:245:in `block in in_batches'
/internal:kernel:187:in `loop'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8.4/lib/active_record/relation/batches.rb:229:in `in_batches'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8.4/lib/active_record/relation/batches.rb:137:in `find_in_batches'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8.4/lib/active_record/relation/batches.rb:70:in `find_each'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8.4/lib/active_record/querying.rb:22:in `find_each'
/var/www/discourse/lib/backup_restore/backuper.rb:315:in `add_remote_uploads_to_archive'
/var/www/discourse/lib/backup_restore/backuper.rb:248:in `create_archive'
/var/www/discourse/lib/backup_restore/backuper.rb:40:in `run'
/var/www/discourse/script/spawn_backup_restore.rb:9:in `backup'
/var/www/discourse/script/spawn_backup_restore.rb:31:in `block in <main>'
/var/www/discourse/script/spawn_backup_restore.rb:4:in `fork'
/var/www/discourse/script/spawn_backup_restore.rb:4:in `<main>'
هذا متوقع، والنقطة الأساسية في S3/R2 هي أنك لا تحتاج إلى عمل نسخة احتياطية من الأشياء. ولكن هناك إعداد مخفي سيقوم بتنزيل جميع الصور من S3 ووضعها في النسخة الاحتياطية.
أوه، ولكن لديك DISCOURSE_INCLUDE_S3_UPLOADS_IN_BACKUPS: true.
لذا ربما لا يعمل R2 كما اقترح في الأصل. اعتقدت أنني اختبرته ونجح، لكنني لم أحاول تنزيل الصور إلى النسخة الاحتياطية ومن المحتمل أنني لم أحاول إجراء استعادة أو تنزيل ملف نسخة احتياطية.
ربما ينتمي هذا إلى الموضوع الآخر لأنه يبدو أنه يتعارض مع فرضية “ربما يعمل” المقدمة هناك.
سأثير المشكلة مرة أخرى ولكنها تملأ برموز الخطأ مع كل نسخة احتياطية تلقائية. إذا لم يتم إجراء النسخ الاحتياطي، أعتقد أنه سيكون من الأفضل عدم طلب الملفات على S3 لتجنب إضاعة الوقت. بهذه الطريقة لا نملأ الملف برموز خطأ غير ضرورية.
لقد كنت على R2 لفترة طويلة. كل شيء يبدو جيدًا، هناك فقط بعض المشكلات (كما هو موضح أعلاه) ولكن يمكن إصلاحها. بمرور الوقت، ستعمل المجتمعات على حل هذه المشكلة، وحتى ذلك الحين، حظًا موفقًا لك
بعد اختباراتك، قمنا بتشغيل R2 والمشاكل التي واجهتها مع R2 كانت كالتالي:
عندما قمت بإيقاف تشغيل S3، تحولت الاتصالات إلى اتصالات R2 غريبة (ما رأيته عندما نظرت في Docker). وعندما حاولت إصلاحها وإعادة الخبز، كانت الصور على الموقع تطير ومشوهة. بعد تصحيحها بعد عدة محاولات، قمت بتعيين R2 للتحميل والاستخدام فقط. لذلك لم أجد طريقة للتخلص منها بعد (أو لم أتمكن من ذلك).
كان هناك خطأ آخر عند إجراء النسخ الاحتياطي. بالنظر إلى وجود 10 آلاف صورة، فإنها تملأ سجلات الأخطاء بلا فائدة. هذا يمكن أن يتسبب أحيانًا في تفويت المشاكل المهمة. (قد يكون من الأفضل إذا لم يعط رسالة خطأ، ولكن يجب ملاحظة أن البيانات الموجودة على S3 لن تتم إضافتها إلى النسخ الاحتياطي).
لا أتذكر أنني واجهت مشاكل أخرى غير هذه. إذا أردت نسخ الملفات الموجودة على R2 احتياطيًا، يمكنني الاتصال عبر winscp وتنزيلها إلى جهازي. إذا اتصل أي شخص، فلنترك ملاحظة هنا
خطر ببالي للتو أن أولئك الذين يستخدمون S3 يمكنهم إيقاف تشغيل هذا الإعداد “النسخ الاحتياطي مع التحميلات”. حتى نتمكن من التخلص من رسالة الخطأ. لماذا لم أفكر في هذا من قبل…