在过去的一个月里,我们在各种场景和 Docker 容器中进行了无数次迁移测试。此外,我还执行了更多从一台服务器到另一台服务器的 Discourse 数据库恢复操作。
基于广泛的恢复测试,Discourse 的恢复过程非常出色,在命令行环境下各种情况中均完美运行。
例如,我们使用一个非常简单的脚本,将其保存在我的 /shared/neo/bin 目录中:
#!/bin/bash
echo "cd /var/www/discourse"
cd /var/www/discourse
echo "discourse enable_restore"
discourse enable_restore
echo "begin neo restore"
discourse restore unix-com-community-2020-03-27-033157-v20200320193612.tar.gz
echo "discourse disable_restore"
discourse disable_restore
当然,这个小小的 Bash 脚本并非必要,也不够优雅;但像这样“让操作更简单、更快捷”的小脚本,在你忙碌时确实很有帮助,只需将最新的备份复制粘贴到脚本中,即可快速完成恢复。
对我而言,我总是在命令行(在应用内,当然也在 Docker 中)执行恢复操作。经过多次测试场景验证,Discourse 的恢复过程从未失败过。只需创建一个新的 Discourse Docker 安装,然后从命令行执行恢复,“boom”,一切搞定。
与 Docker 出现之前的“恐龙时代”相比,Discourse 在 Docker 中恢复过程的卓越性使得整个恢复流程变得更加简单和高效。
例如,我们还将 Discourse 备份复制到异地(与生产环境的 Discourse 实例不同的服务器)。如果生产服务器或数据中心在灾难中“崩溃”,我们可以在任意选定的服务器上从头重建 Discourse 实例,并轻松完成恢复(当然,我们需要保持 DNS TTL 较短,但那是另一个话题)。
向 Discourse 团队致敬,他们的备份和恢复流程经过深思熟虑,设计卓越!
它一次次完美运行,毫无瑕疵。