前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >redis主从复制原理及实操

redis主从复制原理及实操

原创
作者头像
灬沙师弟
发布2022-10-04 09:42:32
2861
发布2022-10-04 09:42:32
举报
文章被收录于专栏:Java面试教程Java面试教程

redis官方复制中文文档 redis使用默认的异步复制,其特点是低延迟和高性能

redis_异步弱一致性.png
redis_异步弱一致性.png

实操一下

在一台机器上起3个实例模拟主从复制

代码语言:javascript
复制
mkdir test
cd test
延用之前的6379 6381,使用utils下的install_server起个6381
./install_server.sh
service redis_6381 stop
cd test
cp /etc/redis/* ./
vi 6379.conf # 关闭aof 让其只落rdb文件,其他配置和之前实验一样,在前台阻塞运行,日志也输出到控制台不出输出到log文件中,6380 6381两个配置文件也照着6379修改。
cd /var/lib/redis #如果有文件都删掉 6379 6380 6381文件夹保留
redis-server ~/test/6379.conf
redis-server ~/test/6380.conf
redis-server ~/test/6381.conf
#起三个服务分别在3个窗口前台运行,3个实例准备好了,redis-cli 36379 6380 6381分别连上,现在思路是让6379做主,另外两个做从。
#在6380客户端执行 
REPLICAOF 127.0.0.1 6379

6379上

redis_主从实战01.png
redis_主从实战01.png

6380上

代码语言:javascript
复制
#在6379上设置k1
set k1 aaa
#在6380上取
keys * #可以看到 k1 aaa
#在6380上
set k2 aaaa #报错 READONLY You cant't write against a read only replica,当然这个不能写变成能写也可以在配置文件中去设置啦
#在6382上(这时还没有追随6379),设置一个k3 ccc,只有6381有k3,紧接着做一个追随
REPLICAOF 127.0.0.1 6379
redis_主从实战03.png
redis_主从实战03.png
代码语言:javascript
复制
#6381上再来执行
keys *
#只有k1这个key了,6381上本身的k3已不复存在
#在test/6379 test/6380 test/6381目录下
ll
#可以看见有dump.rdb文件

这个主从复制存在挂的情况,主可能会挂,从也可能会挂

代码语言:javascript
复制
#现在6381上直接 ctrl c,退出redis运行,那么6381这个从就挂了
#在主节点6379上查看
redis_主从实战05.png
redis_主从实战05.png
代码语言:javascript
复制
#现在在6379上新增一个k4,6380也可以get k4,这时候在重新启动6381 
redis-server ./6381.conf --replicaof 127.0.0.1 6379
#这时在查看key,可以看到有刚刚6381掉线后增加的k4
#还可以追加 aof
redis-server ./6381.conf --replicaof 127.0.0.1 6379 --appendonly yes
#可以看到6379落了rdb,6381下有aof文件
redis_主从实战06.png
redis_主从实战06.png
redis_主从实战07.png
redis_主从实战07.png

主挂了,主一定知道谁连着它的。直接将主挂掉,2个从都在报主挂了,这时候我们手动让6380为主

代码语言:javascript
复制
#在6380上操作
REPLICAOF no one
redis_主从实战08.png
redis_主从实战08.png
代码语言:javascript
复制
#在6381上操作,手动追随新主
REPLICAOF 127.0.0.1 6380

配置文件几个配置项

代码语言:javascript
复制
replica-serve-stale-data yes #是不是要同步完才支持查询数据
replica-read-only yes #备机是不是只支持查询还是查询写入都可以
repl-diskless-sync no #主给从的数据是走磁盘还是网络
repl-backlog-size 1mb #增量复制
min-replicas-to-write 3 #最小写成功,向强一致性靠拢
min-replicas-max-lag 10
redis_主从实战10.png
redis_主从实战10.png

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 实操一下
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档