05.Redis架构之主从复制

一、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)做高可用;

二、主从复制的原理

相关推荐