يعلق discourse واستعادة discourse FAILED

أقوم بتشغيل الأمر ./launcher rebuild app


redis is now ready to exit, bye bye ... يتسبب في تعليق discourse لمدة 40 دقيقة، ثم أوقفته باستخدام Ctrl + C

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

هل يمكن أن تكون هذه مشكلة في تخصيص الموارد؟

هل هناك مواقع ويب أو خدمات أخرى مستضافة على هذا الخادم؟ ما مقدار ذاكرة الوصول العشوائي/وحدة المعالجة المركزية المتاحة على خادمك؟

موارد الخادم

هذا طبيعي.

هذا ليس طبيعيًا. فعادةً ما يتم تشغيل الحاوية الجديدة خلال أقل من دقيقة بعد ظهور هذه الرسالة.

هل جربت ذلك أكثر من مرة ونفس النتيجة؟

نعم، عدة مرات، مع نفس النتيجة

كنت على فرع 3d050bdaa31633a954758894629c0eb9fea537d0

أريد الترقية إلى fe71c43c57c0248a8264245cb6ff0dc114da335a

لكنه يُعلق discourse !!

production.log

خطأ في الاتصال بـ Redis على localhost:6379 (Errno::ENETUNREACH) فشل الاشتراك، سيتم إعادة المحاولة خلال ثانية واحدة. مكدس الاستدعاء ["/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:363:in `rescue in establish_connection'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:344:in `establish_connection'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:106:in `block in connect'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:307:in `with_reconnect'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:105:in `connect'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:382:in `ensure_connected'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:231:in `block in process'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:320:in `logging'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:230:in `process'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:139:in `block in call_loop'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:293:in `with_socket_timeout'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:138:in `call_loop'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/subscribe.rb:44:in `subscription'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/subscribe.rb:13:in `subscribe'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis.rb:3468:in `_subscription'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis.rb:2301:in `block in subscribe'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis.rb:51:in `block in synchronize'", "/usr/local/lib/ruby/2.6.0/monitor.rb:235:in `mon_synchronize'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis.rb:51:in `synchronize'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis.rb:2300:in `subscribe'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-3.2.0/lib/message_bus/backends/redis.rb:287:in `global_subscribe'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-3.2.0/lib/message_bus.rb:741:in `global_subscribe_thread'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-3.2.0/lib/message_bus.rb:689:in `block in new_subscriber_thread'"]
استثناء المهمة: خطأ في الاتصال بـ Redis على localhost:6379 (Errno::ENETUNREACH)

استثناء المهمة: خطأ في الاتصال بـ Redis على localhost:6379 (Errno::ENETUNREACH)

استثناء المهمة: خطأ في الاتصال بـ Redis على localhost:6379 (Errno::ENETUNREACH)

استثناء المهمة: خطأ في الاتصال بـ Redis على localhost:6379 (Errno::ENETUNREACH)

استثناء المهمة: خطأ في الاتصال بـ Redis على localhost:6379 (Errno::ENETUNREACH)

استثناء المهمة: خطأ في الاتصال بـ Redis على localhost:6379 (Errno::ENETUNREACH)

استثناء المهمة: خطأ في الاتصال بـ Redis على localhost:6379 (Errno::ENETUNREACH)

خطأ في الاتصال بـ Redis على localhost:6379 (Errno::ENETUNREACH) فشل الاشتراك، سيتم إعادة المحاولة خلال ثانية واحدة. مكدس الاستدعاء ["/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:363:in `rescue in establish_connection'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:344:in `establish_connection'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:106:in `block in connect'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:307:in `with_reconnect'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:105:in `connect'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:382:in `ensure_connected'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:231:in `block in process'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:320:in `logging'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:230:in `process'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:125:in `call'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis.rb:915:in `block in get'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis.rb:51:in `block in synchronize'", "/usr/local/lib/ruby/2.6.0/monitor.rb:235:in `mon_synchronize'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis.rb:51:in `synchronize'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis.rb:914:in `get'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-3.2.0/lib/message_bus/backends/redis.rb:360:in `process_global_backlog'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-3.2.0/lib/message_bus/backends/redis.rb:271:in `block in global_subscribe'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-3.2.0/lib/message_bus/backends/redis.rb:284:in `global_subscribe'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-3.2.0/lib/message_bus.rb:741:in `global_subscribe_thread'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-3.2.0/lib/message_bus.rb:689:in `block in new_subscriber_thread'"]
استثناء المهمة: خطأ في الاتصال بـ Redis على localhost:6379 (Errno::ENETUNREACH)

إنشاء نطاق :visible_groups. الكتابة فوق الطريقة الموجودة Group.visible_groups.
إنشاء نطاق :visible. الكتابة فوق الطريقة الموجودة Notification.visible.
إنشاء نطاق :public_posts. الكتابة فوق الطريقة الموجودة Post.public_posts.
إنشاء نطاق :private_posts. الكتابة فوق الطريقة الموجودة Post.private_posts.
إنشاء نطاق :open. الكتابة فوق الطريقة الموجودة Poll.open.
نقل إلى CreateDiscourseVotingCategorySettings (20200727220143)
نقل إلى CreateDiscourseVotingVotes (20200728222920)
نقل إلى CreateDiscourseVotingTopicVoteCount (20200729042607)
إنشاء نطاق :visible_groups. الكتابة فوق الطريقة الموجودة Group.visible_groups.
إنشاء نطاق :visible. الكتابة فوق الطريقة الموجودة Notification.visible.
إنشاء نطاق :public_posts. الكتابة فوق الطريقة الموجودة Post.public_posts.
إنشاء نطاق :private_posts. الكتابة فوق الطريقة الموجودة Post.private_posts.
إنشاء نطاق :open. الكتابة فوق الطريقة الموجودة Poll.open.
إنشاء نطاق :visible_groups. الكتابة فوق الطريقة الموجودة Group.visible_groups.
إنشاء نطاق :visible. الكتابة فوق الطريقة الموجودة Notification.visible.
إنشاء نطاق :public_posts. الكتابة فوق الطريقة الموجودة Post.public_posts.
إنشاء نطاق :private_posts. الكتابة فوق الطريقة الموجودة Post.private_posts.
إنشاء نطاق :open. الكتابة فوق الطريقة الموجودة Poll.open.

يبدو أن نظام Ubuntu 14.04 قديم نسبيًا، فقد لاحظت في الأسابيع القليلة الماضية بعض المنشورات التي تشير إلى وجود مشكلة:
https://meta.discourse.org/search?q=14.04%20order%3Alatest

ربما أدى تحديث في أحد التبعيات بين شهر مايو والآن إلى حدوث خلل ما :roll_eyes:

شكرًا على الإجابات

لدي خادم جديد يعمل بنظام Ubuntu 20.04.1 LTS ومثبت عليه Docker.

كيف يمكنني نقل منتدى الإنتاج القديم (prod-forum) إلى هذا الخادم؟
هل يمكنك اقتراح دليل خطوة بخطوة لي؟

ابنِ من الصفر باستخدام الدليل العادي. انسخ ملف app.yml. أعد البناء. استورد ملف نسخة احتياطية من Discourse من الخادم الأول. تم.

(أوه، ومسألة صغيرة تتمثل في إعادة تعيين عنوان IP للنطاق!)

رائع، لكن إنشاء النسخ الاحتياطية عبر لوحة الإدارة لا يعمل بالنسبة لنا))

نقل حاوية Docker

docker ps -a

docker commit c559bec6f29a local_discourse/app
docker save local_discourse/app > /tmp/local_discourse_app.tar.gz
scp /tmp/local_discourse_app.tar.gz root@my-new-server:/tmp/
---
docker load < /tmp/local_discourse_app.tar.gz
docker run local_discourse/app

تحدث المشاكل في هذه الخطوة - NoMethodError on docker run - #8 by Dev_Work

أليس لديك أي نسخ احتياطية موجودة في موقع خارجي؟

أحتاج إلى نسخة ببيانات حديثة (بدون نسخ احتياطية حديثة)

عند استعادة نسخة احتياطية على خادم جديد، هل تحدث أخطاء؟

./launcher enter app
discourse restore discourse-2020-08-24-103334-v20200811004537.tar.gz

مرحبًا @Dev_Work

عذرًا لسماع أن لديك مشكلات في هذا الشأن.

لنراجع ما حدث:

  • قمت بنسخ احتياطي يدوي كامل لموقعك، وكان هذا النسخ الاحتياطي:
discourse-2020-08-24-103334-v20200811004537.tar.gz 
  • ثم قمت بتثبيت Discourse من الصفر باستخدام الطريقة القياسية:
https://github.com/discourse/discourse/blob/master/docs/INSTALL-cloud.md
  • قمت بذلك على خادم Ubuntu 20.04.1 LTS جديد تمامًا مع تثبيت Docker واختباره.

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

هل هذا صحيح، وهل هذا هو المكان الذي وصلت إليه الآن في هذه القصة؟

شكرًا على الإجابة. نعم، هذا صحيح، تظهر مشكلة في إصدار ubuntu 20.04.1 LTS الجديد.

هل أنشأت حساب مسؤول باسم مستخدم “pavel_BLANKEDOUT” قبل محاولة عملية استعادة discourse اليدوية؟

أفترض أن هذه ليست المشكلة، لكنني أسأل للتأكد من تغطية جميع الاحتمالات نظرًا لأن المستخدم “pavel_BLANKEDOUT” مذكور في خطأ المفتاح المكرر لديك.

لا، لم يتم الإنشاء.

المستخدم المسؤول غير موجود في قاعدة بيانات النسخ الاحتياطي.

مرحبًا @Dev_Work

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

أم يمكنك الدخول إلى حاوية موقعك القديم والتحقق من قاعدة بيانات Discourse بحثًا عن فهرس تالف؟

أيضًا، ما إصدار PostgreSQL الذي كان يعمل عليه مثيل موقعك القديم المعطل؟ 10 أم 12؟

يبدو أن مشكلتي هي نفسها، Search results for 'could not create unique index category:6' - Discourse Meta

آه :frowning:

ERROR:  could not create unique index "index_user_emails_on_email"
DETAIL:  Key (lower(email::text))=(andrii_test@local.com) is duplicated.
EXCEPTION: psql failed: DETAIL:  Key (lower(email::text))=(andrii_test@local.com) is duplicated.
/var/www/discourse/lib/backup_restore/database_restorer.rb:95:in `restore_dump'
/var/www/discourse/lib/backup_restore/database_restorer.rb:26:in `restore'
/var/www/discourse/lib/backup_restore/restorer.rb:49:in `run'
script/discourse:143:in `restore'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/thor-1.0.1/lib/thor/command.rb:27:in `run'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/thor-1.0.1/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/thor-1.0.1/lib/thor.rb:392:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/thor-1.0.1/lib/thor/base.rb:485:in `start'
script/discourse:284:in `<top (required)>'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/cli/exec.rb:63:in `load'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/cli/exec.rb:63:in `kernel_load'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/cli/exec.rb:28:in `run'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/cli.rb:476:in `exec'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/vendor/thor/lib/thor.rb:399:in `dispatch'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/cli.rb:30:in `dispatch'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/vendor/thor/lib/thor/base.rb:476:in `start'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/cli.rb:24:in `start'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/exe/bundle:46:in `block in <top (required)>'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/friendly_errors.rb:123:in `with_friendly_errors'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/exe/bundle:34:in `<top (required)>'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'

استُخدم الخادم القديم PostgreSQL 12

الموقع والخادم القديمان يعملان

يمكنني الدخول إلى حاوية الموقع القديم (كيف يمكنني التحقق من فهرس تالف؟)