如何知道redis的主/从状态?

8zzbczxx  于 2023-03-22  发布在  Redis
关注(0)|答案(3)|浏览(145)

如何通过命令行(redis-cli)了解redis的状态?master/slave

ktca8awb

ktca8awb1#

INFO command返回当前角色。
如果我们是主人

role:master

将被示出,以及其他细节。
如果我们切换到从机,可以使用slaveof

slaveof 192.168.1.66 6379

当我们运行INFO时,我们得到更多:

role:slave
master_host:192.168.1.66
master_port:6379
master_link_status:down
master_last_io_seconds_ago:-1
master_sync_in_progress:0
master_link_down_since_seconds:1341313174

编辑:这里有一个简洁的cli命令,如Linus所示(但他刚刚删除了他的帖子):

redis-cli info | grep ^role

:)

cngwdvgl

cngwdvgl2#

我想通过提供分布式设置中的状态含义来扩展上面的答案

# get sentinel / redis instance role of remote host:
› redis-cli -h redis-02.a_slave -p 6379 info|grep role 
role:slave

# get sentinel status of remote host:
› redis-cli -h redis-01.a_sentinel -p 26379 info|grep status
master0:name=mymaster,status=ok,address=172.xx.xxx.xx:6379,slaves=2,sentinels=3

状态

http://redis.io/topics/sentinel#pubsub-messages

  • +reset-master <instance details>-主机已重置。
  • +slave <instance details>-检测到并连接了新的从属设备。
  • +failover-state-reconf-slaves <instance details>-故障切换状态更改为reconf-slaves状态。
  • +failover-detected <instance details>-检测到由另一个Sentinel或任何其他外部实体启动的故障转移(连接的从设备变为主设备)。
  • +slave-reconf-sent <instance details>--leader sentinel向这个示例发送SLAVEOF命令,以便为新的从服务器重新配置它。
  • +slave-reconf-inprog <instance details>--被重新配置的从机显示为新的主机ip:port对的从机,但同步过程尚未完成。
  • +slave-reconf-done <instance details>-从机现在与新主机同步。
  • -dup-sentinel <instance details>--指定主服务器的一个或多个sentinel被删除为重复(例如,当重新启动Sentinel示例时会发生这种情况)。
  • +sentinel <instance details>--检测到并连接了此主服务器的新sentinel。
  • +sdown <instance details>--指定的示例现在处于主观关闭状态。
  • -sdown <instance details>--指定的示例不再处于主观关闭状态。
  • +odown <instance details>--指定的示例现在处于Objectively Down状态。
  • -odown <instance details>-指定的示例不再处于Objectively Down状态。
  • +new-epoch <instance details>--当前纪元已更新。
  • +try-failover <instance details>--正在进行新的故障转移,等待多数人选举。
  • +elected-leader <instance details>--赢得了指定纪元的选举,可以执行故障转移。
  • +failover-state-select-slave <instance details>--新故障切换状态为select-slave:我们正在寻找合适的奴隶来晋升。
  • no-good-slave <instance details>--没有好的slave可以升级。目前我们将在一段时间后尝试,但在这种情况下,可能会发生变化,状态机将完全中止故障转移。
  • selected-slave <instance details>--我们找到了要升级的指定的良好从属设备。
  • failover-state-send-slaveof-noone <instance details>--我们正在尝试将已升级的从机重新配置为主机,等待它进行切换。
  • failover-end-for-timeout <instance details>--故障转移因超时而终止,从属服务器最终将配置为与新的主服务器进行复制。
  • failover-end <instance details>--故障转移成功终止。所有从服务器似乎都被重新配置为与新的主服务器进行复制。
  • switch-master <master name> <oldip> <oldport> <newip> <newport>--配置更改后指定的主设备新IP和地址。这是大多数外部用户感兴趣的消息。
  • +tilt--进入倾斜模式。
  • -tilt--退出倾斜模式。
8ljdwjyq

8ljdwjyq3#

通过对role使用一个非常简单和直接的查询:
redis-cli -p 7000 role

1) "master"
2) (integer) 497098
3) 1) 1) "127.0.0.1"
      2) "7004"
      3) "497098"
   2) 1) "127.0.0.1"
      2) "7006"
      3) "497098"

将命令中的端口7000替换为Redis服务器的实际端口。
在上面的输出中,2个follower示例是我的设置中端口7004和7006处的2个slave。

相关问题