一、什么是主从复制
=========
主从复制就是我们建立数据存档的时候,将一份数据进行复制保存多分存储在不同的机器上。
二、为什么要用主从复制
===========
在redis持久化机制一文中,我们已经提到为了防止数据丢失,redis提供了RDB和AOF两种方式持久化数据,将内存的数据持久化到磁盘上。但是当出现服务器出现故障,比如服务磁盘坏掉导致数据不可恢复时。那又该怎么办呢?
那么为了避免单点故障,我们需要将数据复制多份部署在多台不同的服务器上,即使有一台服务器出现故障其他服务器依然可以继续提供服务。这就要求当一台服务器上的数据更新后,自动将更新的数据同步到其他服务器上,这就是主从复制。
当我们主节点压力比较大时,那么我们可以通过读写分离的方式,对复制的节点数据进行读操作,以增加我们的服务性能
,总结来讲使用主从复制有以下原因
-
数据备份,容灾恢复
-
业务数据读写分离
三、redis主从复制实现
=============
redis实现主从很简单,只需要增加启动脚本或者配置文件中配置slaveof命令即可
1、启动命令
启动redis服务时,后面新增 redis-server --slaveof ip(主redisip) port。
该配置到5.0版本以上改为了 replicaof ,Redis 作者在 GitHub 上发起了一个“用其他词汇代替 Redis 的主从复制术语”的 issue因为有人认为 Redis 中的术语 master/slave (主人 / 奴隶)冒犯到了别人(果然歪果仁们对这还是敏感啊,哈哈),要求 Redis 作者 ANTIREZ 修改这个术语,甚至连 ruby on rails 的作者 DHH 都在表态。
2、配置文件新增
环境两台机器:148.70.47.76(主),111.229.169.46(从)
1、148.70.47.76直接启动redis
2、修改111.229.169.46redis配置,新增slaveof 148.70.47.76 6379 配置或者使用replicaof配置
5.0以上
3、启动111.229.169.46 的redis
4、查看148.70.47.76 redis状态,发现role 为master主节点,有一个从节点,从节点ip为111.229.169.46(该信息很重要,哨兵机制会用到)
查看111.229.169.46 redis状态,发现role 为slave从节点,有一个主节点,主节点ip为148.70.47.76.
3、Tips:
-
配置主从为了安全性可以修改配置文件的masterauth属性来增加同步密码
-
从节点建议用只读模式slave-read-only=yes, 若从节点修改数据,主从数据不一致**.**
-
传输延迟:主从一般部署在不同机器上,复制时存在网络延时问题,redis 提供repl-disable-tcp-nodelay 参数决定是否关闭TCP_NODELAY,默认为关闭.参数关闭时:无论大小都会及时发布到从节点,占带宽,适用于主从网络好的场景.参数启用时:主节点合并所有数据成TCP 包节省带宽,默认为40 毫秒发一次,取决于内核,主从的同步延迟40 毫秒,适用于网络环境复杂或带宽紧张,如跨机房
四、主从复制原理
========
1、主要流程
redis主从主要流程如下:
redis的数据同步主要分为全量同步和增量同步
先自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以扫码领取!
![img](https://img-blog.csdnimg.cn/img_convert/c0fb179135c4de6c31aecf6d471de2aa.jpeg)
写在最后
还有一份JAVA核心知识点整理(PDF):JVM,JAVA集合,JAVA多线程并发,JAVA基础,Spring原理,微服务,Netty与RPC,网络,日志,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,设计模式,负载均衡,数据库,一致性哈希,JAVA算法,数据结构,加密算法,分布式缓存,Hadoop,Spark,Storm,YARN,机器学习,云计算…
**,网络,日志,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,设计模式,负载均衡,数据库,一致性哈希,JAVA算法,数据结构,加密算法,分布式缓存,Hadoop,Spark,Storm,YARN,机器学习,云计算…
[外链图片转存中…(img-D3Qe2M9A-1711490028108)]
需要更多Java资料的小伙伴可以帮忙点赞+关注,点击传送门,即可免费领取!