我设置了一个新主机,以便拥有一个“暂存”环境。我重新创建了相同的 discourse 安装,版本应该是一样的。我正在运行的版本是:2.8.2。
第一个评论,截至 2.8.2 版本,我的备份大小从 282MB 下降到大约 90MB。不确定原因,但我将利用一些智能信息。
我从我的论坛下载了最新的存档,并将其上传到新暂存环境的本地存储。
恢复因以下原因失败:
[2022-02-27 19:41:18] ALTER TABLE
[2022-02-27 19:41:18] ALTER TABLE
[2022-02-27 19:41:18] 正在迁移数据库...
[2022-02-27 19:43:00]
[2022-02-27 19:43:00] 正在重新连接到数据库...
[2022-02-27 19:43:00] 正在重新加载站点设置...
[2022-02-27 19:43:00] 正在为非员工用户禁用传出电子邮件...
[2022-02-27 19:43:02] 正在禁用只读模式...
[2022-02-27 19:43:02] 正在清除类别缓存...
[2022-02-27 19:43:02] 正在重新加载翻译...
[2022-02-27 19:43:02] 正在重新映射上传...
[2022-02-27 19:43:02] 将 'https://forum.geekbeacon.org' 重新映射到 'https://forum-staging.geekbeacon.org'
[2022-02-27 19:43:08] 正在恢复上传,这可能需要一些时间...
[2022-02-27 19:43:36] EXCEPTION: 8 个帖子未重新映射到新的 S3 上传 URL。数据库 'default' 的 S3 迁移失败。
[2022-02-27 19:43:36] /var/www/discourse/lib/file_store/to_s3_migration.rb:132:in `raise_or_log'
/var/www/discourse/lib/file_store/to_s3_migration.rb:87:in `migration_successful?'
/var/www/discourse/lib/file_store/to_s3_migration.rb:373:in `migrate_to_s3'
/var/www/discourse/lib/file_store/to_s3_migration.rb:66:in `migrate'
/var/www/discourse/lib/file_store/s3_store.rb:317:in `copy_from'
/var/www/discourse/lib/backup_restore/uploads_restorer.rb:62:in `restore_uploads'
/var/www/discourse/lib/backup_restore/uploads_restorer.rb:44:in `restore'
/var/www/discourse/lib/backup_restore/restorer.rb:61:in `run'
/var/www/discourse/script/spawn_backup_restore.rb:23:in `restore'
/var/www/discourse/script/spawn_backup_restore.rb:36:in `block in <main>'
/var/www/discourse/script/spawn_backup_restore.rb:4:in `fork'
/var/www/discourse/script/spawn_backup_restore.rb:4:in `<main>'
[2022-02-27 19:43:36] 正在尝试回滚...
[2022-02-27 19:43:36] 正在回滚...
[2022-02-27 19:43:36] 正在清理...
[2022-02-27 19:43:36] 正在从 discourse_functions 模式中删除函数...
[2022-02-27 19:43:36] 正在删除临时文件 '/var/www/discourse/tmp/restores/default/2022-02-27-194051' 目录...
[2022-02-27 19:43:36] 正在取消暂停 sidekiq...
[2022-02-27 19:43:36] 正在将恢复标记为完成...
[2022-02-27 19:43:36] 正在通知 'csgeek' 恢复结束...
1 个赞
pfaffman
(Jay Pfaffman)
2
这是您的问题。也许可以使用相同的 S3 存储桶并使用相同的存储桶?也许要确保名为“下载 S3 进行备份”之类的隐藏设置已打开。您需要搜索或查看源以获取该设置的名称。
或者,您可能需要查看生产站点上的其余上传是否在 S3 上。
1 个赞
我没有配置 S3,我猜可能是旧服务器上有一些未映射到有效 S3 位置的旧数据。
我回到了旧服务器,配置了 2 个存储桶,1 个用于备份,1 个用于媒体。我按照指南设置了 AWS S3,包括 CDN。
当我运行 rake uploads:migrate_to_s3 失败后,我接着运行了 posts:rebake,这似乎减少了错误数量,但它仍然失败:
请注意,迁移到 S3 目前是不可逆的!
[CTRL+c] 取消,[ENTER] 继续
正在为 'default' 迁移上传到 S3...
正在将文件上传到 S3...
- 列出本地文件
=> 208 个文件
- 列出 S3 文件
. => 978 个文件
- 同步文件到 S3
................................................................................................................................................................................................................
正在更新数据库中的 URL...
正在删除旧的优化图像...
正在将所有包含灯箱的帖子标记为重新烘焙...
15 个帖子被标记为重新烘焙
rake 中止!
FileStore::ToS3MigrationError: 1 个帖子未重新映射到新的 S3 上传 URL。数据库 'default' 的 S3 迁移失败。
/var/www/discourse/lib/file_store/to_s3_migration.rb:132:in `raise_or_log'
/var/www/discourse/lib/file_store/to_s3_migration.rb:87:in `migration_successful?'
/var/www/discourse/lib/file_store/to_s3_migration.rb:373:in `migrate_to_s3'
/var/www/discourse/lib/file_store/to_s3_migration.rb:66:in `migrate'
/var/www/discourse/lib/tasks/uploads.rake:123:in `migrate_to_s3'
/var/www/discourse/lib/tasks/uploads.rake:102:in `block in migrate_to_s3_all_sites'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rails_multisite-4.0.0/lib/rails_multisite/connection_management.rb:80:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rails_multisite-4.0.0/lib/rails_multisite/connection_management.rb:90:in `each_connection'
/var/www/discourse/lib/tasks/uploads.rake:100:in `migrate_to_s3_all_sites'
/var/www/discourse/lib/tasks/uploads.rake:96:in `block in <main>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Tasks: TOP => uploads:migrate_to_s3
(运行任务时显示 --trace 以查看完整跟踪)
有没有办法以详细模式运行 migrate_to_s3 来识别出问题的帖子?
Saiano
(Saiano)
4
我遇到了同样的问题,在不更改 s3 存储桶的情况下迁移了我的服务器。
有什么建议吗?
pfaffman
(Jay Pfaffman)
5
您的还原出现类似以下的错误?
FileStore::ToS3MigrationError: 1 个帖子未重新映射到新的 S3 上传 URL。数据库 'default' 的 S3 迁移失败。
在这种情况下,最好是修复上传位置不正确的帖子。但我认为有一种情况该测试可能会出现误报。在这种情况下,您可以使用 rake 任务上的一个开关来暂停它,以便您可以修复问题。我不能马上找到它,它也不在应该在的 https://meta.discourse.org/t/backup-discourse-from-the-command-line/64364。我现在正在处理一项任务,所以现在找不到它。
Saiano
(Saiano)
6
是的,我遇到了这类错误
EXCEPTION: 3 个帖子未重新映射到新的 S3 上传 URL。数据库 ‘default’ 的 S3 迁移失败
pfaffman
(Jay Pfaffman)
7
您可以尝试
discourse restore --pause filename
这将暂停恢复过程,您可以在另一个终端中修改数据库以修复它。或者,我想,您可以在它执行该检查之前直接停止它。
pfaffman
(Jay Pfaffman)
10
您需要修复那三个上传,或者在执行该检查之前停止还原。
Saiano
(Saiano)
11
我如何能找到
168000 中的 3 个帖子?
是否可以在跳过验证的情况下停止恢复?
pfaffman
(Jay Pfaffman)
12
我会查看执行该测试的代码,然后运行相同的查询。我可能之前发布过执行此操作的代码。
我发布了
你做过吗?我想在恢复完成后你可以直接按 Control-C 停止。你是在只恢复数据库吗?
Saiano
(Saiano)
13
哦,该死,我没想到在数据库恢复之后、上传之前停止恢复。
我不需要从 S3 迁移上传文件——我能只迁移前端和数据库吗?
你能告诉我哪个选项可以让你停止对帖子执行 rake 操作并识别出有问题的内容吗?那将非常感激。