TehLeo
(Chris)
20.Март.2025 22:31:52
1
Не удается восстановить из резервной копии Discourse в S3.
Шаги для воспроизведения:
Наличие резервной копии Discourse в S3.
Установка новой версии Discourse.
Создание учетной записи администратора.
Подключение Discourse к S3.
Поиск резервной копии Discourse в списке резервных копий S3.
Включение восстановления.
Попытка восстановления.
Восстановление не удалось.
Лог:
Я перепробовал все возможные способы устранения неполадок, связанных с S3. Даже переместил резервную копию на сервер и выполнил восстановление через CLI / вручную. Ошибка возникает с тем же логом. Отключал загрузку в S3. Не знаю, какие следующие шаги по устранению неполадок предпринять или как точно определить, какой пост вызывает проблему, и удалить его.
Спасибо за любую помощь!
Canapin
(Coin-coin le Canapin)
20.Март.2025 22:56:55
3
Добро пожаловать!
TehLeo:
Я перепробовал всё
Включает ли «всё» просмотр похожих логов ошибок здесь?
https://meta.discourse.org/search?q=%22posts%20are%20not%20remapped%22%20%22s3%20migration%20failed%22%20order%3Alatest
В частности, этот результат:
This sounds like the problem mentioned in Can't restore a backup if it includes link to Discourse onebox
You should be able to fix this during the restore, but you need to do it on the shell.
cd /var/discourse
./launcher enter app
# start the restore with the --pause argument
discourse restore --pause <backup_filename>
It will pause the restore process at two points:
Before DB migrations are run – you can ignore that; press a key to continue
Before Uploads are res…
TehLeo
(Chris)
20.Март.2025 23:16:08
4
Я следовал этим инструкциям и получил 9 столбов из карьера. В старом столбе не указано, что делать с этими столбами или как исправить проблему на этом этапе.
Canapin
(Coin-coin le Canapin)
20.Март.2025 23:47:11
5
Это то, что возвращает ask.discourse.org . Я не могу гарантировать, что это безопасно или что это вообще работает.
Во время приостановленного восстановления у вас есть возможность временно изменить или очистить проблемные данные, такие как загрузки или сообщения в базе данных, прежде чем Discourse завершит процесс восстановления. Вот как вы можете обработать или изменить проблемные данные на этапе приостановленного восстановления шаг за шагом.
Шаги по ручной обработке проблемных данных при приостановленном восстановлении
Запуск восстановления с приостановкой:
Запустите восстановление с флагом --pause, чтобы процесс восстановления приостановился до применения загрузок или переназначений:
cd /var/discourse
./launcher enter app
discourse restore --pause <backup_filename>
Точка приостановки:
Восстановление приостанавливается в определенных точках:
Перед миграциями базы данных: Нажмите любую клавишу, чтобы продолжить в этот момент, так как это не касается проблемных загрузок или сообщений.
Перед восстановлением загрузок: Остановитесь здесь, чтобы изменить любые проблемы, связанные с загрузками или содержимым сообщений. Это критический момент, когда необходимо действовать.
Откройте новую сессию SSH:
Пока восстановление приостановлено, откройте новую сессию SSH , чтобы взаимодействовать с приостановленным экземпляром, не прерывая процесс восстановления:
cd /var/discourse
./launcher enter app
Доступ к консоли Rails:
Войдите в консоль Rails для взаимодействия с базой данных:
rails c
Идентификация проблемных сообщений:
Это вернет сообщения, в которых содержимое поля cooked включает проблемные пути к загрузкам или ссылки onebox.
Изменение или удаление проблемных сообщений:
Если вы нашли проблемное сообщение (сообщения), у вас есть два основных варианта:
Изменение загрузок при необходимости:
Если проблема вызвана конкретными проблемными загрузками:
Возобновление процесса восстановления:
После внесения необходимых изменений вернитесь к приостановленной сессии оболочки и нажмите любую клавишу, чтобы возобновить процесс восстановления.
Важные соображения:
Всегда создавайте резервную копию исходного файла базы данных перед внесением любых изменений в содержимое.
Сосредоточьтесь на исправлении минимального объема данных — то есть устраняйте только проблемное содержимое, не внося ненужных изменений.
Если загрузка является внешней (проблема с URL или CDN), вы можете вручную удалить внешнюю ссылку во время восстановления.
TehLeo
(Chris)
20.Март.2025 23:47:35
6
Итак, я смог удалить все 9 постов, используя следующую команду Rails:
Post.find(id#).destroy
Canapin
(Coin-coin le Canapin)
20.Март.2025 23:49:27
7
Вы запускали это, пока восстановление было приостановлено?