当前位置 > it书童 > 编程 > 正文

搭建 redis 主从复制

编程 it书童 2020-12-18 17:06:18 0赞 0踩 765阅读 0评论

用三个节点搭建一主两从架构

主节点:192.168.1.171

从节点1:192.168.1.172

从节点2:192.168.1.151

默认情况下,各个 redis 节点都是各自的主节点

127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

接下来修改两个从节点的配置

slaveof 192.168.1.171 6379

重启从节点 redis

$ sudo systemctl restart redis

在主节点中已经能看到配置好的从节点

127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.1.151,port=6379,state=online,offset=113,lag=1
slave1:ip=192.168.1.172,port=6379,state=online,offset=113,lag=1
master_repl_offset:113
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:112

在主节点生成数据

127.0.0.1:6379> set name xiaoming
OK

从节点中就能拿到主节点同步的数据

127.0.0.1:6379> get name
"xiaoming"

由于默认情况下,slave 节点是只读,如果在 slave 写入数据,不会执行成功

127.0.0.1:6379> set age 10
(error) READONLY You can't write against a read only slave.

当 master 宕机后,slave 并不会自动转为 master,只会等待 master 恢复

主节点停止 master

$ sudo systemctl stop redis

从节点的状态

127.0.0.1:6379> info replication
# Replication
role:slave
master_host:192.168.1.171
master_port:6379
master_link_status:down # 主节点状态
master_last_io_seconds_ago:-1
master_sync_in_progress:0
slave_repl_offset:411
master_link_down_since_seconds:7
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
关于我
一个文科出身的程序员,追求做个有趣的人,传播有价值的知识,微信公众号主要分享读书思考心得,不会有代码类文章,非程序员的同学请放心订阅
转载须注明出处:https://www.itshutong.com/articles/968