redis主从搭建及同步流程

        主从可以提高redis可用性,主从概念就是将一份数据同步到不同实例上,即使其中一个实例意外宕机,其他实例也可以对外提供服务。

主从流程

        主从建立可以分为三个阶段:

        阶段一:从库向主库发送psync 主库run id offset命令请求建立连接。其中run id为实例唯一id,offset为偏移量。此时第一次建立连接,从库还不知道主库run id,并且全量复制主库数据。所以具体命令为psync ? -1。主库收到psync命令后将主库run id与当前偏移量返回从库。

        阶段二:主库向从库发送RDB快照,从库清空所有数据加载RDB快照。

        阶段三:发送完RDB快照,主库持续将写操作写入到replication backlog缓冲区,从库从缓冲区同步写操作。

        replication backlog缓冲区为环形缓冲区由repl-backlog-size控制大小默认1M,刚建立连接时主从偏移量相同,之后主库每写入一条命令会更新master offset,从库每同步一条主库命令也会对slave offset更新。

        除正常同步数据外,replication backlog缓冲区还可以在主从断开重新连接后对从库增量同步。当重新建立连接时,从库向主库发送psync run id offset,此时offset是从库当前偏移量,主库收到偏移量后会将master offset与slave offset之间命令同步给从库,从而达到增量恢复效果。

        由于replication backlog为环形缓冲区,从库同步较慢时会主库会覆盖写入导致数据丢失。所以repl-backlog-size =(主库命令写入速度-主从同步命令速度)*命令大小 ,但由于网络以及机器写入速度等原因实际设置repl-backlog-size时要比计算得出的值稍微大一些。

主从搭建

        redis主从搭建比较简单,但需要特别注意一些参数。下面演示下一主一从流程

        1.新建两个目录redis6379 ,redis6470分别上传redis压缩文件进行解压

        2.进入解压后目录,使用make进行编译

        3.进入src目录 make install安装,安装失败可能是gcc版本过低导致,可参考centos7 安装升级gcc 

        4.安装完后修改redis.conf配置文件      

主实例
bind 127.0.0.1  注释该行使其他电脑可以访问
daemonize no 改为yes,使实例后台运行
requirepass 123456 设置密码123456

  

从实例

注释该行使其他电脑可以访问
bind 127.0.0.1  

改为yes,使实例后台运行
daemonize no 

设置密码123456
requirepass 123456 

设置主库ip及端口
replicaof 127.0.0.1 6379 

设置要连接的主库密码
masterauth 123456 

----------------------配置以上参数可运行主从,但还有些参数需要注意------------------------

主从断开后是否可以向客户端提供服务设置为no只能执行 INFO, REPLICAOF, AUTH, PING, SHUTDOWN, REPLCONF, ROLE, CONFIG, SUBSCRIBE, UNSUBSCRIBE, PSUBSCRIBE, PUNSUBSCRIBE, PUBLISH, PUBSUB, COMMAND, POST,HOST and LATENCY命令
replica-serve-stale-data yes 

从库是否只读,yes只读
replica-read-only yes 

不能进行时是否使用无盘备份,使用无盘备份从库不保存RDB,主库直接将RDB文件写入从库套接字,针对磁盘读写慢网速快的可以使用
repl-diskless-sync no psync

无盘备份延迟时间
repl-diskless-sync-delay 5 

是否使用无盘加载disabled:不使用,on-empty-db:绝对安全时使用,swapdb先备份一份当前数据,主库RDB解析成功后再删除
repl-diskless-load disabled 

是否禁用nagle算法
repl-disable-tcp-nodelay no 

主从同步环形缓冲区大小
repl-backlog-size 1mb  

repl-backlog保存时间,为0永不删除
repl-backlog-ttl 3600  

主库宕机后哨兵选主优先级,该值越小越容易被选为主库
replica-priority 100  

当从库数小于3并且延迟时间小于等于10秒主库才可以对外提供服务
min-replicas-to-write 3
min-replicas-max-lag 10  

        5.改完配置后进入src文件夹./redis-server /data/redis6379/redis.conf 通过指定配置文件启动

        6. 启动后通过 ./redis-cli -p 6379进入redis,使用info replication查看组从状态
        由于主从刚开始同步时主库会生成RDB同步到从库,所以可以采取主-从-从的方式配置主从,降低主库压力。在配置时只需将replicaof 配置为从库地址,masterauth配置为从库密码即可。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值