一、主从复制是什么
主机数据更新后,根据策略和配置自动同步到备机的master/slaver机制,其中master以写为主,slaver以读为主
二、主要作用:
1.读写分离 2.容灾恢复
三、相关命令
info replication:查看当前redis的信息,扮演的角色、有多少个从机等等信息
slaveof ip prot:将对应的redis客户端作为主机
slaveof no one:令当前的redis停止和其他数据库的同步,转成主数据库
三、怎么用
首先我们要先启动多个redis服务,启动三台作为示例,分别使用6379,6380,6381三个端口号。
首先复制3份redis.conf文件作为三个redis服务各自的配置文件,分别修改
1.开启daemonize yes(开启rdb服务)
2.修改pid文件的名字,为对应端口号
3.修改prot,指定端口
4.log的文件名
5.为了区分,修改Dump.rdb的文件名
启动,连接客户端
使用的方式:
1.一主多从:
一个主机连接多个从机
在这种模式下、如果主机断开了连接(出现了意外),从机仍然是从机(不会有任何越界行为),当主机再次连接上时,主机也依旧是主机。
这种模式下的缺点是如果连接主机的从机很多,那么主机的压力就很大,如果主机挂了,那服务就会受到很大的影响(无法再进行写的操作)。
2.薪火相传:
一个主机连接一个或多个从机,同时从机又可以作为下一个从机的主机(从机连接从机而不是直接连接主机),一个链式的连接模式。
如果中途从机要变更链接另外的从机,会先清除之前的数据,重新拷贝新连接的数据
这种模式下,减轻了主机的负担,但是又因为连接的次数、数据传输的次数多,性能会降低一些,同时可能会有失帧的问题。
3.反客为主
如果主机挂了,那么连接主机的从机中,选一个出来变为主机。
4.哨兵模式
哨兵模式其实就是反客为主的自动模式,监控某个主机,如果主机挂了,那么从机自动进行投票,得票数最多的从机变为主机,哨兵会改为监控新诞生的主机,如果这个主机也挂了,就再一次重新票选。
如果新的主机诞生了,原来的主机又连接上了,那么原来的主机会变为了从机
使用这个模式需要先自己写了一个配置文件sentinel.conf,在其中写入
sentinel monitor 被监控数据的名字 ip地址 端口号 得票数超过多少称为主机
(比如 sentinel monitor host6379 127.0.0.1 6379)
然后启动哨兵模式 redis-sentinel sentinel.conf
四、主从复制的复制原理
1.slave(从机)启动后连接master(主机)后,会发送一个sync(同步)命令给master
2.master接收到命令后会启动后台的存盘进程,收集所有用于修改数据的命令,收集完成后master将这个数据文件发送给slave
3.slave接收到文件后,将文件存盘,并将其执行一边加载到内存中(全量复制)
4.之后master会不断的收集写操作命令,并依次发送给slave,完成同步(增量复制)
5.如果slave重新连接了master,那就会自动执行一次增量复制
四、注意的事项
1.作为从机的redis不能进行写的操作(比set key),只能进行读的操作
2.当使用slvaeof命令后,redis会自动将主机的内存数据拷贝到当前从机的内存中