无法使用 NodeChef 的还原功能

在从同一提供商迁移时遇到了完全相同的问题,不过该主题已经关闭,所以我还是另开一个帖子吧,因为我已经黔驴技穷,不知道该怎么解决这个问题了。

以下是日志

[2020-08-30 02:34:59] [STARTED]
[2020-08-30 02:34:59] 'username' 已开始恢复!
[2020-08-30 02:34:59] 将恢复状态标记为运行中...
[2020-08-30 02:34:59] 确保 /var/www/discourse/tmp/restores/default/2020-08-30-023459 存在...
[2020-08-30 02:34:59] 正在将归档文件复制到临时目录...
[2020-08-30 02:35:00] 正在解压归档文件,这可能需要一些时间...
[2020-08-30 02:35:01] 正在提取转储文件...
[2020-08-30 02:35:07] 正在验证元数据...
[2020-08-30 02:35:07]   当前版本:20200820232017
[2020-08-30 02:35:07]   恢复版本:20191209095548
[2020-08-30 02:35:07] 正在启用只读模式...
[2020-08-30 02:35:07] 正在暂停 Sidekiq...
[2020-08-30 02:35:07] 等待 Sidekiq 完成作业,最长等待 60 秒...
[2020-08-30 02:35:14] 正在 discourse_functions 模式中创建缺失的函数...
[2020-08-30 02:35:15] 正在恢复转储文件..

该表不属于 Discourse,我想这是 NodeChef 的问题?

无论如何,你需要编辑备份文件,并移除该表的数据和引用。

另外,有点好奇,他们预装了不少插件。我的新构建需要预先安装这些插件备份才能工作,还是可以在之后安装?

即使没有它们,恢复操作也不会失败,但在运行恢复之前,最好确保 app.yml 中所有内容都已就位。

我的备份也是来自旧版本,这会导致任何问题吗?

您所说的“先前版本”是什么意思?它有多旧?

不,没问题,恢复过程会自动将其更新到当前版本。
不过在这种情况下,强烈建议先安装插件,然后再恢复备份。

我仅在 .sql 文件中找到了这一处实例。希望删除高亮部分应该能解决问题。(我推测上面那个指的是 public.spatial_ref_sys)

另外,如何将修改后的 dump.sql 替换 tar.gz 文件中的原文件?

# 压缩 dump.sql 并放入与备份相同的目录
gzip dump.sql

# 将备份文件复制为 fixed-* 开头,请将此处的文件名替换为您自己的备份文件名
cp backupfilename-2020-08-30-123456-v20200830123456.tar.gz fixed-backupfilename-2020-08-30-123456-v20200830123456.tar.gz

# 解压
gzip -d fixed-backupfilename-2020-08-30-123456-v20200830123456.tar.gz

# 从归档中删除原始的 dump.sql.gz
# 注意:在此步骤中,备份文件名不包含 .gz
tar f fixed-backupfilename-2020-08-30-123456-v20200830123456.tar --delete dump.sql.gz

# 添加新的 dump.sql.gz
# 注意:在此步骤中,备份文件名不包含 .gz
tar fr fixed-backupfilename-2020-08-30-123456-v20200830123456.tar dump.sql.gz

# 再次压缩
# 注意:在此步骤中,备份文件名不包含 .gz
gzip fixed-backupfilename-2020-08-30-123456-v20200830123456.tar

谢谢 @RGJ,我的网站现在已经完全恢复正常运行了。只需要重新安装一些插件。

另外,非常感谢 @Falco 帮我最初定位问题。