redis主从复制

参与复制的Redis实例划分为主节点(master)和从节点(slave)。默认情况下, Redis都是主节点。每个从节点只能有
一个主节点,而主节点可以同时具有多个从节点。复制的数据流是单向的,只能由主节点复制到从节点。

配置复制的方式有以下三种:

  1. 在配置文件中加入slaveof (masterHost) (masterPort)随Redis启动生效。
  2. 在redis-server启动命令后加入–slaveof (masterHost} (asterPort)生效。
  3. 直接使用命令:slaveof (masterHost) (masterPort)生效。

环境 :单台多实例
方法一:配置文件开启 slaveof
实例1:6379
修改配置文件
cd /usr/local/redis/conf
cp redis.bak redis_6379.conf

redis_6379.conf:
			daemonize yes  							##开启守护进程
			pidfile /data/redis/redis_6379.pid		##pid文件路径
			logfile "/data/redis/redis_6379.log"	##日志路径
			dbfilename dump_6379.rdb				##库名
			dir /data/redis/						##路径

实例2:6380
复制配置文件
cp redis_6379.conf redis_6380.conf

redis_6380.conf:
			port 6380
			daemonize yes  							##开启守护进程
			pidfile /data/redis/redis_6380.pid		##pid文件路径
			logfile "/data/redis/redis_6380.log"	##日志路径
			dbfilename dump_6380.rdb				##库名
			dir /data/redis/					 	##路径
			slaveof 127.0.0.1 6379                  ##REPLICATION 下开启  slaveof ip port

开启三个shell 登录 redis-cli -p 端口号
输入命令 INFO replication
6379:
role:master #角色
connected_slaves:1 #从数量
slave0:ip=127.0.0.1,port=6380,state=online,offset=196,lag=0 #从信息

6380:
role:slave
master_host:127.0.0.1
master_port:6379
master_link_status:up

验证6379与6380
set 一个值 在6381上查看是否复制过去

方法二 命令行输入 slaveof
实例3:6381
复制配置文件
cp redis_6379.conf redis_6381.conf

redis_6380.conf:
			port 6381
			daemonize yes  							##开启守护进程
			pidfile /data/redis/redis_6381.pid		##pid文件路径
			logfile "/data/redis/redis_6381.log"	##日志路径
			dbfilename dump_6381.rdb				##库名
			dir /data/redis/						##路径

6381 输入slaveof 127.0.0.1 6379
keys * 查看是否复制成功

断开连接:slaveof no one


一些原理

传输延迟
主从节点一般部署在不同机器上,复制时的网络延迟就成为需要考虑的问题, Redis为我们提供了repl-disable-tcpnodelay参数用于控制是否关闭TCP_NODELAY,默认关闭,说明如下:

1.当关闭时,主节点产生的命令数据无论大小都会及时地发送给从节点,这样主从之间延迟会变小,但增加了网络带宽的消耗。适用于主从之间的网络环境良好的场景,如同机架或同机房部署。

2.当开启时、主节点会合并较小的TCP数据包从而节省带宽。默认发送时间间隔取决于Linux的内核,一般默认为40毫秒。这种配置节省了带宽但增大主从之间的延迟。适用于主从网络环境复杂或带宽紧张的场景,如跨机房部署。

复制过程的原理
1.保存主节点信息(master)信息
2.从节点内部通过每秒运行的定时任务维护,来复制相关的逻辑,当定时任务发现存在的新的主节点,从节点会尝试与该新主节点建立网络连接;从节点会建立一个socket套接字,专门用于接受主节点发送的复制命令。
从节点无法建立链接,定时任务会无限重复,直到链接成功,或执行 slaveof no one
查看节点失败的原因 命令:Info replication 查看master_link_down_since_seconds 记录着与主节点连接失败的系统时间
3.连接成功时,从节点发送ping命令,请求进行首次通信
1).检测主从间网络套接字是否可用
2).检测主节点当前是否接受处理命令 如果发送ping命令后,从节点没有收到主节点的pong回复
时,比如网络超时或者主节点正在阻塞无法响应命令,从节点会断开复制连接,下次定时任务
会发起重连。
4).执行权限的验证,密码验证
5).同步数据集 psync同步,主节点全部发送给从节点
6).命令持续复制

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值