Redis有三种集群方式:主从复制,哨兵模式和集群。
1 主从复制
在主从复制中,数据库分为俩类,主数据库(master)和从数据库(slave)。其中主从复制有如下特点:
- 主数据库可以进行读写操作,当读写操作导致数据变化时会自动将数据同步给从数据库
- 从数据库一般都是只读的,并且接收主数据库同步过来的数据
- 一个master可以拥有多个slave,但是一个slave只能对应一个maste
主从复制工作机制
当slave启动后,主动向master发送SYNC命令。master接收到SYNC命令后在后台保存快照(RDB持久化)和缓存保存快照这段时间的命令,然后将保存的快照文件和缓存的命令发送给slave。slave接收到快照文件和命令后加载快照文件和缓存的执行命令。复制初始化后,master每次接收到的写命令都会同步发送给slave,保证主从数据一致性。
主从配置
redis默认是主数据,所以master无需配置,我们只需要修改slave的配置即可。
//设置需要连接的master的ip端口: slaveof 192.168.0.107 6379 //连接成功进入命令行后,可以通过以下命令行查看连接该数据库的其他库信息: info replication
2 哨兵
哨兵的作用是监控 redis系统的运行状况,他的功能如下:
- 监控主从数据库是否正常运行
- master出现故障时,自动将slave转化为master
- 多哨兵配置的时候,哨兵之间也会自动监控
- 多个哨兵可以监控同一个redis
哨兵工作机制
哨兵进程启动时会读取配置文件的内容,通过sentinel monitor master-name ip port quorum
查找到master的ip端口。一个哨兵可以监控多个master数据库,只需要提供多个该配置项即可。
哨兵启动后,会与要监控的master建立俩条连接:
- 一条连接用来订阅master的_sentinel_:hello频道与获取其他监控该master的哨兵节点信息
- 另一条连接定期向master发送INFO等命令获取master本身的信息
与master建立连接后,哨兵会执行三个操作,这三个操作的发送频率都可以在配置文件中配置:
- 定期向master和slave发送INFO命令
- 定期向master,slave的_sentinel_:hello频道发送自己的信息
- 定期向master,slave和其他哨兵发送PING命令
哨兵配置
哨兵配置的配置文件为sentinel.conf
,设置主机名称,地址,端口,以及选举票数即恢复时最少需要几个哨兵节点同意。
//只要配置需要监控的master就可以了,哨兵会监控连接该master的slave。 sentinel monitor mymaster 192.168.0.107 6379 1 //启动哨兵节点: redis-server sentinel.conf --sentinel & //可以在任何一台服务器上查看指定哨兵节点信息: bin/redis-cli -h 192.168.0.110 -p 26379 info Sentinel
3 集群
使用集群,只需要将每个数据库节点的cluster-enable配置打开即可。每个集群中至少需要三个主数据库才能正常运行。
主从模式实现了数据的热备份,哨兵模式实现了redis的高可用。但是有一个问题,这两种模式都没有解决,这两种模式都只能有一个master节点负责写操作,在高并发的写操作场景,master节点就会成为性能瓶颈。
如图所示集群模式其实就是多个主从复制的结构组合起来的,每一个主从复制结构可以看成一个节点,那么上面的Cluster集群中就有三个节点。
资源:
https://blog.csdn.net/sun_lm/article/details/123467103
https://bukecode.blog.csdn.net/article/details/79931791
标签:主从复制,slave,数据库,Redis,哨兵,集群,sentinel,master From: https://www.cnblogs.com/ningshare/p/16916427.html