redis主从复制

一. 配置

1.建立复制

配置复制的方式三种:

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

 

2.断开复制

在从节点执行slaveof no one来断开与主节点复制关系;

断开复制主要流程:

1) 断开与主节点复制关系。
2) 从节点晋升为主节点。

从节点断开复制后并不会抛弃原有数据, 只是无法再获取主节点上的数据变化。

 

3.切主操作

通过执行slaveof{newMasterIp} {newMasterPort}命令还可以实现切主操作, 切主是指把当前从节点对主节点的复制切换到另一个主节点。

切主操作流程如下:
1) 断开与旧主节点复制关系。
2) 与新主节点建立复制关系。
3) 删除从节点当前所有数据。
4) 对新主节点进行复制操作

切主后从节点会清空之前所有的数据;

 

4. 安全性

主节点会通过设置requirepass参数进行密码验证, 这时所有的客户端访问必须使用auth命令实行校验。

这时从节点与需要配置masterauth参数与主节点密码保持一致, 这样从节点才可以正确地连接到主节点并发起复制流程。

 

5 . 只读

由于复制只能从主节点到从节点, 对于从节点的任何修改主节点都无法感知, 修改从节点会造成主从数据不一致。 因此建议线上不要修改从节点的只读模式;

 从节点可以使用slave-read-only=yes配置为只读模式。

 

6. 传输延迟

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

  • 当关闭时, 主节点产生的命令数据无论大小都会及时地发送给从节点, 这样主从之间延迟会变小, 但增加了网络带宽的消耗。 适用于主从之间的网络环境良好的场景, 如同机架或同机房部署。
  • 当开启时, 主节点会合并较小的TCP数据包从而节省带宽。 默认发送时间间隔取决于Linux的内核, 一般默认为40毫秒。 这种配置节省了带宽但增大主从之间的延迟。 适用于主从网络环境复杂或带宽紧张的场景, 如跨机房部署。

 

二 原理

1.复制过程

复制过程大致分为6个过程:

 

三 搭建

目标:搭建一个主节点,两个从节点的 主从复制结构;拓扑结构如图所示:

1.启动主节点

配置主节点:

port 6379
dir "/usr/local/redis/redis-6379/data"
daemonize yes

启动:

redis-server redis-6379.conf

2. 启动两个从节点

配置6480从节点:

#redis-6480.conf:

port 6480
daemonize yes
logfile "6380.log"
dbfilename "dump-6480.rdb"
dir "/opt/soft/redis/data/"
slaveof 127.0.0.1 6379

#redis-6481.conf:

port 6481
daemonize yes
logfile "6481.log"
dbfilename "dump-6481.rdb"
dir "/opt/soft/redis/data/"
slaveof 127.0.0.1 6379

启动:

redis-server redis-6480.conf
redis-server redis-6481.conf

3 搭建完成,验证

连上6379端口服务器,执行info命令查看;成功返回从节点信息

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值