如何在不启动哨兵故障转移的情况下执行redis FLUSHALL?

jak*_*don 8 redis sentinel redis-sentinel

我们有一个带有两个redis服务器的redis配置.我们还有3个哨兵来监控这两个实例并在需要时启动故障转移.

我们目前有一个流程,我们定期在redis服务器上进行FLUSHALL.这是一个阻塞操作,花费的时间比我们为哨兵分配的时间要长.换句话说,我们的哨兵配置包括:

sentinel down-after-milliseconds OurMasterName 5000

并且在服务器上执行redis-cli FLUSHALL需要> 5000毫秒,因此哨兵会启动故障转移.

我们承认做FLUSHALL并不是很好,而且我们也知道我们可以增加毫秒级的时间,但为了这个问题的目的,假设这些都不是选项.

问题是:如果由于FLUSHALL阻塞超过5000毫秒而我们的哨兵没有启动故障转移,我们怎么能进行FLUSHALL(或等效操作)?有没有人遇到并解决了这个问题?

Liv*_*tea 1

您可以只创建新实例:如果您使用的是 AWS 或 Azure 之类的东西,那么您就有用于创建新 Redis 集群的 API。启动它,加载数据,准备好后只需修改 DNS,再次调用 API - 这样所有这些都可以由应用程序的某些部分处理。但在本地,事情可能会变得更加复杂,因为它需要使用 ansible/chef/puppet 进行一些自动化。