Redis高级部分之主从复制
1、Redis主从复制
①、主从复制是什么? 主从复制是一种架构思想,Redis部署时一台主机(master),多台从机(slaver),当主机数据更新时,会根据同步策略更新到从机上;主机只负责写,从机只负责读,起到读写分离的效果;
②、主从复制能干嘛?
-
读写分离,性能扩展; 容灾快速恢复;
③、搭建主从复制步骤:
-
将redis.config文件拷贝一份到/opt/redis/myredis/目录下;注,这目录需要自己建; 在myredis目录下新建多份文件,分别命名为redis6379、redis6380、redis6381; 在每份配置文件中写如下内容:
#引用的配置文件绝对路径 include /opt/redis/myredis/redis.conf #pid文件名称 pidfile "/var/run/redis_6379.pid" #指定端口号,如果是redis6380.config这里就要写6380 port 6379 #rdb文件名称 dbfilename "dump6379.rdb"
将拷贝的那份redis.config配置文件打开,将daemonize修改成yes,将Appendonly 关掉或者换名字
247 daemonize yes 1230 appendonly no
设置slave-priority 10:这是设置从机的优先级,值越小,优先级越高,用于选举主机时使用。默认100
④、启动三台服务 ⑤、查看是否启动: ⑥、查看三台主机运行情况:
#进入对应的端口号客户端 redis-cli -c -p 6379/6380/6381
⑦、配置成为某个实例的从服务器,在redis客户端使用:
#在6380和6381上执行: slaveof 127.0.0.1 6379 slaveof <ip> <port>
2、Redis主从复制常用的三种模式
①、一主二仆特点:
-
当某台从服务器挂掉后,重启后默认是主服务器,不是从节点; 当这台从服务器重启手动设为从节点后,会重新全量复制主节点数据; 当主节点挂了,从节点不会升为主节点,当主节点重启后,从节点依旧是 该主节点的从节点;
②、薪火相传特点:
-
上一个Slave可以是下一个slave的Master,Slave同样可以接收其他 slaves的连接和同步请求,那么该slave作为了链条中下一个的master, 可以有效减轻master的写压力,去中心化降低风险 中途变更转向:会清除之前的数据,重新建立拷贝最新的; 风险是一旦某个slave宕机,后面的slave都没法备份; 主机挂了,从机还是从机,无法写数据了;
③、反客为主特点:
-
当一个master宕机后,后面的slave可以立刻升为master,其后面的slave不用做任何修改。 用 slaveof no one 将从机变为主机。使用哨兵模式后就不需要手动操作了;