redis的主从复制

1.配置一主一从结构

|----------------|----------|
| IP地址 | 主机名 |
| 192.168.10.161 | redis161 |
| 192.168.10.162 | redis162 |
| 192.168.10.163 | redis163 |

环境准备
bash 复制代码
[root@redis161 ~]# yum install -y redis
[root@redis161 ~]# systemctl stop firewalld &&setenforce 0
修改配置文件
bash 复制代码
[root@redis161 ~]# vim /etc/redis.conf 
bind 192.168.10.161
port 6379
[root@redis161 ~]# systemctl restart redis
[root@redis161 ~]# redis-cli -h 192.168.10.161 -p 6379
192.168.10.161:6379> info replication
# Replication
role:master
connected_slaves:0
master_replid:69b76fe5c2e039cba288e4388eb34668d3bfd65d
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
配置salve服务器
bash 复制代码
[root@redis162 ~]# vim /etc/redis.conf
bind 192.168.10.162
port 6379
[root@redis162 ~]# systemctl restart redis
[root@redis162 ~]# redis-cli -h 192.168.10.162 -p 6379
192.168.10.162:6379> replicaof 192.168.10.161 6379
OK
192.168.10.162:6379> config rewrite
OK
192.168.10.162:6379> exit
[root@redis162 ~]# tail -n 1 /etc/redis.conf 
replicaof 192.168.10.161 6379
[root@redis162 ~]# redis-cli -h 192.168.10.162 -p 6379
192.168.10.162:6379> info replication
# Replication
role:slave
master_host:192.168.10.161
master_port:6379
master_link_status:up
master_last_io_seconds_ago:3
master_sync_in_progress:0
slave_repl_offset:476
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:222f317cb008e09781b92761dd79126c34f661ad
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:476
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:476

3)在主服务器host61查看角色

bash 复制代码
[root@redis161 ~]# redis-cli -h 192.168.10.161 -p 6379
192.168.10.161:6379> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.10.162,port=6379,state=online,offset=1176,lag=0
master_replid:222f317cb008e09781b92761dd79126c34f661ad
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1176
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:1176
存储数据
192.168.10.161:6379> mset x 1 s 2 z 3
OK
192.168.10.161:6379> keys *
1) "z"
2) "s"
3) "x"

4)在从服务器查看是否同步数据

bash 复制代码
[root@redis162 ~]# redis-cli -h 192.168.10.162 -p 6379
192.168.10.162:6379> keys *
1) "x"
2) "z"
3) "s"
192.168.10.162:6379> mget x z s
1) "1"
2) "3"
3) "2"

2.配置一主多从结构

要求:把host63也配置为host61的从服务器

bash 复制代码
[root@redis163 ~]# vim /etc/redis.conf 
bind 192.168.10.163
port 6379
[root@redis163 ~]# systemctl restart redis
[root@redis163 ~]# redis-cli -h 192.168.10.163 -p 6379
192.168.10.163:6379> info replication 无集群信息
# Replication
role:master
connected_slaves:0
master_replid:79bc218cf3fa5eb9a18417220bb8f7b0372c8859
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
192.168.10.163:6379> REPLICAOF 192.168.10.161 6379  #配置主节点信息
OK
192.168.10.163:6379> CONFIG rewrite
OK
192.168.10.163:6379> exit
[root@redis163 ~]# tail -n 1 /etc/redis.conf 
replicaof 192.168.10.161 6379
[root@redis163 ~]# redis-cli -h 192.168.10.163 -p 6379
192.168.10.163:6379> keys *
1) "x"
2) "s"
3) "z"

在redis161主机查看

bash 复制代码
192.168.10.161:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.10.162,port=6379,state=online,offset=1983,lag=0
slave1:ip=192.168.10.163,port=6379,state=online,offset=1983,lag=1
master_replid:222f317cb008e09781b92761dd79126c34f661ad
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1983
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:1983

3.配置主从从结构

bash 复制代码
要求: 把host63恢复为独立的redis服务器,然后配置为host62的从服务器

192.168.10.163:6379> REPLICAOF no one 清除集群信息
192.168.10.163:6379> info replication
# Replication
role:master
connected_slaves:0
master_replid:714d4a8767466a816a5732259b5c08f002921bba
master_replid2:222f317cb008e09781b92761dd79126c34f661ad
master_repl_offset:2529
second_repl_offset:2530
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1914
repl_backlog_histlen:616
192.168.10.163:6379> REPLICAOF 192.168.10.162 6369 配置162主机为master节点
192.168.10.163:6379> config rewrite
OK
192.168.10.163:6379> exit
[root@redis163 ~]# tail -n 1 /etc/redis.conf 
replicaof 192.168.10.162 6379
192.168.10.163:6379> info replication
# Replication
role:slave
master_host:192.168.10.162
master_port:6379
master_link_status:down
master_last_io_seconds_ago:-1
master_sync_in_progress:0
slave_repl_offset:2529
master_link_down_since_seconds:116
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:714d4a8767466a816a5732259b5c08f002921bba
master_replid2:222f317cb008e09781b92761dd79126c34f661ad
master_repl_offset:2529
second_repl_offset:2530
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1914
repl_backlog_histlen:616

在redis162查看角色

bash 复制代码
192.168.10.162:6379> info replication
# Replication
role:slave
master_host:192.168.10.161
master_port:6379
master_link_status:up
master_last_io_seconds_ago:4
master_sync_in_progress:0
slave_repl_offset:2893
slave_priority:100
slave_read_only:1
connected_slaves:1
slave0:ip=192.168.10.163,port=6379,state=online,offset=2893,lag=1
master_replid:222f317cb008e09781b92761dd79126c34f661ad
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:2893
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:2893
192.168.10.162:6379> 
相关推荐
张洛闻Eren8 小时前
MySQL 维护稳定系统【MySQL第二课】
linux·数据库·mysql·云原生
ltl8 小时前
Redis 紧凑编码:listpack、quicklist 与 intset
redis
布莱克6059 小时前
理解索引:从概念到实践
数据库·mysql
我不是疯子是傻子12 小时前
Qt CAN通信周期发送抖动?实测定时器精度校准与时间戳补偿方案
开发语言·数据库·qt
这个DBA有点耶13 小时前
数据库迁移怎么做到“零翻车“:金仓 KDMS/KDTS/KFS 工具链实测
数据库·架构·dba
2501_9378609413 小时前
MySQL联合查询(多表查询)
数据库·mysql
名字还没想好☜14 小时前
Next.js 用 Server Components 直连数据库:去掉 API 层的边界,和三条别踩的安全红线
前端·javascript·数据库·安全·react·next.js
迷迭香yy14 小时前
行业板块轮动因子实战从板块资金到因子建模的本地化Python全流程
数据库·人工智能·python
SelectDB15 小时前
抖音集团 实时数据仓库:Apache Doris / SelectDB 的技术能力与实践
数据库
SelectDB15 小时前
网易 日志与时序数据分析:Apache Doris / SelectDB 的技术能力与实践
数据库