一、Master-Slave主从复制
主从复制简单来说,就是主机数据更新后,根据配置和策略,自动同步到备机的master/slave
机制,Master
以写为主,Slave
以读为主。
二、Master/Slave机制
首先启动三个redis服务器,端口分别为6379
、6380
、6381
此时三台redis服务器的角色都是master
执行SLAVEOF
命令,启动主从机制
主机可以执行写操作,但是从机只能读
当主机挂掉之后,两台从机角色还是slave
,但是状态由up
变成了down
主机挂掉,从机仍然保留数据,原地待命,当主机重新连接,从机又可以继续工作
挂掉一台从机不会影响另一台从机,但是当挂掉的主机重新连接时,从机角色变成主机角色
挂掉的从机需要重新连接主机
除了一主多从的模式,上一个Slave
也可以是下一个slave
的Master
,Slave
同样可以接收其它slaves
的连接和同步请求,那么该slave
作为了链条中下一个的master
,可以有效减轻master
的写压力。如果中途变更转向,那么会清除之前的数据,重新建立拷贝最新的数据。
当主机挂掉的时候,执行SLAVEOF no one
命令,可以使得从机反客为主,变成主机
挂掉的主机再连接时,由于从机反客为主,另一台从机也变更了跟着的主机,所以即使重新启动刚才挂掉的主机,也没有连接着任何的从机
三、主从复制原理
slave
启动成功连接到master
后会发送一个sync
命令,master
接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,master
将传送整个数据文件到slave
,以完成一次完全同步。
slave
在接收到数据库文件数据后,将其存盘并加载到内存中,此时是全量复制。当master
继续将新的所有收集到的修改命令依次传给slave
时,slave
是增量复制,以完成同步。但是只要是重新连接master
,一次完全同步(全量复制)将被自动执行。
四、哨兵模式
哨兵模式就是反客为主的自动化
哨兵模式能够在后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库
在redis.conf
同目录下创建sentinel.conf
哨兵配置文件
执行命令redis-sentinel sentinel.conf
启动哨兵模式
当6379
主机挂掉之后,哨兵会选出新的主机,此时选出的是6380
成为新的主机
当刚才挂掉的6379
主机再次重新启动时,哨兵在它挂掉的时候,在后台已经将它设置成为了从机
6379
重新启动变成从机
一个sentinel
可以同时监控多个master
五、主从复制的缺点
复制延时:
由于所有的写操作都是先在master
上操作,然后同步更新到slave
上 ,所以从master
同步到slave
机器有一定的延迟。