IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Redis 6.2.6(主从复制、集群) -> 正文阅读

[大数据]Redis 6.2.6(主从复制、集群)

一、主从复制

1、概念

主从复制就是主机数据更新后根据配置和策略,自动同步到备机的master/slave机制,master以写为主,slave以读为主。
在这里插入图片描述

2、优点

  • 读写分离,性能扩展。
  • 容灾快速恢复

3、配置

  • 拷贝多个redis.conf文件include
  • 开启daemonize yes
  • pid文件名字pidfile
  • 指定端口port
  • log文件名字
  • dump.rdb名字dbfilename
  • appendonly关闭或换名字
  • info replication 打印主从复制的相关信息
  • slaveof 成为某个实例的从服务
  • 在这里插入图片描述

4、一主二仆模式演示

  • 数据一致
  • 主服务器能读能写
  • 从服务器只能读,不能写。
  • 从服务关闭,再次上线,需要再次slaveof设置为从服务器,数据任然一致。
  • 主服务器关闭,从服务原地待命,再次上线后主动设为主服务器,任然保持数据一致。

5、复制原理

  • 每次从机连通后,都会给主机发送sync指令
  • 主机立刻进行存盘操作,发送rdb文件给从机。
  • 从机收到rdb文件后,进行全盘加载。
  • 之后每次主机的写操作,都会立刻发送给从机,从机执行相同的命令。
    在这里插入图片描述

6、主从复制之薪火相传

  • 上一个slave可以是下一个slave的master,slave同样可以接收其他slaves的连接和同步请求,那么该slave作为链条中下一个的master,可以有效减轻master的写压力,去中心化降低风险。
  • 用slaveof
  • 中途变更转向:会清除之前的数据,重新建立拷贝最新的。
  • 风险是一旦某个slave宕机,后面的slave都没法备份
  • 当一个master宕机后,后面的slave可以立刻升为master,其后面的slave不用做任何修改。
  • 用slaveof no one 将从机变为主机。
    在这里插入图片描述

7、主从复制之哨兵模式(sentinel)

  • 薪火相传的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库。
  • 新建sentinel.conf文件 sentinel monitor mymaster 127.0.0.1 6379 1
  • mymaster为监控对象的服务器名称,1为至少有多少个哨兵同意迁移。
  • 启动哨兵 redis-sentinel /myredis/sentinel.conf

在这里插入图片描述
在这里插入图片描述

二、集群

1、问题

  • 容量不够,redis如何进行扩容?
  • 并发写操作,redis如何分摊?

2、redis集群

  • redis集群实现了对redis的水平扩容,即启动N个redis节点,将整个数据库分布存储在这N个节点中,每个节点存储总数据的1/N。
  • redis集群通过分区(partiton)来提供一定程度的可用性,availiability:即时集群中有一部分节点失效或者无法进行通讯,集群也可以继续处理命令请求

3、安装

  • 安装ruby环境 高版本不需要安装
  • redis-3.2.0.gem
  • gem install --local redis-3.2.0.gem
  • 制作多个实例,与主从复制一致
  • 添加如下配置
    cluster-enabled yes --打开集群模式
    cluster-config-file node-7788.conf --设置节点配置文件名
    cluster-node-timeout 15000 --设定节点失联时间,超过该时间(毫秒),集群自动进行主从切换
  • 合体
    cd /opt/reids-3.2.5/src
    ./redis-trib.rb crrate --replicas 1 192.168.242.132:6379 192.168.242.132:6380 192.168.242.132:6381
  • 以集群的方式进入客户端redis-cli -c -p port
  • 通过cluter nodes 命令查看集群状态

4、redis cluster如何分配这六个节点?

  • 一个集群至少要有三个主节点
  • 选项 --replicas 1表示我们希望为集群的每一个主节点创建一个从节点
  • 分配原则尽量保证每一个主数据库运行在不同的ip地址,每个从库和主库不在一个ip地址上。

5、什么是slots?

  • 一个redis集群包含16384个插槽,数据库中的每个键都属于16384个插槽的其中的一个。
  • 集群中的每个节点负责处理一部分插槽

6、在集群中录入值

  • 在redis-cli每次录入、查询键值,redis都会计算key应该送往的插槽,如果不是该服务器对应的插槽,redis会报错,并告知应前往的redis实例地址和端口。
  • redis-cli客户端提供可-c参数实现自定重定向
  • 不在一个slot下的键值,是不能使用mget,mset等多键操作的。
  • 可以通过{}来定义组的概念,从而是key中{}内相同内容的键值对放到一个slot中去。

7、集群操作

cluster keyslot --计算键key应该被放置在哪个槽上
cluster countkeyinslot --返回槽slot目前包含的键值对的数量
cluster getkeysinslot --返回count个slot槽中的键

8、故障恢复

  • 主节点下线,选其中某个从节点中选取主节点。
  • 主节点恢复后,变成从节点。
  • 如果所有某一段插槽的主节点都宕掉,redis服务将不能继续服务。
  • redis.conf中的参数 cluster-require-full-coverage yes 16384个slot都正常的时候才能对外提供服务。

9、redis集群优点

  • 实现扩容
  • 分摊压力
  • 无中心配置相对简单

10、redis集群缺点

  • 多键操作不被支持
  • 多键的redis事务不被支持,lua脚本不被支持。
  • 由于集群方案出现较晚,很多公司已经采用了其他的集权方案,而代理或者客户端分片的方案想要迁移至集群,需要整体迁移而不是逐渐过渡,复杂度较大。
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-03-03 16:21:05  更:2022-03-03 16:25:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:48:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码