Redis主从同步

本机搭建注册步骤

在虚拟机中创建三个不同目录分别为7001,7002,7003

修改redis.conf 

关闭AOF,开启RDB

#####切记一定要开启RDB持久化,关闭AOF 
#save ""
appendonly no

将配置文件分别移动到创建目录

echo 7001 7002 7003 | xargs -t -n 1 cp /usr/local/src/redis-6.2.6/redis.conf


批量修改端口,和rdb备份目录

sed -i -e 's/6379/7001/g' -e 's/dir .\//dir \tmp\/7001\//g' 7001/redis.conf

sed -i -e 's/6379/7002/g' -e 's/dir .\//dir \tmp\/7002\//g' 7002/redis.conf

sed -i -e 's/6379/7003/g' -e 's/dir .\//dir \tmp\/7003\//g' 7003/redis.conf

修改redis 实例对应ip地址

sed -i '1a replica-announce-ip 192.168.149.138' 7001/redis.conf

sed -i '1a replica-announce-ip 192.168.149.138' 7002/redis.conf
sed -i '1a replica-announce-ip 192.168.149.138' 7003/redis.conf
 

主从同步的逻辑

从节点的redis.conf 配置文件中指定主节点 redis5.0 之前叫:

#redis5.0之前
slaveof <masterip> <masterport>
#5.0及其以后
replicaof <masterip> <masterport>

临时生效的方案:redis-cli 连接上从节点,然后执行命令

replicaof <masterip> <masterport>

info replication命令 查看集群信息

关键术语:

Replication Id :简称replid,数据集标记,id一直说明是同一数据集,每个master都有一个唯一的replid,slave会保存master节点的replid.

offset:偏移量,随着记录在repl_backlog中的数据增多而逐渐增大,当slave完成同步时会记录当前同步的offset,从而标记同步的位置,当slave的offset小于master的offset时,表示从节点的数据需要更新。因次从节点每次同步数据的时候需要将replid 和自己的offset送给master节点,当上送的replid与master节点的replid不一致时说明是第一次同步,需要全量同步

同步逻辑:

1:执行replicaof命令之后,slave请求同步数据,psync replid offset

2:主节点判断从节点请求的replid是否和自己的一致,不一致则是第一次同步,将master的replid和offset返回给从slave,slave保存版本信息。

3:master执行bgsave命令,生成RDB文件,并将RDB文件发送给从节点

4:从节点清除本地数据,加载RDB文件

5:执行bgsave时,主节点如果有新的写命令,主节点会将这些命令记录到repl_baklog缓冲区中

然后将缓冲区(repl_baklog)的数据发送给slave节点,从节点执行命令,从而保证RDB期间的指令得到同步。

当一个从节点第一次请求主节点是全量同步数据(全量同步比较耗时,消耗cpu,因为要将RDB文件发送给slave,有磁盘io和网络io),后续就增量同步

增量同步:

savle发送offset,master直接从repl_baklog中获取offset之后的数据发送给slave,不需要生成和传输RDB文件

提高同步速度:

主从集群的优化:

主节点修改redis.conf文件的:repl-diskless-sync no 改为yes,启用无磁盘复制,减少一次磁盘读写,直接将数据写到网络中传输给slave(改方案的前提是我们的网络带宽要够大,不然会造成网络拥堵)

Redis单节点的内存不要占用过大,防止RDB文件过大,全部同步较慢

修改主节点中的repl_baklog (repl-backlog-size 1mb  默认为1m)大小,防止未同步的数据被覆盖而进行全量同步,发现slave宕机之后尽快恢复

限制一个master的从节点数量,避免同步数据给主节点带来过大压力,如果节点过多可以采用“主-从-从”的链式结构

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值