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> 
相关推荐
skywalk816315 分钟前
超强人工智能解决方案套件InfiniSynapse:精准的业务理解、对各种数据源进行全模态联合智能分析--部署安装@Ubuntu22.04 & @Docker
数据库·人工智能·python·docker·infini-synapse
纪伊路上盛名在1 小时前
jupyter内核崩溃
前端·数据库·jupyter·生物信息·基因组·k-mer
曼汐 .1 小时前
Python实战应用-Python操作MySQL数据库
数据库·mysql
bcxwz6691 小时前
mysql 创建大写字母的表名失败
数据库·mysql
数据知道1 小时前
【系统分析师】第5章-基础知识:数据库系统(核心总结)
数据库·数据库系统·系统分析师
Mr_Xuhhh1 小时前
数据库期末
数据库·oracle
vace cc1 小时前
sql列中数据通过逗号分割的集合,对其中的值进行全表查重
数据库·sql
虾条_花吹雪3 小时前
5、Spring AI(MCPServer+MCPClient+Ollama)开发环境搭建_第一篇
数据库·人工智能·学习·spring·ai
一 乐8 小时前
民宿|基于java的民宿推荐系统(源码+数据库+文档)
java·前端·数据库·vue.js·论文·源码
山猪打不过家猪10 小时前
(三)总结(缓存/ETag请求头)
缓存·微服务