栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 系统运维 > 运维 > Linux

Redis-主从复制/集群

Linux 更新时间:发布时间: 百科书网 趣学号

目录

一、主从复制

1.1 概念

1.2 特点

1.3 原理

二、集群

2.1 概念

2.2 slots

2.3 特点

2.4 优缺点


一、主从复制

1.1 概念

        主从复制,简单来说就是主机数据更新后根据配置和策略, 自动同步到从机的master/slaver机制,Master以写为主,Slave以读为主。

        可以实现读写分离、性能扩展、容灾快速恢复。

1.2 特点

        1.可以在主机上写,在从机上读取数据,但在从机上写数据会被拒绝。

        2.主机挂掉,重启就行;从机重启需重设(我附庸于谁?)

        3.假如从机是后来加入的,它将从头复制数据,而不是从切入点复制。

        4.若master挂掉,后面slave可以顶替master的位置,其后面的slave不用做任何修改。以前的master恢复后只能做slave了(反客为主)。

        但这需要手动设置,想要自动设置要开启哨兵模式(反客为主的自动版),能够在后台监控主机是否故障。如果故障了根据投票数(优先级别)自动将从库转换为主库。这需要单独配置一个sentinel.conf,因为哨兵是一个单独的服务器。

 

优先级 - 在redis.conf中默认:slave-priority 100,值越小优先级越高

偏移量 - 是指获得原主机数据最全的

rinid - 每个redis实例启动后都会随机生成一个40位的runid

        5.上一个Slave可以是下一个slave的Master,Slave同样可以接收其他 slaves的连接和同步请求,那么该slave作为了链条中下一个的master, 可以有效减轻master的写压力,去中心化降低风险(薪火相传)。

1.3 原理
  1. Slave启动成功连接到master后会发送一个sync命令
  2. Master接到命令启动后台的存盘进程(RDB),同时收集所有接收到的用于修改数据集的命令, 在后台进程执行完毕之后,master将传送整个数据文件(RDB)到slave,以完成一次完全同步
  3. 全量复制:slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。
  4. 增量复制:Master继续将新的所有收集到的修改命令依次传给slave,完成同步
  5. 若重新连接master,会自动执行一次完全同步(全量复制)
  6. 每次主服务器进行写操作后,都会和从服务器进行数据同步(增量复制)。

二、集群

        传统的主从复制模式可能存在容量不足、并发写的问题,另外,若主机宕机,会导致ip地址发生变化,应用程序中配置需要修改对应的主机地址、端口等信息。之前通过代理主机来解决,但是redis3.0中提供了解决方案。就是无中心化集群配置。

 

2.1 概念

        Redis 集群实现了对Redis的水平扩容,即启动N个redis节点,将整个数据库分布存储在这N个节点中,每个节点存储总数据的1/N。

        Redis 集群通过分区(partition)来提供一定程度的可用性(availability): 即使集群中有一部分节点失效或者无法进行通讯, 集群也可以继续处理命令请求。

2.2 slots

        假设一个 Redis 集群包含 16384 个插槽(hash slot), 数据库中的每个键都属于这 16384 个插槽的其中一个,

        集群使用公式 CRC16(key) % 16384 来计算键 key 属于哪个槽, 其中 CRC16(key) 语句用于计算键 key 的 CRC16 校验和 。

        集群中的每个节点负责处理一部分插槽。 举个例子, 如果一个集群可以有主节点, 其中:

        节点 A 负责处理 0 号至 5460 号插槽。

        节点 B 负责处理 5461 号至 10922 号插槽。

        节点 C 负责处理 10923 号至 16383 号插槽。

        其实就是很像hash算法,将数据分散存在多个区域中。

2.3 特点

        1.在redis-cli每次录入、查询键值,redis都会计算出该key应该送往的插槽,如果不是该客户端对应服务器的插槽,redis会报错,并告知应前往的redis实例地址和端口。

        2.redis-cli客户端提供了 –c 参数实现自动重定向。

                如 redis-cli  -c –p 6379 登入后,再录入、查询键值对可以自动重定向。

        3.即使连接的不是主机,集群会自动切换主机存储。主机写,从机读。

        4.无论从哪台主机写的数据,其他主机上都能读到数据。

        5.不在一个slot下的键值,是不能使用mget,mset等多键操作。可以通过{ }来定义组的概念,从而使key中{ }内相同内容的键值对放到一个slot中去。

        6.如果主节点下线,从节点会自动升为主节点;主节点恢复后,回来变成从机。

        7.如果所有某一段插槽的主从节点都宕掉,根据配置文件的不同设置,整个集群都挂掉或者该插槽数据全都不能使用,也无法存储。

2.4 优缺点

优点:

        1.实现扩容

        2.分摊压力

        3.无中心配置相对简单

不足:

        1.多键操作是不被支持的

        2.多键的Redis事务是不被支持的。lua脚本不被支持

        3.由于集群方案出现较晚,很多公司已经采用了其他的集群方案,而代理或者客户端分片的方案想要迁移至redis cluster,需要整体迁移而不是逐步过渡,复杂度较大。

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/1050289.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号