恢复到新主机

我设置了一个新主机,以便拥有一个“暂存”环境。我重新创建了相同的 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 个赞

这是您的问题。也许可以使用相同的 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 来识别出问题的帖子?