一,主从复制
概念:
主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master/leader),后者称为从节点(slave/follower);数据的复制是单向的,只能由主节点到从节点,Master以写操作为主,Slave以读为主;
默认情况下,每台Redis服务器都是主节点,且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点
主从复制的作用:
1,数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式(通俗的说就是提供里备份)
2,故障恢复:当主节点出现问题的时,可以由从节点提供服务,实现由从节点快速恢复数据,实际上是一种服务的冗余(主从复制是符合cp原则的,强调数据的一致性,但是主节点一旦意外挂掉,那么它的内部会花费一定的时间去内部再推举一个Master,这样就没有AP原则的中间间好了,但各有所长,按实际的业务场景去选择即可)
3,负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,从节提供读服务,因为从节点一般是多个的,而且在实际项目中80%都是读操作,那么让从节点们平均的分配读任务,是确保高并发的重要之处
4,高可用(集群)基石:除了上述作用,主从复制还是哨兵和集群实施的基础,因此说主从复制是Redis高可用的基础,
注意:单体的Redis最好不要超过20G,如果超过了,就要考虑使用Redis集群了,一般是一主二从
环境配置(实现出从复制)
仅需配置从节点,因为Redis本身就是主节点
1,本机主从节点信息查看命令
2.配置从节点步骤
2.1,复制三份redis.conf用作从节点的启动配置文件
2.2在相应的配置文件下以下修改数据
最后将主节点Redis和从Redis全部启动就可以了(因为每个都配置了log文件,判断Redis是否启动成功仅需查看日志即可)
注意:这是用一台服务器实现的主从复制(一主三从)
二,复制原理(细节)
搭建Redis主从复制关系集群部署的方式
1,以命令行的方式搭建主从关系
slaveof {host} {port} #属于临时性的搭建主从关系,在运行期间如果某个从机挂掉,重启时需要再配一次主从关系,否则会以单体方式运行
注意:从机一旦重启,主机中的数据就会全部写入从机中,实现数据的同步
2,修改redis.conf文件,永久性的
主机可以写,从机不能写只能读!主机上的所有信息和数据,都会自动被从机保存
3,复制原理
Slave启动连接到Master后发送一个sync命令
Master街道命令后,启动后台存盘进程,同时收集接收到的用于修改数据集的命令,在后台进行完毕后,master将传送整个数据文件到slave,并完成一次全量同步
全量复制:一次性的将Master数据库的数据全部写入到Slave的磁盘里和内存中
增量复制:Master继续将新的所有收集到的修改命令依次传给slave,完成同步,但是只要重新连接master,一次完全同步(全量复制)将被自动执行,我们的数据一定可以从主机看到