一、主从复制
1、定义
主:master | 以写为主 | 当master数据变化的时候 |
从:slave | 以读为主 | 自动将新的数据异步同步到其他slave数据库 |
2、作用
读写分离、容灾恢复、数据备份、水平扩容支撑高并发。
3、使用方式——配从不配主
权限配置:master如果配置了requirepass参数,需要密码登录,那么slave就要配置masterauth来设置校验密码,否则master会拒绝slave的访问请求。
4、基本操作命令
info replication——可以查看复制节点的主从关系和配置信息。
replicaof masterip masterport 写入redis.conf中、即 replicaof 192.168.88.100 6379
slaveof masterip masterport 写入redis.conf中,和master建立连接
slaveof no one 是当前数据库禁止和其他数据库的同步,转成主数据库。
5、复制的缺点
由于所有的写操作都是先在Master上操作,然后同步更新到Slave上,所以从Master同步到Slave机器有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,Slave机器数量的增加也会使这个问题更加严重。 而且,情况下不会再slave节点中自动重选一个master,导致master挂机。
二、哨兵机制
1、定义
在集群中再引入一个节点,该节点充当 Sentinel 哨兵,用于监视 Master 的运行状态,并在Master 宕机后自动指定一个 Slave 作为新的 Master。 整个过程无需人工参与,完全由哨兵自动完成。
2、哨兵的作用
①监控redis运行状态、②当master宕机,自动将slave切换成新的master、③哨兵能将故障转移的结果发送给客户端、④客户端通过连接哨兵获得redis服务的主节点地址。
3、哨兵的工作流程
当一个主从配置的master失效之后,sentinel可以选举出一个新的master来自动接替原来的master的工作,主从配置中的其他redis服务器自动指向新的master同步数据。
4、简单命令
redis-sentinel sentinel26379.conf —— 启动Sentinel
redis-cli -p 26379 info sentinel —— 查看Sentinel信息
5、哨兵机制缺点
若哨兵发生宕机,整个集群将瘫痪。所以为了解决 Sentinel 的单点问题,又要为 Sentinel 创建一个集群,即Sentinel 哨兵集群。一个哨兵的宕机,将不会影响到 Redis 集群的运行。
三、Redis集群
1、定义
由于数据量过大,单个Master复制集难以承担,因此需要多个复制几6进行集群,形成水平扩展每个复制集只负责存储整个数据集的一部分。可以支持多个Master
其作用是提供在多个Redis节点间共享数据的程序集。
2、作用
①实现读写分离,支持数据的高可用,支持海量数据的读写存储操作;
②集群自带Sentinel的故障转移机制,内置高可用的支持,无需重复使用哨兵功能;
③客户端与Redis的节点连接,不再需要连接集群中的所有结点,只连接集群的一个可用节点即可
④槽位slot负责分配到各个物理服务节点,由对应的集群来负责维护节点、插槽和数据之间的关系