Redis主从复制

suaxi
2021-01-03 / 0 评论 / 105 阅读 / 正在检测是否收录...

Redis主从复制

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


1、概念

将一台redis服务器的数据,复制到其他redis服务器上,前者称为主节点(master/leader),后者称为从节点(slave/follower),数据的复制是单向的,只能由主节点到从节点,Master以写为主,Slave以读为主。一般来说,一个主节点可以有多个从节点,但一个从节点,只能有一个主节点。

2、作用

数据冗余:实现了数据的热备份,是持久化之外的另一种数据冗余方式
故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复(服务冗余)
负载均衡:在主从复制的基础上,配合读写分离,在redis写数据时应用连接主节点,读数据时应用连接从节点,以此分担服务器负载(读多写少)
高可用(集群)基石:主从复制是哨兵模式和集群的基础


3、一主二从配置:

此处以单机多集群为例:

2.单机多集群.png

1、修改端口,

2、修改日志文件名6380.log (为避免单机多集群情况下文件名重复,以下同理),

3、修改pid文件名redis_6380.pid

4、修改dump文件名dump6380.rdb,

5、配置主节点地址replicaof 127.0.0.1 6379

6、配置主节点密码masterauth 123456

6380、6381从节点以此类推

3.单机多集群配置文件配置.png

需特别注意密码配置的方式:

主节点redis.conf配置密码的方式为:requirepass 123456

从机redis.conf配置密码的方式为:masterauth 123456

如果主节点配置了密码,从机一定要配置,不然连不上主节点

补充:也可以通过命令行配置(重启redis服务之后配置失效)

127.0.0.1:6380> SLAVEOF 127.0.0.1 6379 #SLAVEOF host port
OK
127.0.0.1:6380> info replication #查看节点信息
# Replication
role:slave
master_host:127.0.0.1
master_port:6379    #主节点
master_link_status:up
master_last_io_seconds_ago:5
master_sync_in_progress:0
slave_repl_offset:0
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:ed6d6cc071c41636468cecadd52b61d6c9b130af
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:0
127.0.0.1:6380> 

查看主节点信息:

127.0.0.1:6379> info replication
# Replication
role:master    #角色
connected_slaves:2
slave0:ip=127.0.0.1,port=6380,state=online,offset=42,lag=0    #从机信息1
slave1:ip=127.0.0.1,port=6381,state=online,offset=42,lag=1    #从机信息2
master_replid:ed6d6cc071c41636468cecadd52b61d6c9b130af
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:42
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:42
127.0.0.1:6379> 


4、复制原理

1、Slave启动连接到Master后会发送一个sync同步命令

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

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

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


5、层层节点

5.层层节点.png

0

评论 (0)

取消