主从复制的一些问题
- 如果Master断开(宕机),Slave依然连接着Master,可以正常使用读操作,但是没有写操作。如
果Master恢复正常,Slave依旧可以直接获取Master写的信息。 - 如果Slave断开(宕机),当该Slave重启成功,则会变为Master,需要通过slaveof 恢复成Slave,
只要变为Slave,立刻可以从Master同步所有数据。
复制原理
Slave启动成功连接到Master后会主动发送一个同步(sync)命令。
Master接到Slave的命令,把Master数据进行持久化,把rdb文件发送给Slave,Slave拿到rdb进行
读取。
每次Master进行写操作之后,会和Slave进行数据同步
全量复制:一般发生在Slave初始化阶段,这时Slave需要将Master上的所有数据都复制一份。
增量复制:指Slave初始化后开始正常工作时主服务器发生的写操作同步到从服务器的过程。
薪火相传
上一个Slave(从机)是下一个Slave(从机)的Master(主机)。
优点:Slave同样可以接收其他Slave的连接和同步请求,那么该Slave作为了链条中下一个的Master, 可
以有效减轻Master的压力,去中心化降低风险。
缺点:一旦某个Slave宕机,后面的Slave都无法备份。
注意:
也是通过slaveof ip port命令修改Master。
中途变更转向:会清除之前的数据,重新建立拷贝最新的。
Slave6380本质上仍然是从库,只能读、不能写。
反客为主
当一个Master宕机后,后面的Slave可以立刻升为Master,其后面的Slave不用做任何修改
通过slaveof no one 将Slave变为Master。