首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Redis故障切换

Redis故障切换
EN

Stack Overflow用户
提问于 2012-02-10 14:47:18
回答 2查看 20K关注 0票数 27

我们已经为Redis服务器配置了一主两备。如果我的主机出现故障,我们如何在不重启Redis服务器的情况下处理故障转移。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-10 20:42:03

更新:

今天,我推荐使用redis-sentinel,这是Redis的作者antirez开发的一个用于监控和自动故障转移的工具。

原文回复:

检查SLAVEOF命令:http://redis.io/commands/slaveof

当您发现您的主机出现故障时,在您的某个从服务器上发出SLAVEOF NO ONE命令,将其提升为主服务器。然后将你的另一个从节点指向它的新主机。另请参阅“在不停机的情况下升级或重启Redis实例”:http://redis.io/topics/admin

为了管理配置文件,您可以按照以下方式进行操作(注意:未经过测试,仅作为示例)。下面的示例假设每台服务器(/etc/redis/server1.master.conf/etc/redis/server1.slave.conf等)都有两个配置文件,其中一个将该服务器作为某个预定义主服务器的从服务器:

代码语言:javascript
运行
复制
#!/bin/sh

master()
{
    server_name=$1
    redis-cli slaveof no one
    ln -sf /etc/redis/$server_name.master.conf /etc/redis/$server_name.conf
}

# Usage: slave(server1 server2 6379)
slave()
{
    server_name=$1
    master=$2
    master_port=$3
    redis-cli slaveof $master $master_port
    ln -sf /etc/redis/$server_name.slave.conf /etc/redis/$server_name.conf
}

与预定义的配置文件不同,您可以使用sed对其进行动态编辑。基本上,您应该确保在配置文件中始终有一个指向master或slaveof no oneslaveof节。然后使用sed重写配置(同样,没有经过测试,只是作为思考的食粮):

代码语言:javascript
运行
复制
#!/bin/sh

master()
{
    server_name=$1
    config=$server_name.conf
    redis-cli slaveof no one
    sed -i "s/^slaveof.*/slaveof no one/" $config
}

# Usage: slave(server1 server2 6379)
slave()
{
    server_name=$1
    config=$server_name.conf
    master=$2
    master_port=$3
    redis-cli slaveof $master $master_port
    sed -i "s/^slaveof.*/slaveof $master $master_port/" $config
}
票数 29
EN

Stack Overflow用户

发布于 2016-09-02 03:06:42

我建议您研究一下Redis Cluster ( 3.2版本是目前最新的稳定版本)。集群这是一种新的方法,不再有前哨。故障转移原理相同,在master宕机的情况下,slave升级到master,加上Redis支持的包括分片逻辑在内的更多新功能。应用程序只需要连接到具有一组节点的集群,仅此而已。

如果我们谈论的是一般的故障转移,请注意,Redis集群不保证强一致性。

请从以下位置找到代码片段:http://redis.io/topics/cluster-tutorial

"Redis集群不能保证强一致性。实际上,这意味着在某些情况下,Redis集群可能会丢失系统向客户端确认的写入。

Redis集群可能丢失写入的第一个原因是因为它使用异步复制。

还有另一个值得注意的场景,Redis集群将丢失写入,这发生在网络分区期间,其中客户端与少数实例隔离,其中至少包括一个主实例。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9223840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档