Есть ли в Discourse инструмент для очистки базы данных?
Этот инструмент удалял бы любые дополнительные данные конфигурации из базы данных. Он удалял бы добавленные столбцы, строки конфигурации и таблицы, которые отсутствуют в стандартной установке Discourse. Инструмент не затрагивал бы контент и настройки сайта. Основной целью было бы удаление всех компонентов плагинов и тем из базы данных.
Лучшее решение, которое я могу предложить, — это развернуть новый экземпляр из резервной копии
Это самый чистый способ сохранить данные вашего форума без больших затрат ручного труда.
Однако, я считаю, что резервные копии включают все таблицы, существовавшие в экземпляре, из которого была сделана копия, в том числе созданные плагинами, даже если вы не установили эти плагины на новый экземпляр.
Если вы хотите погрузиться в детали, вы можете использовать задачи rake для удаления базы данных, создания новой и повторного выполнения миграций, но это приведет к удалению всех ваших данных.
Именно поэтому вариант «установить новую среду и восстановить резервную копию» не является лучшим решением. В базе данных всё ещё остаются следы от старых компонентов и плагинов.
Должен существовать инструмент на крайний случай, который удаляет любые изменения в базе данных, внесённые компонентами и плагинами, оставляя данные и настройки сайта без изменений. Этот инструмент можно запускать перед переходом к решению с новой установкой.
Вы используете термин «миграции». Что вы имеете в виду под этим термином?
Я использую этот термин для обозначения «переноса» данных пользователей и контента в систему. Это никогда не должно изменять структуру базы данных по умолчанию.
Единственное, что может изменить структуру базы данных, — это плагин. Если только Discourse не предоставляет другим способам для людей изменять структуру базы данных.