从 Python 调用 Sentinel 故障转移

Call Sentinel failover from Python

我有一个简单的 Redis 配置 运行 3 个服务器和 3 个哨兵(尽管实例不同)。这个配置运行几乎是完美无缺的,最终,我的Master失败了(Redis常见问题,无法完成后台保存)。

我的问题是,每当我尝试保存(或删除)某些内容时,我都会收到错误消息:

ResponseError: MISCONF Redis is configured to save RDB snapshots, but
is currently not able to persist on disk. Commands that may modify the
data set are disabled. Please check Redis logs for details about the error.

有没有办法让Sentinel调用"failover"强制选举新master?通过 redis-cli 非常简单,但我无法从我的 Python(2.7) 程序(使用 redis.py)找到一种方法。

有什么想法吗?

首先,您可能 运行 磁盘空间不足 space,这会导致该错误。所以解决这个问题,它将不再需要故障转移。

也就是说,要在 Python 中执行此操作,我认为您需要使用 "execute_command" 并将哨兵命令和参数传递给它。所以像:

myclient.execute_command("SENTINEL failover", podname)

其中 myclient 是您的连接对象,poundage 是您在 Sentinel 中用于 pod 的名称,应该这样做。