概念:
主从复制是指将一台Redis服务器上的数据复制到其他Redis服务器上。前者是主节点,后者是从节点。Master以写为主,Slave以读为主,因为大部分的操作都是读操作。这样实现了读写分离,减缓服务器压力。
主从复制的作用
1.数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式
2.故障恢复 :主节点出现问题子节点可以提供服务,实现快速故障恢复。这是服务的冗余
3.负载均衡:配合读写分离,主节点进行写服务,从节点进行读服务,以此来分担服务器负载,在写操作比较少读操作比较多的情景下,多个从节点分担读负载,可以大大提高Redis服务器的并发量。
4.高可用基石
默认情况下,每台服务器都是一个主节点,且一个主节点可以有多个从节点,但是一个从节点只能有一个主节点。
集群环境搭建
开启多个客户端
我们需要多个端口进行测试,所以复制多份redis的配置文件
修改每个从机的配置文件内容:
1.端口号
2.pid
3.日志文件名
4.dump.rdb
例如:
启动服务结果:
集群搭建成功!
一主二从
在默认情况下每一台服务器都是主节点。 想要实现一主二从需要配置。
一般情况下我们去配置从机就好了,去找到自己的主机,然后自己作为从机,给别人当小弟…
主机:6379
从机:6380 、 6381
命令:slaveof
主机(Master)这边的信息可以看出有两个从机:
这样就将集群搭建好了,当然这里的配置是用命令来设置的,只是暂时的。想要永久的配置需要在配置文件中进行配置。
在配置文件中REPLICATION下有主从机的配置:
添加所属主机的IP 和port端口号 ,如果有密码登录就添加密码。
这样启动的时候就可以直接被用作从机,而不需要去配置。
细节
主机(Master)只能写,从机只能读,实现了读写分离,减小了服务器的压力。主机中的全部信息和数据都会自动保存到从机上。
当主机(Master)断开了,从机依然作为从机(Slaver)连接的是断开的主机,主机回来了,从机依然依旧可以去读主机写的信息。
如果是使用命令行来设置从机,当从机(Master)关闭之后,这个从机就会从主机那里消失,这台从机再次启动,之前的配置的从机就会消失,自己是一台主机,获取不到源主机(Master)上的值,当再次设置后,即可获取到主机上的值。
但是在配置类上设置就不一样,因为在配置类上设置的从机是永久的,只要从服务器一启动就会当作是从机。
复制原理
从机(Slaver)启动后连接到主机(Master)上会发出一个sync命令,主机(Master)接受到命令之后就会启动后台的存盘进程,主机(Master)将整个数据全部传送到从机(Slaver),完成一次同步。
- 全量复制:从机(Slaver)将接受到的命令存盘并加载到内存中
- 增量复制:主机(Master)将新收到的修改命令依次传送到从机
只要是从机(Slaver)重新连接主机(Master),就会有一个完全的同步(全量复制)