redis主从复制读写分离

概念

主从复制,就是将一台Redis服务器的数据,复制到其他Redis服务器,前者称之为主节点(master/leader),后者称之为从节点(slave/follower);数据的复制是单向的,只能由主节点到从节点。Master以写为主,Slave以读为主。

默认情况下,每台Redis服务器都是主节点;

且一个主节点可以有多个从节点,但一个从节点只能有一个主节点。

环境配置

每个节点要修改的配置文件

port 5001   #端口
pidfile /var/run/redis_5001.pid   #pid名字
logfile "/home/apps/redis-5.0.5/logs/5001.log"    #log文件名字
dbfilename dump5001.rdb	  #dump.rdb名字

通过命令配置主从(临时的)

SLAVEOF 127.0.0.1 5001  #将当前节点设置为指定节点的从节点

通过配置文件配置主从(永久的)

replicaof 192.168.190.131 5001 #将当前节点设置为指定节点的从节点
masterauth <master-password>   #如果主节点有密码的话要在这设置密码

查看节点信息

info replication  # 查看当前节点的信息

# Replication
role:master   # 角色master
connected_slaves:0  #没有从机
master_replid:6eed7dea191603a3e1dd7a3fb1d61163d17aabd3
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

总结

一个集群最少要三个节点(一主二从)

主节点可以读写,从节点只能读

主节点如果断开连接,从节点依旧可以读,只是这个集群就失去了写操作。如果主节点重新连接了,从节点仍然可以读取主节点的信息。

主从复制原理

Slave启动成功连接到master后会发送一个sync同步命令

Master接收到命令,启动后台的存盘进程,同时收集所有接收到的用于修改数据的命令,在后台进程执行完毕后,master将传送整个数据文件到slave,并完成一次完全同步

全量复制:slave服务在接收到数据库文件数据后,将其存盘并加载到内存中

增量复制:Master继续将新的所有收集到的修改命令依次传送给slave,完成同步

只要重新连接master,一次全量复制将自动执行

相关推荐