نقل موقع Discourse إلى VPS آخر باستخدام rsync

لقد أنجزت هذا، ويبدو أن Postgres (و Discourse!) سعيدان.

لقد قمت بتنظيفها يدويًا، وجعلت عناوين URL فريدة بأنماط ** حسب الاقتضاء. قد يكون مجرد ذاكرة تخزين مؤقت غير ضارة حيث كان بإمكاني حذف التكرارات ولكني لم أرغب في المخاطرة.

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

بعد بضع محاولات فاشلة لإعادة البناء، والتي تستغرق حوالي 30 ثانية في كل مرة وتُبلغ عن مشكلة واحدة، كان هذا هو سحري SQL للحصول على قائمة كاملة بالعناصر الإشكالية على الفور:

discourse=# select topic_id, post_id, url, COUNT(*) from topic_links GROUP BY topic_id, post_id, url HAVING COUNT(*) > 1 order by topic_id, post_id;
 topic_id | post_id |                          url                          | count 
----------+---------+-------------------------------------------------------+-------
    19200 |   88461 | http://hg.libsdl.org/SDL/rev/**533131e24aeb           |     2
    19207 |   88521 | http://hg.libsdl.org/SDL/rev/44a2e00e7c66             |     2
    19255 |   88683 | http://lists.libsdl.org/__listinfo.cgi/sdl-libsdl.org |     2
    19255 |   88683 | http://lists.libsdl.org/**listinfo.cgi/sdl-libsdl.org |     2
    19523 |   90003 | http://twitter.com/Ironcode_Gaming                    |     2
(5 rows)

(5 عناصر مشكلة متبقية في هذا الاستعلام، لأغراض توضيحية.)

ثم كنت أنظر إلى كل مشاركة لمعرفة ما كان موجودًا وما يجب إصلاحه:

select * from topic_links where topic_id=19255 and post_id=88683

ثم إصلاح أحدها:

update public.topic_links set url='http://lists.libsdl.org/__listinfo.cgi/**sdl-libsdl.org' where id=275100;

حتى نفدت الأشياء التي يجب إصلاحها. :slight_smile:

ربما كان بإمكاني القيام ببعض سحر الربط الداخلي (أو ربما القليل من Ruby) للحصول على كل هذا في استعلام واحد، لكنني لست خبيرًا واتضح أنه لم يكن الأمر يستغرق ساعات للقيام به يدويًا. لكنه كان مملاً، لكي أكون واضحًا. :slight_smile:

ثم قمت بتشغيل REINDEX DATABASE discourse; بدون CONCURRENTLY فقط للحفاظ على البساطة، وحذفت بعض فهارس ccnew* التي فاتنيها سابقًا، وكنت جاهزًا للانطلاق.

كان الموقع مباشرًا طوال الوقت، ولم يكن هناك أي وقت توقف.

سواء كان هذا ضروريًا أم لا، أشعر بالتأكيد أن بياناتي أكثر أمانًا الآن، ولست أندفع نحو كارثة غير معلنة في المستقبل.

شكرًا لدفعي في الاتجاه الصحيح لمعرفة هذا، @pfaffman!

إعجابَين (2)