使用插件从备份恢复的最佳方法?

我们最近从 vBulletin 升级到 Discourse。

我们还在学习如何使用 Discourse 及其工具。

其中我担心的一个问题是灾难恢复。

我们保留了长期的自动快照。

我们使用 Discourse 内置工具进行每日备份,并将备份保存到 S3 存储桶中,保留 15 天。

从快照恢复相对直接。

我们的计划是:先恢复最后一个可用的有效快照,然后使用最新的备份还原内容。

我需要一台测试机来尝试一些 Discourse 插件,

这正好是测试灾难恢复计划的好机会。

但这次我没有使用快照,而是尝试从零开始恢复(以防万一所有情况都出错,我们需要从头开始还原可用备份)。

我创建了一台 Debian 机器,更新了软件,并从头安装了 Discourse(未安装任何插件,仅保留最基础配置)。

我配置了 HTTPS 使其正常运行,然后尝试还原最新的备份。

但在更新数据库时失败了。

系统报错称某些表中缺少一些列。事务回滚后,我再次回到了几乎空白的状态。

阅读错误信息以及社区中的一些讨论后,我意识到这可能是由于 Discourse 版本不一致导致的。

我检查了一下,确实新论坛的版本比原始论坛稍新。

我将原始论坛升级到最新版本,并创建了备份。

再次尝试还原,结果仍然出现类似的错误。

因此,可能是新论坛没有安装相同的插件。

于是我修改了 app.yml 以安装这些插件,重建应用,然后再次尝试。

这次成功运行了。

但这让我感到担忧。

如果必须在安装了完全相同插件和版本的机器上还原备份,那么成功还原将非常困难。

这次我的旧论坛仍在运行,因此可以轻松检查版本并将其升级到最新版本。

但在灾难恢复时,你没有机会检查版本或升级软件。

你们是如何解决这个问题的?

备份中是否包含已安装插件的信息,以及 Discourse 和插件的版本信息?

如何创建一个基础的 Discourse 实例,并配置与备份相匹配的 Discourse 和插件版本?

提前感谢您的指导。

插件很少会随意操作数据库。

Jeff,问题不在于某个插件无法运行。

问题似乎是:当你恢复备份时,必须运行与备份创建时完全相同的 Discourse 版本,并安装当时启用的相同插件。

但当你从很久以前恢复备份时,你并不确切知道当时运行的是哪些版本和插件。

如果能从备份文件中列出创建备份时已安装的版本和插件,并在恢复界面中显示出来,将会很有帮助。

不,这并不正确。

您是否在使用第三方插件?据我所知,使用官方 Discourse 插件不会出现这种情况。

所以,恢复备份时并不需要运行与备份完全相同的版本,对吗?
我之前在恢复时遇到了一些错误,原以为是版本不一致导致的。

如果能在恢复前查看备份对应的 Discourse 版本和插件版本,将会很有帮助。

我目前只运行了一个第三方插件:Topic List Preview。

经过多次尝试(未进行任何更改),我最终成功恢复了备份。
奇怪的是,其中一次恢复完全没有报错。

我也发现并不是只有我遇到这个问题: