Redis主从复制
概念
主从复制:将一台Redis服务器的数据,复制到其他Redis服务器。前者为主节点,后者为从节点。==数据的复制是单向的,只能由主节点到从节点。==主节点已写为主,从节点已读为主
主从复制,读写分离。减少服务器的压力 (至少一主二从)
默认情况下,单台redis服务器都是主节点,需要进行配置
主从复制的作用
- 数据冗余
- 故障恢复
- 复杂均衡
- 高可用(集群)
单台redis最大使用内存不应该超过20g
127.0.0.1:6379> info replication #查看当前库的信息
# Replication
role:master #角色 master
connected_slaves:0 #没有从机
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
伪集群主从复制时,需要修改的配置文件内容
- 端口
- pid名字
- log文件名字
- dump.rdb名字
一主二从
默认情况下,每台redis服务器都是主节点,我们一般情况下只用配置从机就好
slaveof 127.0.0.1 6379
配置为主机127.0.0.1 6379端口号的从机 认老大!
命令的配置是暂时的,永久的配置需要在配置文件中修改
replicaof <masterip> <masterport>
masterauth <master-password>
细节
==主机可以写,从机不能写只能读!==主机中的所有信息和数据,都会自动被从机保存
不加哨兵模式,主机断开连接,将失去写操作,之后如果主机重启,从机依然可以获得主机的写操作
如果使用命令行来配置的从机,如果从机重启,会变成一个单独的主机。但如果变回从机,就会立马从主机中获取值。
复制原理
slave启动成功连接到master后会发送一个sync同步命令
master接到命令,启动后台的存盘进程,同时收集所有接收到的用来修改数据集命令,在后台进程执行完毕之后,master将传送整个数据文件到slave,并完成一次完全同步
全量复制: 而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中
增量复制: master继续将新的收集到的修改命令依次传给slave,完成同步
但是只要重新连接master,全量复制将被自动执行