一般单台的Redis数据库大小最好不要操作20G,一般集群最少需要3个服务器。
环境配置
只配置从库,不用配置主库。
127.0.0.1:6379> info replication # 查看当前库的信息
# Replication
role:master # 角色
connected_slaves:0 # 从节点个数
master_failover_state:no-failover
master_replid:cc822729f96d08974bde288c5fee40ee290202ca
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
127.0.0.1:6379>
复制3个配置文件,然后修改对应的信息。
- 端口
- pid名字
- log文件名字
- dump.rdb名字
[root@bogon redis]# redis-server redis79.conf
[root@bogon redis]# redis-server redis80.conf
[root@bogon redis]# redis-server redis81.conf
一主二从
默认情况下,每台Redis服务器都是主节点
一般情况下只需要配置从节点
——————————————————————从节点1————————————————————————————
127.0.0.1:6380> slaveof 127.0.0.1 6379 # 配置为什么的从节点
OK
127.0.0.1:6380> info replication
# Replication
role:slave # 设置为了从节点
master_host:127.0.0.1 # 主节点ip
master_port:6379 # 主节点port
master_link_status:up
master_last_io_seconds_ago:2
master_sync_in_progress:0
slave_repl_offset:14
slave_priority:100
slave_read_only:1
connected_slaves:0
master_failover_state:no-failover
master_replid:05bc74df00ced82a3616bbfa67f32a80895e5d2d
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:14
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:14
——————————————————————————主节点—————————————————————————————
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=6380,state=online,offset=742,lag=1
slave1:ip=127.0.0.1,port=6381,state=online,offset=742,lag=0
master_failover_state:no-failover
master_replid:05bc74df00ced82a3616bbfa67f32a80895e5d2d
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:742
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:742
真实生产环境中应该从配置文件中配置
具体细节
主机可以写,从机不能写只能读。主机中的所有信息和数据,都会自动被从机保存。
如果是使用命令行配置的主从,从机重启后不会默认回到之前的状态。
复制原理
Slave 启动成功连接到master后会发送一个sync同步命令。
Master收到后,启动后台的存盘进程,同时收集所有接收到的用于修改数据的命令,在后台执行完毕后,master将传输整个数据到文件到slave,并完成一次完全同步。
全量复制:Slave服务在接收到数据库文件后,将其存盘并加载到内存中。
增量复制:Master继续将新的所有搜集得到的修改命令依次传给slave,完成同步。
但是只要是重新连接master,一次完全同步(全量复制)将被自动执行。全部数据都会在从机中看到
层层链路
上一层M链接下一个S!
如果master节点宕机了,这个时候乣手动选择一个master出来替代
– slaveof no one
使自己变成主机,但如果此时之前的master恢复了,就无法加入集群,又需要手动配置。
哨兵模式(自动选取master节点)
主从切换的方法是:当服务器宕机后,需要手动把一台从服务器切换为主服务器,需要人文干预,通过哨兵模式可以解决这个问题。
哨兵模式:哨兵是一个独立的进程
,作为进程,它独立运行。原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。
- 配置哨兵配置文件 sentinel.conf
# sentinel monitor 被监控的名称 host port
# 1:主机宕机了,slave投票让谁接替成为主机,票数最多的,就会成为新的主机
sentinel monitor myredis 127.0.0.1 6379 1
- 启动哨兵
[root@bogon redis]# redis-sentinel sentinel.conf
2533:X 12 Apr 2021 00:06:04.547 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
2533:X 12 Apr 2021 00:06:04.547 # Redis version=6.2.1, bits=64, commit=00000000, modified=0, pid=2533, just started
2533:X 12 Apr 2021 00:06:04.547 # Configuration loaded
2533:X 12 Apr 2021 00:06:04.548 * Increased maximum number of open files to 1003 2 (it was originally set to 1024).
2533:X 12 Apr 2021 00:06:04.548 * monotonic clock: POSIX clock_gettime
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 6.2.1 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in sentinel mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 26379
| `-._ `._ / _.-' | PID: 2533
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
2533:X 12 Apr 2021 00:06:04.551 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 1 28.
2533:X 12 Apr 2021 00:06:04.561 # Sentinel ID is b3ad3d79639539920d674586064c77a 5d41d44f0
2533:X 12 Apr 2021 00:06:04.561 # +monitor master myredis 127.0.0.1 6379 quorum 1
2533:X 12 Apr 2021 00:06:04.562 * +slave slave 127.0.0.1:6380 127.0.0.1 6380 @ m yredis 127.0.0.1 6379
2533:X 12 Apr 2021 00:06:04.565 * +slave slave 127.0.0.1:6381 127.0.0.1 6381 @ m yredis 127.0.0.1 6379
如果主机宕机了之后
如果主机此时又重启了:
优缺点
优点:
- 哨兵集群,基于主从复制模式,所有的主从配置有点,它都具有
- 主从可以切换,故障可以转移,系统的可用性可以更好
- 哨兵模式是主从模式的升级,手动到自动
缺点:
- Redis不好在线扩容,集群容量一旦达到上限,在线扩容十分麻烦
- 实现哨兵模式的配置复杂,其中有很多选择
哨兵模式的全部配置
《B站up主–狂神说java》总结记录