redis主从复制读写分离
Posted 小林さん
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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,一次全量复制将自动执行
以上是关于redis主从复制读写分离的主要内容,如果未能解决你的问题,请参考以下文章
Redis-----初识Redis-----主从复制.读写分离,主从切换(哨兵机制)