我有一个在 ECS 上运行并使用 RDS 的站点。我正在尝试恢复数据库(如这里所述:https://meta.discourse.org/t/restore-failed-entity2char-already-exists-rds-postgres-13-7/245964/7)。
目前的问题是备份无法启动,因为它在等待 sidekiq。它声称等待 60 秒,但我已经等待了 60 分钟,它从未停止等待。
然后我决定在恢复之前删除、创建、迁移数据库(我确信上次就是这样成功的),但我仍然无法删除数据库,因为有 6 个任务打开了它。
SELECT application_name,client_addr FROM pg_stat_activity;
显示这个(并且有 6 个 sidekiq 具有活动连接)
psql | 10.3.2.155
PostgreSQL JDBC Driver | 127.0.0.1
| 127.0.0.1
sidekiq 6.5.8 discourse [0 of 5 busy] | 10.3.2.155
sidekiq 6.5.8 discourse [0 of 5 busy] | 10.x.2.155
sidekiq 6.5.8 discourse [0 of 5 busy] | 10.x.2.34
sidekiq 6.5.8 discourse [0 of 5 busy] | 10.x.2.155
sidekiq 6.5.8 discourse [0 of 5 busy] | 10.x.2.155
sidekiq 6.5.8 discourse [0 of 5 busy] | 10.x.2.34
其中一个地址是 ECS,另一个是我在 EC2 上启动的容器。在这两个容器中,我都执行了 sv stop unicorn,这在其他情况下足以能够删除数据库。
哦。我现在已经停止了 EC2 上的容器,所以那些连接一定是因为它在没有关闭它们的情况下关闭而挂起了?也许我需要重新启动数据库。(重新启动数据库确实停止了那些连接,现在它只显示来自已关闭的 unicorn 的空闲连接)。
我该如何杀死 sidekiq?我需要进入 redis 并清除所有东西吗?(我以前做过,并且可以搜索到如何再次操作)。