Redis主从复制
默认情况下,每台redis服务器都是master主节点
1、概念
将一台redis服务器的数据,复制到其他redis服务器上,前者称为主节点(master/leader),后者称为从节点(slave/follower),数据的复制是单向的,只能由主节点到从节点,Master以写为主,Slave以读为主。一般来说,一个主节点可以有多个从节点,但一个从节点,只能有一个主节点。
2、作用
数据冗余:实现了数据的热备份,是持久化之外的另一种数据冗余方式
故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复(服务冗余)
负载均衡:在主从复制的基础上,配合读写分离,在redis写数据时应用连接主节点
,读数据时应用连接从节点
,以此分担服务器负载(读多写少)
高可用(集群)基石:主从复制是哨兵模式和集群的基础
3、一主二从配置:
此处以单机多集群为例:
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从节点以此类推
需特别注意密码配置的方式:
主节点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,完成同步
评论 (0)