如何将 Sidekiq (Redis) 队列移动到另一台服务器?

How to move Sidekiq (Redis) queue to another server?

所以我们在 Rails 应用程序中使用 Sidekiq 作为我们的队列管理系统。 我们还使用 Sidetiq 来管理计划任务和重复任务。

目前大约有 200-300 个计划任务 运行 从几分钟到 30 天不等。

我只会传输 Redis 数据库 rdb 文件,但由于一些配置更改,Rails 项目路径已更改(因此任务将无法再 运行)

将整个计划任务队列转移到新项目路径的首选方法是什么,但手动不是这种情况。

你可以按照你说的复制你的redis转储文件。我不清楚为什么要排除该选项。

手动执行(只需为其创建一个 ruby 脚本),移动计划任务应该非常容易。您唯一需要做的就是移动 redis 集 retryschedule

使用 DUMP 和 RESTORE:

redis-cli -h source_host dump schedule | head -c-1 | redis-cli -h dest_host restore 0 schedule

http://redis.io/commands/restore

我主要担心的是我认为我不能只复制 redis 数据库,因为我的项目路径发生了变化,但事实证明,这不是问题。

为我复制数据库的最快方法是首先将旧服务器上的 redis 绑定到它的 IP 或 0.0.0.0

然后在新服务器上 运行

redis-cli slaveof OLD_SERVER_IP 6379

然后当所有内容都被复制时(复制在几秒钟内完成),运行

redis-cli slaveof no one

多田。您的 Redis 数据库已完全复制。