Я перенёс форум с 200 000 постов на новый сервер. Работающий сайт был переведён в режим только для чтения, чтобы избежать простоев.
Я восстановил резервную копию на другом поддомене, чтобы пользователи не видели экраны установки или любые проблемы, которые могли возникнуть во время восстановления — что-то вроде dev.example.com.
Как только восстановление было завершено, я перенаправил DNS на новый сервер и изменил домен в файле app.yml на обычный forum.example.com.
Тогда все смайлики в исходных постах указывали на сервер dev.example.com, поэтому я запустил rake:rebake.
Процесс обрабатывает около 1 000–2 000 постов, после чего падает с ошибками, связанными с подключением к базе данных.
Вот несколько фрагментов:
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.4/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.4/lib/bundler/cli.rb:34:in `dispatch'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.4/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.4/lib/bundler/cli.rb:28:in `start'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.4/exe/bundle:45:in `block in <top (required)>'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.4/lib/bundler/friendly_errors.rb:117:in `with_friendly_errors'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.4/exe/bundle:33:in `<top (required)>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
1999 / 200968 ( 1.0%)
Failed to rebake (topic_id: 78730, post_id: 210607)
PG::ConnectionBad: PQsocket() can't get socket descriptor
/var/www/discourse/lib/tasks/posts.rake:108:in `rebake_posts_all_sites'
/var/www/discourse/lib/tasks/posts.rake:7:in `block in <main>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Caused by:
PG::ConnectionBad: PQsocket() can't get socket descriptor
В данный момент я загрузил изображения, перенаправив домен dev.example.com на домен forum.example.com, но это лишь временное решение.
Кто-нибудь знает, как обойти эту ошибку, чтобы я мог переобработать все посты? Возможно, создается слишком большая нагрузка на базу данных?
