Как мигрировать с Discourse на другую платформу для сообщества?

Привет! Я планирую перенести своё сообщество с платформы Discourse на другую. Как можно экспортировать контент и пользователей в SQL-файл?

Привет :slight_smile:
Просто создайте резервную копию из панели администратора. Всё там находится.

Из любопытства, не могли бы вы рассказать, почему вы переходите с Discourse?

@Canapin Большое спасибо за вашу помощь! Только чтобы уточнить: в панели администратора я открываю раздел резервного копирования и просто загружаю файл за последний день, верно?

Да, именно. Архив должен содержать как дамп SQL, так и загруженные файлы.

Для подстраховки вы также можете сначала создать резервную копию, а затем загрузить самую последнюю резервную копию.

Привет @Gabriel_Fernando_Mar,

После более внимательного рассмотрения вашего скриншота выяснилось, что в нём содержится только база данных, а не файлы загрузок. Это видно по части имени файла sql.gz.

Возможно, вам стоит включить настройку сайта резервное копирование с загрузками перед созданием новой резервной копии, имя файла которой заканчивается на .tar.gz.

Пример:

Извините за мой предыдущий ответ, он был вводящим в заблуждение!

Привет, @Canapin! Надеюсь, у вас всё хорошо :slight_smile:

К сожалению, у нас возникли проблемы с миграцией контента из Discourse. Ранее мы отправляли файл резервной копии в формате SQL в новый инструмент, и одна из ошибок, которую они обнаружили, заключалась в следующем:

  1. Значительное количество вложений отсутствует. Наши инженеры обнаружили это при обработке тем, которые ссылались на вложения, но указанные вложения отсутствовали в предоставленных вами экспортах. Мы предполагаем, что эти вложения сохранены где-то ещё в Discourse (например, в отдельной базе данных). Не могли бы вы ещё раз проверить, есть ли дополнительные вложения, которые вы можете найти и предоставить нам.

После ваших рекомендаций в этой теме я выбрал опцию включения загруженных файлов и сгенерировал новый файл в формате .tar, но ошибка всё ещё появилась (изображение ниже).
Возможно, изображения и другие медиафайлы не включаются в файл миграции, даже если выбрана опция “upload” в настройках резервного копирования? Что может происходить?
Кажется, всё ещё отсутствует более 8100 файлов.

Они отсутствовали до миграции?

Вам следует использовать путь url из таблицы uploads для определения расположения файлов.
Скорее всего, вы обнаружите, что эти файлы хранятся в S3. Они не включены в вашу резервную копию. Ваш скрипт импорта может извлекать их из S3 по мере необходимости (или оставить их там и просто ссылаться на них).

Чтобы уточнить мой вопрос, у вас может быть одна из следующих ситуаций:

  • ни одна из загрузок отсутствует в вашем файле резервной копии
  • некоторые загрузки отсутствуют в вашем файле резервной копии
  • все (доступные) загрузки отсутствуют в вашем файле резервной копии

К сожалению, мы не можем определить, какая из этих ситуаций у вас.

Команда rake posts:missing_uploads может помочь.

Я, конечно, понимаю, что вы, возможно, не хотите обсуждать эту тему, но позвольте мне сказать, что, как и @Canapin, я тоже очень заинтересован в причинах этого переноса. Другие, вероятно, тоже хотели бы это узнать :+1: Они просто вежливее меня :laughing: Спасибо!

@supermathie @RGJ @Canapin Спасибо за ваши ответы! Я приведу здесь шаги, которые мы выполнили для создания файла резервной копии. Пожалуйста, сообщите, если заметите какие-либо ошибки в конфигурации.

Настройки резервного копирования:
Расположение резервной копии — в S3. Это верно, или нам следует выбрать другой вариант? Другой вариант — «локальное хранилище» (в свободном переводе). Что это означает?


После выполнения этих настроек мы просто загрузили файл в формате .tar и передали его команде другой платформы.

Мы что-то сделали неправильно? Нужно ли что-то изменить в настройках резервного копирования? Или команде другой платформы требуется какой-то доступ или другой файл?

Извините за вопросы, но у меня не так много технических знаний в области миграций и скриптов. Мы думали, что экспорт нативно из Discourse — это просто.

Привет, @Mevo! Основная причина — это пользовательский интерфейс и опыт.
Наше сообщество растёт, и нам требовалась более удобная и интуитивно понятная платформа.
Также возникли проблемы с вовлечённостью пользователей: мы рассматривали геймификацию, email-кампании и другие функции.

Спасибо! А на что вы решили перейти?

С вашим файлом резервной копии всё в порядке.

Вам просто нужно попросить команду «другой платформы» искать файлы в бакете S3, проверив колонку url в таблице uploads, вместо того чтобы пытаться найти их в файле резервной копии.

Экспорт — это просто, а импорт в другую систему — нет…

Если вы хотите включить файлы S3 в резервную копию, вам необходимо включить параметр include_s3_uploads_in_backups.

По умолчанию эта опция отключена, так как загрузка всех файлов из S3, их упаковка в tarball и последующая загрузка обратно может занимать много времени и быть потенциально дорогостоящей.

@supermathie @RGJ @Canapin Привет! Надеюсь, у вас всё хорошо! У меня всё ещё есть проблемы с миграцией изображений. Ниже приведены скриншоты текущих настроек резервного копирования и ответы команды платформы Insided:


Вот дополнительные примечания от их инженеров:

  • В файле, который вы предоставили 17.05 (формат .tar), сами файлы не включены.

  • Например, в столбце URL есть значение: /uploads/db0693/original/2X/9/9fedfd520d43a0e03281fc4a6e636ad2116a99a3.gif. Они могут найти файл в предоставленных данных, следуя по пути (uploads/db0693/etc). Поэтому этот файл отсутствует в документе Missing-Files.txt.

  • В другой записи URL выглядит так: // upload-forum-blip.s3.dualstack.us-east-1.amazonaws.com/uploads/db0693/original/2X/d/da4a7824e7a48d73c0cb8724225e5dddc111ed63.jpeg. Здесь они также попытались найти физический файл, следуя по пути в дамп данных к (uploads/db0693/etc). Но этот файл не входит в переданные файлы, поэтому он указан в списке.

  • Исходя из ответов в теме сообщества, на которую вы дали ссылку, мы предполагаем, что вам потребуется зайти в ваш бакет S3 (upload-forum-blip.s3.dualstack.us-east-1.amazonaws.com) и вручную загрузить папку upload (и подпапки) оттуда, в дополнение к файлам, которые они получают при экспорте резервной копии.

Эти примечания имеют смысл? Возможно ли, чтобы кто-то из команды поддержки связался со мной для экспорта этих файлов?
Спасибо!

:face_with_raised_eyebrow: Так что этот файл просто находится по адресу, который они нашли (здесь)

Вы серьёзно утверждаете, что эти инженеры не способны: а) загрузить файл из своего скрипта импорта и/или б) использовать такой инструмент, как S3browser или Cyberduck, для загрузки этих файлов?

Похоже, ваш хостинг предоставляется компанией Communiteq. Обычно мы избегаем S3-бакетов, которыми управляют сами клиенты, но давайте решим этот вопрос. Просто откройте заявку в службу поддержки Communiteq, чтобы зафиксировать ваше разрешение, и я позабочусь о том, чтобы вы получили эти файлы.

Но, возможно, стоит дважды подумать о переходе туда, если именно такой «поддержки» вы получаете от них.

Вы включили include_s3_uploads_in_backups, как рекомендовано?

Кроме того, учетные данные S3 находятся прямо там и могут быть использованы для загрузки файлов.