Лучший способ восстановления из резервных копий с плагинами?

Недавно мы перешли с vBulletin на Discourse.

Мы всё ещё изучаем, как пользоваться Discourse и его инструментами.

Одна из моих главных забот — восстановление после сбоев.

У нас настроены автоматические снимки состояния системы, которые хранятся в течение длительного времени.

Ежедневно мы создаём резервные копии с помощью встроенных в Discourse инструментов и сохраняем их в бакете S3 в течение 15 дней.

Восстановление из снимка состояния довольно простое.

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

Мне понадобилась тестовая машина для проверки некоторых плагинов Discourse.

Это стало хорошей возможностью протестировать план восстановления после сбоев.

Но вместо использования снимка я попытался восстановить систему с нуля (на случай, если всё пойдёт не так, и нам придётся начинать с чистого листа, чтобы восстановить доступную резервную копию).

Я создал машину на базе Debian, обновил программное обеспечение и установил Discourse с нуля (без плагинов, только минимальный набор).

Я настроил HTTPS, чтобы система заработала, а затем попытался восстановить последнюю резервную копию.

Процесс завершился ошибкой при обновлении базы данных.

Система сообщила об отсутствии некоторых столбцов в определённых таблицах. Произошёл откат изменений, и у меня снова оказалось почти пустое содержимое.

Прочитав сообщения об ошибках и несколько тем на форуме, я понял, что проблема может быть вызвана разными версиями Discourse.

Я проверил это. Да, новый форум имел версию немного новее, чем оригинальный.

Я обновил оригинальный форум до последней версии и создал резервную копию.

Попытка восстановления снова завершилась ошибкой с похожими сообщениями.

Возможно, дело в том, что на новом форуме не были установлены те же плагины.

Поэтому я изменил файл app.yml, чтобы установить их, пересобрал приложение и попытался снова.

На этот раз всё прошло успешно.

Но это заставило меня беспокоиться.

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

В этот раз мой старый форум был запущен и работал, поэтому было легко проверить версии и обновить его до последней.

Но при восстановлении после катастрофы у вас не будет возможности проверять версии или обновлять программное обеспечение.

Как вы решаете эту проблему?

Содержит ли резервная копия информацию об установленных плагинах, версиях Discourse и версий плагинов?

Как создать базовый экземпляр Discourse с соответствующими версиями Discourse и плагинов, чтобы они совпадали с версией вашей резервной копии?

Заранее благодарю за ваши рекомендации.

Редко когда плагины вмешиваются в работу базы данных.

Джефф, проблема не в том, что плагин не работает.

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

Но когда вы восстанавливаете резервную копию из прошлого, вы точно не знаете, какие версии и плагины использовались в тот момент.

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

Нет, это не так.

Вы используете сторонние плагины? Насколько мне известно, с официальными плагинами Discourse такого не происходит.

Значит, для восстановления резервной копии не обязательно запускать точно ту же версию, что и в резервной копии?
У меня возникла ошибка при восстановлении, и я подумал, что это связано с тем, что версии не совпадают.

Было бы полезно иметь возможность просмотреть версию Discourse и версии плагинов в резервной копии перед восстановлением.

У меня запущен только один сторонний плагин: предпросмотр списка тем.

Мне удалось восстановить резервную копию после нескольких попыток (без внесения каких-либо изменений).
Странно, но одна из попыток прошла без ошибок.

Я мог видеть, что я не единственный, у кого возникла эта проблема: