跳到主要内容

Redis 哨兵命令

Redis哨兵(Sentinel)是Redis官方提供的高可用性解决方案。它能够监控Redis主从实例的健康状态,并在主节点发生故障时自动进行故障转移,确保服务的持续可用。本文将详细介绍Redis哨兵命令的使用方法,帮助初学者掌握如何通过哨兵实现Redis的高可用性。

什么是Redis哨兵?

Redis哨兵是一个分布式系统,用于监控Redis主从实例的健康状态。它能够自动检测主节点的故障,并在需要时将从节点提升为新的主节点,从而保证服务的持续可用。哨兵还提供了客户端自动发现主节点的功能,使得客户端无需手动配置主节点的地址。

Redis 哨兵命令

Redis哨兵提供了一系列命令,用于管理和监控哨兵系统。以下是一些常用的哨兵命令:

1. SENTINEL masters

该命令用于列出所有被监控的主节点及其状态信息。

bash
SENTINEL masters

输出示例:

bash
1)  1) "name"
2) "mymaster"
3) "ip"
4) "127.0.0.1"
5) "port"
6) "6379"
7) "runid"
8) "abc123"
9) "flags"
10) "master"
11) "pending-commands"
12) "0"
13) "last-ping-sent"
14) "0"
15) "last-ok-ping-reply"
16) "1000"
17) "last-ping-reply"
18) "1000"
19) "down-after-milliseconds"
20) "30000"
21) "info-refresh"
22) "10000"
23) "role-reported"
24) "master"
25) "role-reported-time"
26) "1630000000"
27) "config-epoch"
28) "0"
29) "num-slaves"
30) "2"
31) "num-other-sentinels"
32) "2"
33) "quorum"
34) "2"
35) "failover-timeout"
36) "180000"
37) "parallel-syncs"
38) "1"

2. SENTINEL slaves <master-name>

该命令用于列出指定主节点的所有从节点及其状态信息。

bash
SENTINEL slaves mymaster

输出示例:

bash
1)  1) "name"
2) "127.0.0.1:6380"
3) "ip"
4) "127.0.0.1"
5) "port"
6) "6380"
7) "runid"
8) "def456"
9) "flags"
10) "slave"
11) "pending-commands"
12) "0"
13) "last-ping-sent"
14) "0"
15) "last-ok-ping-reply"
16) "1000"
17) "last-ping-reply"
18) "1000"
19) "down-after-milliseconds"
20) "30000"
21) "info-refresh"
22) "10000"
23) "role-reported"
24) "slave"
25) "role-reported-time"
26) "1630000000"
27) "master-link-down-time"
28) "0"
29) "master-link-status"
30) "ok"
31) "master-host"
32) "127.0.0.1"
33) "master-port"
34) "6379"
35) "slave-priority"
36) "100"
37) "slave-repl-offset"
38) "1000"

3. SENTINEL get-master-addr-by-name <master-name>

该命令用于获取指定主节点的地址。

bash
SENTINEL get-master-addr-by-name mymaster

输出示例:

bash
1) "127.0.0.1"
2) "6379"

4. SENTINEL failover <master-name>

该命令用于手动触发指定主节点的故障转移。

bash
SENTINEL failover mymaster

输出示例:

bash
OK

5. SENTINEL reset <pattern>

该命令用于重置所有匹配指定模式的主节点状态。

bash
SENTINEL reset mymaster

输出示例:

bash
1

实际应用场景

假设你有一个Redis主从集群,主节点为 127.0.0.1:6379,从节点为 127.0.0.1:6380127.0.0.1:6381。你希望使用哨兵来监控这个集群,并在主节点发生故障时自动进行故障转移。

  1. 启动哨兵:首先,你需要启动哨兵实例,并配置它监控 mymaster 主节点。

  2. 监控主节点:使用 SENTINEL masters 命令查看主节点的状态。

  3. 故障转移:如果主节点发生故障,哨兵会自动将从节点提升为新的主节点。你也可以使用 SENTINEL failover mymaster 命令手动触发故障转移。

  4. 获取主节点地址:在客户端中,你可以使用 SENTINEL get-master-addr-by-name mymaster 命令获取当前主节点的地址,并连接到它。

总结

Redis哨兵是Redis高可用性解决方案的核心组件。通过哨兵命令,你可以轻松监控Redis主从实例的状态,并在需要时进行故障转移。本文介绍了常用的哨兵命令及其使用方法,帮助初学者掌握如何通过哨兵实现Redis的高可用性。

附加资源

练习

  1. 启动一个Redis主从集群,并配置哨兵监控主节点。
  2. 使用 SENTINEL masters 命令查看主节点的状态。
  3. 手动触发故障转移,并使用 SENTINEL get-master-addr-by-name 命令验证新的主节点地址。