首页 > 其他 > 详细

Redis主从

时间:2021-03-31 19:16:00      阅读:19      评论:0      收藏:0      [点我收藏+]

单机瓶颈

1 虽然Redis可以实现单机的数据持久化,但是无论是RDB还是AOF,都解决不了单点宕机问题。
2 即一台单机Redis服务器本身出现系统故障,硬件故障等问题后,就会直接造成数据的丢失,
3 此外,单机的性能也是有极限的,因此需要使用另外的技术来解决单点故障和性能扩展的问题。

主从复制原理

1 salve 向master发送sync命令
2 master启动后台存盘进程,并手机所有修改数据命令
3 master完成存盘后,传送整个数据文件到slave
4 slave接受数据文件,加载到内存中完成首次完全同步
5 后续有新数据产生时,master继续将新的数据命令传递给slave完成同步

 

主从复制架构特点:

三种结构模式:
一主一从
一主多从
主从从

一个master可以有多个slave 一个slave只能有一个master 数据流向是单向的,master到slave

主从复制实现

一旦某个slave成为一个master的slave,redis slave服务会清空当前的redis服务器上的所有数据并将master的数据导入到自己的内存,但是如果只是断开同步关系后,则不会删除当前已经同步过的数据
redis slave 也要开始持久化并设置和master同样的连接密码,因为后期slave会有提升为master的可能,slave切换为master同步后会丢失之前的所有数据,而通过持久化可以恢复数据
当配置redis复制功能时,强烈建议打开主服务器的持久化功能,否则的话,由于延迟等问题,部署的服务应该要避免自动启动

参考案例:

导致主从服务器数据全部丢失
1.假设节点a为主服务器,并且关闭了持久化。并且节点b和节点c都从a节点复制数据
2.节点a崩溃,然后由自动拉起服务重启了节点a,由于节点a的持久化被关闭了,所以重启之后么有任何数据
3.节点b和节点c将从a节点复制数据,但是a的数据是空的,于是就把自身保存的数据副本删除

 

在关闭主服务器的持久化,并且同时开启自动拉起进程的情况下,即使使用sentinel来实现redis高可用, 也是非常危险的。因为主服务器可能拉起的非常快,以至于sentinel在配置心跳时间间隔内没有检测到主服务器已被重启,然后还是会执行上面的数据丢失流程

无论何时,数据安全都是极其重要的,所以应该禁止主服务器关闭持久化的同时自动启动

 

命令行配置

 

Redis主从

原文:https://www.cnblogs.com/huakai201/p/14601709.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!