一、Redis主从复制架构的介绍
## 基本介绍
01:一个主可以有多个从(一主多从);从库下可以有多个从(级联式主从);
02:Redis主从复制时是使用异步复制(主不管slave有没有接收到数据);
03:复制时不会阻塞主服务器响应客户端的请求,因为在进行数据同步时,
主上面执行bgsave命令for出一个子进程来进行数据的同步操作;
04:在复制时可能会影响slave端redis的主进程对客户端的响应;在2.8版本
以后,slave默认是只读的哈?
例如:主从复制架构,写是在master端进行,你通过手段做了读写分离,
让客户端在slave中进行读的操作,此时slave在同步(不管全同步,还是
增量同步)master端的数据时会不会阻塞客户端的读取操作呢?
解答:这个其实是由参数slave-serve-stale-data控制的,它有两个值,
yes和no;yes表示仍然响应,可能数据不是最新的;默认就是yes;no表示
不响应,给客户端报"SYNC with master in progress"错误;
05:主从复制架构中,Master端需要开启持久化嘛?这个得根据需求:
A:对数据没有持久化的需求,Master和slave都可以不开启的;
B:对数据有持久化的需求,Master端不开启,slave端开启,这样会有危险的哈?
因为一但master端重启后,master端是没有数据的,同时也会销毁slave端之前
的持久化数据;
## 为什么要用主从复制
01:在对数据有持久化需求的情况下:
A:对master上的数据做一份数据副本,相当于逻辑上的异地数据灾备;
B:可以结合高可用软件(开源的keepalived或redis自带的sentinel)做高可用;
02:在对数据没有持久化需求的情况下:
可以结合高可用软件(开源的keepalived和redis自带的sentinel)做高可用;
二、主从复制的原理
来源:https://www.cnblogs.com/chenliangc/p/12340016.html