无法恢复,因为 sidekiq 不放手

我有一个在 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 并清除所有东西吗?(我以前做过,并且可以搜索到如何再次操作)。

您只需要停止所有运行了 sidekiq 的实例(容器、unicorns)。

我想象中也是这样,但即使在我关闭了运行 sidekiq 的容器后,postgres 仍然显示有活动连接。同样,我在 ECS 实例上执行了 sv stop unicorn,但 postgres 仍然显示有活动连接。

我重启了 RDS 服务器,在 EC2 上启动了容器(ECS 上的实例没有足够的磁盘空间进行恢复),执行 sv stop unicorn,然后删除、创建、恢复数据库,现在我正在尝试恢复。

非常感谢你的帮助。我真的很感激!

1 个赞