Redis集群master节点挂掉之后的处理方式
大家好,今天分享Redis集群master节点挂掉之后的处理方式我们前面做的主从复制是这样的一个结构要改成这样将6303的主节点接到6302127.0.0.1:6303> SLAVEOF 127.0.0.1 6302OK127.0.0.1:6303>在6303上看,它的主节点变成了6302127.0.0.1:6303> INFO replication# Replicationr
·
大家好,今天分享Redis集群master节点挂掉之后的处理方式
我们前面做的主从复制
是这样的一个结构
要改成这样
将6303的主节点接到6302
127.0.0.1:6303> SLAVEOF 127.0.0.1 6302
OK
127.0.0.1:6303>
在6303上看,它的主节点变成了6302
127.0.0.1:6303> INFO replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6302
master_link_status:up
master_last_io_seconds_ago:6
master_sync_in_progress:0
slave_repl_offset:4397
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:d41907987e0a9dd87fa62e7f54b6d2ce27740621
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:4397
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:4397
在原先的主节点上看,他只有6302这个从节点了
127.0.0.1:6379> INFO replication
# Replication
role:master
connected_slaves:1
slave0:ip=127.0.0.1,port=6302,state=online,offset=4523,lag=0
master_replid:d41907987e0a9dd87fa62e7f54b6d2ce27740621
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:4523
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:4523
127.0.0.1:6379>
我们发现6302 还是一个从节点(它是不可以写入数据的)
127.0.0.1:6302> INFO replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6379
master_link_status:up
master_last_io_seconds_ago:7
master_sync_in_progress:0
slave_repl_offset:4747
slave_priority:100
slave_read_only:1
connected_slaves:1
slave0:ip=127.0.0.1,port=6303,state=online,offset=4747,lag=1
master_replid:d41907987e0a9dd87fa62e7f54b6d2ce27740621
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:4747
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1626
repl_backlog_histlen:3122
在原先的主节点上写点数据
127.0.0.1:6379> set gw jiao
OK
在6302上获取数据
127.0.0.1:6302> get gw
"jiao"
127.0.0.1:6302>
在6303上获取数据
127.0.0.1:6303> get gw
"jiao"
这样也可以完成主从复制
断掉主节点
127.0.0.1:6379> SHUTDOWN
not connected> exit
[root@localhost bin]#
这时我们已经没有主节点了
这时,在从节点上使用这个命令
可以让这个从节点变成主节点
127.0.0.1:6302> SLAVEOF no one
OK
127.0.0.1:6302>
6302这个从节点已经变成了主节点
127.0.0.1:6302> INFO replication
# Replication
role:master
connected_slaves:1
slave0:ip=127.0.0.1,port=6303,state=online,offset=5669,lag=0 //注意这一行(6303成为了6302的从节点)
master_replid:fe8fffc61e1c21c0892bffb64d51c8224ad5ec93
master_replid2:d41907987e0a9dd87fa62e7f54b6d2ce27740621
master_repl_offset:5669
second_repl_offset:5432
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1626
repl_backlog_histlen:4044
127.0.0.1:6302>
之后,我们使用命令行的方式让其它的从节点(除了原先的主节点以外)连接上这个主节点
连接原先的主节点(即: 6379)
[root@localhost bin]# redis-server redistest/redis01.conf
[root@localhost bin]# redis-cli -p 6379
127.0.0.1:6379> ping
PONG
127.0.0.1:6379>
它现在还是主节点(但是它的下面已经从节点了
)
因为6302已经取代了它主节点(就是老大的意思)的地位
它再次开启也没有用了
127.0.0.1:6379> INFO replication
# Replication
role:master
connected_slaves:0
master_replid:d4f9a27b0db5279fa847cc95488bf9a9fbe04045
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
127.0.0.1:6379>
如果想让原先的主节点再度成为主节点(master),在命令行上加上去就可以了
这样做
127.0.0.1:6302> SLAVEOF 127.0.0.1 6379
OK
127.0.0.1:6302>
这样做
127.0.0.1:6303> SLAVEOF 127.0.0.1 6379
OK
127.0.0.1:6303>
这样它的主节点地位就又回来了(即:6379 又变成了master)
127.0.0.1:6379> INFO replication
# Replication
role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=6302,state=online,offset=98,lag=0
slave1:ip=127.0.0.1,port=6303,state=online,offset=98,lag=1
master_replid:5c4f2e117c26c9a1c1d1310e327f166dc7a88c2e
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:98
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:98
127.0.0.1:6379>
好了,有关于Redis集群master节点挂掉之后的处理方式就到这里了,谢谢大家
更多推荐
已为社区贡献8条内容
所有评论(0)