在 Redis 如何实现主从复制 这篇文章中,我们已经知道了如何在 Redis 中实现主从复制,那么主从复制又有多少种玩法呢?配置多少 Master?配置多少 Slave呢?
一、一主二仆
一个 Master 两个 slave。
即我们前一篇文章中所演示的那样。
这种模式会遇到一些问题,再次记录一下:
-
slave 在连接 master 之前,master 就已经添加了一些 key,那么 slave 连接进来的时候之前的 key 是否也会复制?
答:全部都会复制,即全量复制。
-
是否可以向 slave 里面写数据?是否可以 set key?
答:不可以,slave 只可以 read,master 既可以 read 又可以 write。
-
主机 shutdown 后从机情况如何?从机是上位(变 master)还是原地待命?
答:原地待命,依旧是 slave,等待 master 上位。
-
主机又回来了后,主机新增记录,从机能否顺利复制?
答:必须能。
-
其中一台 slave 宕机后,再次上线还能跟的上大部队吗?
答:不能,必须再次使用
slaveof host port
命令指定主机才可以继续复制数据。
二、薪火相传
master 和 slave 之间以链表的形式连接起来,上一个 slave 是下一个 slave 的 master。
这样 master 就多了,可以有效的缓解主 master 的写压力。
如果其中的一个节点宕掉了,后续节点将无法得到之前节点的数据。
三、反客为主
使用 slaveof no one
命令,将原本的 slave 转成 master,停止与其他数据库的同步。