当前位置: 首页 > article >正文

Redis快速上手篇(六)主从复制

主从复制

主机数据更新后根据配置和策略, 自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主

读写分离,性能扩展(主 写 从 读)

容灾快速恢复

主从复制的作用

1、数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。

2、故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。

3、负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。

4、读写分离:可以用于实现读写分离,主库写、从库读,读写分离不仅可以提高服务器的负载能力,同时可根据需求的变化,改变从库的数量。

5、高可用基石:除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis高可用的基础

一主二仆

拷贝多个redis.conf文件include(写绝对路径)

开启daemonize yes

Pid文件名字pidfile

指定端口port

Log文件名字

dump.rdb名字dbfilename

Appendonly 改为no

注意:不能设置密码

info replication                                                                查看运行 状态

slaveof <ip><port>                                                         成为某个实例的从服务器

slaveof no one                                                               将从机变为主机

进入目录创建并编辑文件

主机配置

主机不用设置 slaveof

分别启动后通过  info replication  指令查看状态

在主机上写,在从机上可以读取数据

主机挂掉,重启就行,一切如初

从机重启需重设:slaveof <ip><port>

配从

三台全部主机

slaveof <ip><port>

成为某个实例的从服务器

复制原理

  • Slave启动成功连接到master后会发送一个sync命令
  • Master接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令, 在后台进程执行完毕之后,master将传送整个数据文件到slave,以完成一次完全同步
  • 全量复制:而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。
  • 增量复制:Master继续将新的所有收集到的修改命令依次传给slave,完成同步
  • 但是只要是重新连接master,一次完全同步(全量复制)将被自动执行

薪火相传

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

用 slaveof  <ip><port>

中途变更转向:会清除之前的数据,重新建立拷贝最新的

风险是一旦某个slave宕机,后面的slave都没法备份

主机挂了,从机还是从机,无法写数据了

反客为主

当一个master宕机后,后面的slave可以立刻升为master,其后面的slave不用做任何修改。

slaveof no one 将从机变为主机。

哨兵模式(sentinel)

反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库。

调整为一主二仆模式

安装目录下新建sentinel.conf文件

配置哨兵,填写内容

sentinel monitor mymaster <ip><port> 1

其中mymaster为监控对象起的服务器名称, 1 为至少有多少个哨兵同意迁移的数量。

启动哨兵

关闭主机

当主机挂掉,从机选举中产生新的主机

(大概10秒左右可以看到哨兵窗口日志,切换了新的主机)

被选举为主机根据优先级别:replica-priority 相同则根据偏移量 如果还相同则根据runid

原主机重启后会变为从机。

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

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

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


http://www.kler.cn/a/107047.html

相关文章:

  • WebAssembly在现代Web开发中的应用
  • Elasticsearch 实战应用:高效搜索与数据分析
  • C++初阶:类和对象(上)
  • VMware虚拟机安装Win7专业版保姆级教程(附镜像包)
  • 【p2p、分布式,区块链笔记 DAM】GUN/SEA(Security, Encryption, Authorization) 模块genkey
  • 彻底理解ARXML中的PDU
  • myTracks for Mac:GPS轨迹记录器的强大与便捷
  • 【QT开发(14)】QT P2P chat 聊天
  • k8s之Flannel网络插件安装提示forbidden无权限
  • 取Dataset子集(pytorch)
  • 52.MongoDB复制(副本)集实战及其原理分析
  • 电脑技巧:Win10飞行模式相关知识介绍
  • 电脑监控软件哪些比较好用
  • 电脑QQ如何录制视频文件?
  • Linux基础知识——概述和常用文件管理命令
  • requests 实践
  • 智能直播,助力新营销战场 !降本增效,新消费市场唾手可得
  • LaTeX:在标题section中添加脚注footnote
  • Win10中Pro/E鼠标滚轮不能缩放该怎么办?
  • 22 行为型模式-状态模式
  • python:使用Scikit-image对遥感影像进行形态学轮廓特征提取(contour)
  • kafka入门03——简单实战
  • 负载均衡策略 LVS
  • 云服务器的先驱,亚马逊云科技海外云服务器领军者
  • 【Java题】输出基本数据类型的最大值和最小值,以及float和double的正无穷大值和负无穷大值
  • NodeJS爬取墨刀上的设计图片