我运行了命令 ./launcher rebuild app
redis is now ready to exit, bye bye ... 导致 Discourse 卡住——已持续 40 分钟,最终通过 Ctrl + C 终止。
它一直在加载。结果是我们未能创建新容器。能否说明一下 Discourse 中哪些日志可以帮助我们查找原因?
我运行了命令 ./launcher rebuild app
redis is now ready to exit, bye bye ... 导致 Discourse 卡住——已持续 40 分钟,最终通过 Ctrl + C 终止。
它一直在加载。结果是我们未能创建新容器。能否说明一下 Discourse 中哪些日志可以帮助我们查找原因?
这是否可能是资源分配问题?
此服务器上是否还托管有其他网站或服务?您的服务器有多少可用内存和 CPU?
这是正常的。
这就不正常了。通常在该消息出现后不到一分钟,新容器就会启动。
你是多次尝试后都得到相同的结果吗?
是的,多次尝试,结果相同。
之前在分支 3d050bdaa31633a954758894629c0eb9fea537d0 上运行
想要升级到 fe71c43c57c0248a8264245cb6ff0dc114da335a
结果导致 Discourse 卡死!!
production.log
在 localhost:6379 连接 Redis 时出错 (Errno::ENETUNREACH) 订阅失败,将在 1 秒后重新连接。调用栈 ["/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:363:in `rescue in establish_connection'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:344:in `establish_connection'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:106:in `block in connect'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:307:in `with_reconnect'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:105:in `connect'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:382:in `ensure_connected'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:231:in `block in process'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:320:in `logging'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:230:in `process'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:139:in `block in call_loop'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:293:in `with_socket_timeout'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:138:in `call_loop'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/subscribe.rb:44:in `subscription'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/subscribe.rb:13:in `subscribe'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis.rb:3468:in `_subscription'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis.rb:2301:in `block in subscribe'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis.rb:51:in `block in synchronize'", "/usr/local/lib/ruby/2.6.0/monitor.rb:235:in `mon_synchronize'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis.rb:51:in `synchronize'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis.rb:2300:in `subscribe'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-3.2.0/lib/message_bus/backends/redis.rb:287:in `global_subscribe'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-3.2.0/lib/message_bus.rb:741:in `global_subscribe_thread'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-3.2.0/lib/message_bus.rb:689:in `block in new_subscriber_thread'"]
作业异常:在 localhost:6379 连接 Redis 时出错 (Errno::ENETUNREACH)
作业异常:在 localhost:6379 连接 Redis 时出错 (Errno::ENETUNREACH)
作业异常:在 localhost:6379 连接 Redis 时出错 (Errno::ENETUNREACH)
作业异常:在 localhost:6379 连接 Redis 时出错 (Errno::ENETUNREACH)
作业异常:在 localhost:6379 连接 Redis 时出错 (Errno::ENETUNREACH)
作业异常:在 localhost:6379 连接 Redis 时出错 (Errno::ENETUNREACH)
作业异常:在 localhost:6379 连接 Redis 时出错 (Errno::ENETUNREACH)
在 localhost:6379 连接 Redis 时出错 (Errno::ENETUNREACH) 订阅失败,将在 1 秒后重新连接。调用栈 ["/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:363:in `rescue in establish_connection'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:344:in `establish_connection'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:106:in `block in connect'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:307:in `with_reconnect'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:105:in `connect'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:382:in `ensure_connected'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:231:in `block in process'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:320:in `logging'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:230:in `process'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:125:in `call'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis.rb:915:in `block in get'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis.rb:51:in `block in synchronize'", "/usr/local/lib/ruby/2.6.0/monitor.rb:235:in `mon_synchronize'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis.rb:51:in `synchronize'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis.rb:914:in `get'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-3.2.0/lib/message_bus/backends/redis.rb:360:in `process_global_backlog'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-3.2.0/lib/message_bus/backends/redis.rb:271:in `block in global_subscribe'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-3.2.0/lib/message_bus/backends/redis.rb:284:in `global_subscribe'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-3.2.0/lib/message_bus.rb:741:in `global_subscribe_thread'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-3.2.0/lib/message_bus.rb:689:in `block in new_subscriber_thread'"]
作业异常:在 localhost:6379 连接 Redis 时出错 (Errno::ENETUNREACH)
创建作用域 :visible_groups。正在覆盖现有方法 Group.visible_groups。
创建作用域 :visible。正在覆盖现有方法 Notification.visible。
创建作用域 :public_posts。正在覆盖现有方法 Post.public_posts。
创建作用域 :private_posts。正在覆盖现有方法 Post.private_posts。
创建作用域 :open。正在覆盖现有方法 Poll.open。
迁移至 CreateDiscourseVotingCategorySettings (20200727220143)
迁移至 CreateDiscourseVotingVotes (20200728222920)
迁移至 CreateDiscourseVotingTopicVoteCount (20200729042607)
创建作用域 :visible_groups。正在覆盖现有方法 Group.visible_groups。
创建作用域 :visible。正在覆盖现有方法 Notification.visible。
创建作用域 :public_posts。正在覆盖现有方法 Post.public_posts。
创建作用域 :private_posts。正在覆盖现有方法 Post.private_posts。
创建作用域 :open。正在覆盖现有方法 Poll.open。
创建作用域 :visible_groups。正在覆盖现有方法 Group.visible_groups。
创建作用域 :visible。正在覆盖现有方法 Notification.visible。
创建作用域 :public_posts。正在覆盖现有方法 Post.public_posts。
创建作用域 :private_posts。正在覆盖现有方法 Post.private_posts。
创建作用域 :open。正在覆盖现有方法 Poll.open。
Ubuntu 14.04 看起来相当老旧了,最近几周我看到一些帖子提到它出现了问题:
https://meta.discourse.org/search?q=14.04%20order%3Alatest
也许是五月到现在某个依赖项的升级破坏了某些功能:![]()
感谢您的回答
我有一台新的服务器,运行 Ubuntu 20.04.1 LTS 并已安装 Docker。
我该如何将我的旧 prod-forum 迁移到这台新服务器上?
能否为我提供分步操作指南?
按照常规指南从头开始构建。复制 app.yml 文件。重新构建。从第一台服务器导入 Discourse 备份文件。完成。
(哦,还有一件小事:重新映射域名的 IP 地址!)
不错,但通过管理面板创建备份对我们不起作用))
迁移 Docker 容器
docker ps -a
docker commit c559bec6f29a local_discourse/app
docker save local_discourse/app > /tmp/local_discourse_app.tar.gz
scp /tmp/local_discourse_app.tar.gz root@my-new-server:/tmp/
---
docker load < /tmp/local_discourse_app.tar.gz
docker run local_discourse/app
问题出现在这一步 - NoMethodError on docker run - #8 by Dev_Work
您目前没有异地备份吗?
我需要一份包含最新数据的副本(而非最新备份)
在为新服务器恢复备份时出现错误?
./launcher enter app
discourse restore discourse-2020-08-24-103334-v20200811004537.tar.gz
很遗憾听到你遇到了问题。
那么,我们来回顾一下:
discourse-2020-08-24-103334-v20200811004537.tar.gz
https://github.com/discourse/discourse/blob/master/docs/INSTALL-cloud.md
你是在一台全新的已安装并测试过 Docker 的 Ubuntu 20.04.1 LTS 服务器上进行的。
接着,你在新的服务器 digs 上手动恢复了上述备份?
情况是这样吗?目前你卡在这一步了吗?
感谢您的回答。
是的,没错,在新版 Ubuntu 20.04.1 LTS 上会出现问题。
您在尝试手动 Discourse 恢复流程之前,是否已创建用户名为 “pavel_BLANKEDOUT” 的管理员?
我猜测这可能不是问题所在,只是出于全面排查的目的询问一下,因为您的重复键错误中提到了用户 “pavel_BLANKEDOUT”。
不,未创建。
用户管理员不在备份数据库中。
你正在使用的备份所在的原始网站是否已完全无法访问?
或者,你能否进入旧网站的容器,检查 Discourse 数据库是否存在损坏的索引?
另外,你那个出问题的旧实例运行的是哪个版本的 PostgreSQL?是 10 还是 12?
听起来和我遇到的问题一样:Search results for 'could not create unique index category:6' - Discourse Meta
哭脸 ![]()
ERROR: 无法创建唯一索引 "index_user_emails_on_email"
DETAIL: 键 (lower(email::text))=(andrii_test@local.com) 重复。
EXCEPTION: psql 失败:DETAIL: 键 (lower(email::text))=(andrii_test@local.com) 重复。
/var/www/discourse/lib/backup_restore/database_restorer.rb:95:in `restore_dump'
/var/www/discourse/lib/backup_restore/database_restorer.rb:26:in `restore'
/var/www/discourse/lib/backup_restore/restorer.rb:49:in `run'
script/discourse:143:in `restore'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/thor-1.0.1/lib/thor/command.rb:27:in `run'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/thor-1.0.1/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/thor-1.0.1/lib/thor.rb:392:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/thor-1.0.1/lib/thor/base.rb:485:in `start'
script/discourse:284:in `<top (required)>'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/cli/exec.rb:63:in `load'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/cli/exec.rb:63:in `kernel_load'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/cli/exec.rb:28:in `run'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/cli.rb:476:in `exec'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/vendor/thor/lib/thor.rb:399:in `dispatch'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/cli.rb:30:in `dispatch'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/vendor/thor/lib/thor/base.rb:476:in `start'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/cli.rb:24:in `start'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/exe/bundle:46:in `block in <top (required)>'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/friendly_errors.rb:123:in `with_friendly_errors'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/exe/bundle:34:in `<top (required)>'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'
旧服务器使用的是 PostgreSQL 12
旧网站和服务器运行正常
我可以进入旧网站的容器(如何检查损坏的索引?)