【Redis】高可用之复制(replica)

这篇具有很好参考价值的文章主要介绍了【Redis】高可用之复制(replica)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文是Redis系列第4篇,前3篇欢迎移步

【Redis】不卡壳的 Redis 学习之路:从十大数据类型开始入手_AQin1012的博客-CSDN博客关于Redis的数据类型,各个文章总有些小不同,我们这里讨论的是Redis 7.0,为确保准确,我们直接看官网。https://blog.csdn.net/aqin1012/article/details/130365083

【Redis】持久化机制详解:从RDB到AOF,你需要知道的一切_AQin1012的博客-CSDN博客持久化其实就4个单词:加强数据安全Redis支持两种不同的持久化机制,RDB和AOF。https://blog.csdn.net/aqin1012/article/details/130481261

【Redis】不卡壳的 Redis 学习之路:事务_AQin1012的博客-CSDN博客数据库中的事务是指在一次与数据库连接的会话中,所有的SQL语句,要么都成功,要么都失败。在Redis中,事务是指可以一次执行多个命令,本质是一组命令的集合。一个事务中的所有命令都会被序列化,按顺序地串行执行而不会被其他命令插入开启:以MULTI开始一个事务入队:将多个命令入队到事务中,接到这些命令并不会立即执行,而是放到等待执行的事务队列里面执行:由EXEC命令触发事务。https://blog.csdn.net/aqin1012/article/details/131474273?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22131474273%22%2C%22source%22%3A%22aqin1012%22%7D

本文目录

什么是Redis的复制

能解决的问题

实际操作

权限细节

主要命令

操作流程

准备阶段

下载镜像(本文用的docker,也可以使用虚拟机)

安装Redis

修改redis配置

如何获取docker镜像的IP呢?

启动测试

先主后从,依次启动

查看主从信息

查看日志

总结


什么是Redis的复制

官网地址: https://redis.io/docs/management/replication/

其实就是主从复制,master以写为主,slave以读为主

当master数据变化的时候,自动将新的数据异步同步到其它slave数据库

能解决的问题

  • 读写分离
  • 容灾备份
  • 数据备份
  • 水平扩容支撑高并发

实际操作

配从库不配主库

权限细节

  • 主机(master)如果配置了requirepass参数,需要密码登陆
  • 那么从机(slave)就要配置masterauth来设置校验密码,否则的话主机会拒绝从机的访问请求

主要命令

  • info replication
    • 可以查看复制节点的主从关系和配置信息
  • replicaof 主库IP 主库端口(主从复制)
    • 一般写入redis.conf配置文件内
  • slaveof 主库IP 主库端口(上面命令的手动配置版,手动指定做谁的小弟,可用于“改换门庭”)
    • 每次与masterl断开之后,都需要重新连接,除非你配置进redis.conf文件
    • 在运行期间修改slave节点的信息,如果该数据库已经是某个主数据库的从数据库,那么会停止和原主数据库的同步关系转而和新的主数据库同步,重新拜码头
  • slaveof no one(“自立为王”)
    • 使当前数据库停止与其他数据库的同步,转成主数据库,自立为王

操作流程

本文以Redis的一主二从(一台主机(master)两台从机(slave))为示例

准备阶段

下载镜像(本文用的docker,也可以使用虚拟机)

取一个centos的镜像(可以跟我用一样的,也可以用你自己的,前提是安装了docker)

docker pull bitnami/centos-base-buildpack:7-r9

【Redis】高可用之复制(replica),Redis,redis,复制,集群,高可用

安装Redis

1. 下载redis安装包并解压

wget https://download.redis.io/releases/redis-7.0.9.tar.gz

具体的版本参考地址(本文是用的是redis-7.0.9.tar.gz)

https://download.redis.io/releases/

2. 解压

tar -zxvf redis-7.0.9.tar.gz

3. 进入解压目录

cd redis-7.0.9

【Redis】高可用之复制(replica),Redis,redis,复制,集群,高可用

4. 编译

make

【Redis】高可用之复制(replica),Redis,redis,复制,集群,高可用

5. 指定安装目录并进行安装

make install PREFIX=/usr/local/redis

【Redis】高可用之复制(replica),Redis,redis,复制,集群,高可用

6. 添加软连接

ln -s /usr/local/redis/bin/redis-server /usr/bin/redis-server 
ln -s /usr/local/redis/bin/redis-cli /usr/bin/redis-cli

7. 复制配置文件

cp /root/redis-7.0.9/redis.conf /usr/local/redis/bin/

【Redis】高可用之复制(replica),Redis,redis,复制,集群,高可用

此时/usr/local/redis/bin/目录下就出现了redis的配置文件

修改redis配置

进入配置文件所在目录(按照上面的操作redis.conf文件复制了一份到/usr/local/redis/bin)

【Redis】高可用之复制(replica),Redis,redis,复制,集群,高可用

打开redis.conf文件

【Redis】高可用之复制(replica),Redis,redis,复制,集群,高可用

差不多长这样

【Redis】高可用之复制(replica),Redis,redis,复制,集群,高可用

使用:set nu可以显示行号,方便查找

【Redis】高可用之复制(replica),Redis,redis,复制,集群,高可用

:行号可以快速跳转到某一行

【Redis】高可用之复制(replica),Redis,redis,复制,集群,高可用

/搜索内容可以定位到包含“搜索内容”的行

【Redis】高可用之复制(replica),Redis,redis,复制,集群,高可用

  1. 开启daemonize yes

    【Redis】高可用之复制(replica),Redis,redis,复制,集群,高可用

  2. 注释掉bind127.0.0.1

    【Redis】高可用之复制(replica),Redis,redis,复制,集群,高可用

  3. protected-mode no

    【Redis】高可用之复制(replica),Redis,redis,复制,集群,高可用

4. 指定端口

主不用改

【Redis】高可用之复制(replica),Redis,redis,复制,集群,高可用

2个从需要换一下端口号

【Redis】高可用之复制(replica),Redis,redis,复制,集群,高可用

5. 指定当前工作目录,dir

【Redis】高可用之复制(replica),Redis,redis,复制,集群,高可用

6. pid文件名字,pidfile

主不用改

【Redis】高可用之复制(replica),Redis,redis,复制,集群,高可用

从需要对应上面port的设置修改

【Redis】高可用之复制(replica),Redis,redis,复制,集群,高可用

7. log文件名字,logfile

主不用改

【Redis】高可用之复制(replica),Redis,redis,复制,集群,高可用

从需要按照上面port的配置进行修改

【Redis】高可用之复制(replica),Redis,redis,复制,集群,高可用

8. requirepass

为主机(master)设设置密码,后面从机(slave)连接要使用

【Redis】高可用之复制(replica),Redis,redis,复制,集群,高可用

9. dump.rdb名字(建议添加端口号)

主机

【Redis】高可用之复制(replica),Redis,redis,复制,集群,高可用

从机

【Redis】高可用之复制(replica),Redis,redis,复制,集群,高可用

10. aof文件,appendfilename

appendonly yes 时配置

11. 从机(slave)访问主机(master)的通行密码masterauth,必须从机(slave)需要配置,此步骤主机(master)不用配置

【Redis】高可用之复制(replica),Redis,redis,复制,集群,高可用

从机(slave)需要做如下修改

  1. replicaof 主机(master)IP 主机(master)端口
  2. masterauth 就是主机(master)requirepass配置的密码

【Redis】高可用之复制(replica),Redis,redis,复制,集群,高可用

补充一下(我真体贴(。・ω・。))~

如何获取docker镜像的IP呢?

查看当前运行的容器信息

【Redis】高可用之复制(replica),Redis,redis,复制,集群,高可用

根据容器ID获取该容器的IP

【Redis】高可用之复制(replica),Redis,redis,复制,集群,高可用

在我们这个一主二从的案例中

  • 主机(master)
    • 172.17.0.2
  • 从机(slave)
    • 172.17.0.3
    • 172.17.0.4

在每个docker都完成上面的配置后,可以将配置文件复制一份到我们配置中用到的aqinredis文件夹下,并加上端口重命名下(方便管理非必需)

启动测试

先主后从,依次启动

主机(master)启动需要添加密码(requirepass中指定了的)

【Redis】高可用之复制(replica),Redis,redis,复制,集群,高可用

从机(slave)启动记得指定端口

【Redis】高可用之复制(replica),Redis,redis,复制,集群,高可用

【Redis】高可用之复制(replica),Redis,redis,复制,集群,高可用

在主里存入值,可以看到在两台从机(slave)中都可以获取到

【Redis】高可用之复制(replica),Redis,redis,复制,集群,高可用

但是从机(slave)是不能存值的(是只读的)

【Redis】高可用之复制(replica),Redis,redis,复制,集群,高可用

查看主从信息

主机(master)

【Redis】高可用之复制(replica),Redis,redis,复制,集群,高可用

从机(slave)

【Redis】高可用之复制(replica),Redis,redis,复制,集群,高可用

【Redis】高可用之复制(replica),Redis,redis,复制,集群,高可用

查看日志

我们查看下主机的日志(就是一开始配置文件redis.conf中设置的log文件),可以发现,已经记录了两台从机挂到主机上的日志了

【Redis】高可用之复制(replica),Redis,redis,复制,集群,高可用

可以再看下从机的日志,也可以看到相关信息

【Redis】高可用之复制(replica),Redis,redis,复制,集群,高可用

总结

  • 主机(master)能读能写,从机(slave)只能读
    • 无论主机已经写了多少数据,从机一旦启动,就会全部复制过来,后续主机写,从机跟
  • 配置文件🆚命令配置
    • 使用配置文件进行主从配置时,如果主机挂了,从机不会变化,还可以提供读的功能,等待主机恢复(重启后主从关系仍在)
    • 使用命令配置时,主机A可以通过slaveof 主机B的IP 主机B的端口命令,动态的绑定成为主机B的从机,但只是单次生效,重启会失效
  • 主从属性可以传递
    • 上一个从机可以是下一个从机的主机,从机同样可以接收其他从机的连接和同步请求,那么该从机作为了链条中下一个的主机(但仍然是只读的),可以有效减轻主master(最开始的主机)的写压力
    • 使用命令slaveof 新主库IP 新主库端口可以中途变更绑定的主机
      • 会清除之前的数据,重新建立拷贝最新的
    • 使用命令slaveof no one可以解除绑定,自己成为主机
  • 复制原理和工作流程
    • 从机启动,同步初请
      • 从机启动成功连接到主机会发一个sync命令
      • 从机首次全新连接主机会自动一次性全量复制,原有数据会被覆盖
    • 首次连接,全量复制
      • 主机节点收到sync命令后会开始在后台保存快照(即RDB持久化,主从复制时会触发RDB),同时收集所有接收到的用于修改数据集命令缓存起来,主机节点执行RDB持久化完后,master将rdb快照文件和所有缓存的命令发送到所有从机,以完成一次完全同步
      • 而从机服务在接收到数据库文件数据后,将其存盘并加载到内存中,从而完成复制初始化
    • 心跳持续,保持通信
      • 默认10秒repl-ping-replica-period 10
    • 【Redis】高可用之复制(replica),Redis,redis,复制,集群,高可用

    • 进入平稳,增量复制
      • 主机持续将新的所有收集到的修改命令自动依次传给从机,完成同步
    • 从机下线,重连续传
      • 主机会检查backlog中的offset,主机和从机都会保存一个复制的offset(保存在backlog中),还有一个masterId,主机只会把已经复制的offset后面的数据复制给从机(类似断点续传)
  • 复制的缺点
    • 复制延时,信号衰弱(从机的增加会使这个问题更严重)
    • 主机挂了无法自动恢复
       

于是,有了后面要介绍的哨兵和集群( ̄∇ ̄)/文章来源地址https://www.toymoban.com/news/detail-526961.html

到了这里,关于【Redis】高可用之复制(replica)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • redis高可用——主从复制、哨兵模式、cluster集群

    目录 1、redis群集有三种模式 2、主从复制 2.1、概述: 2.2、Redis主从复制有以下几个重要作用: 2.3、主从复制流程: 2.4、redis主从复制实验 3、哨兵模式. 3.1、概述: 3.2、 哨兵的核心功能: 3.3、哨兵模式原理: 3.6、 哨兵模式的作用; 3.7、故障转移机制 3.8、主节点的选举: 3.9、主

    2024年02月09日
    浏览(38)
  • Redis高可用(主从复制、哨兵模式和Cluster集群)

    目录 一、Redis高可用 1.持久化 2.主从复制 3.哨兵 4.Cluster集群 二、主从复制 1.概念 2.作用 3.主从复制流程 4.配置主从复制 三、哨兵模式 1.功能 2.作用 3.组成 4.故障转移机制 5.主节点选举依据 6.配置哨兵模式 7.故障模拟 8.恢复故障节点 四、Cluster群集 1.简介 2.作用 (1)数据分区

    2024年02月15日
    浏览(42)
  • DAY 68 redis高可用的主从复制、哨兵、cluster集群

    在web服务器中,高可用是指服务器可以正常访问的时间,衡量的标准是在多长时间内可以提供正常服务(99.9%、99.99%、99.999%等等)。 但是在Redis语境中,高可用的含义似乎要宽泛一些,除了保证提供正常服务(如主从分离、快速容灾技术),还需要考虑数据容量的扩展、数据安

    2024年02月06日
    浏览(52)
  • 从小白到大神之路之学习运维第41天---第三阶段---Redis高可用集群(redis 的主从复制、redis的哨兵模式操作)

    第三阶段基础 时  间:2023年6月15日 参加人:全班人员 内  容: Redis高可用集群 目录 一、redis主从复制原理介绍 主从复制特点: 主从复制实现原理: 二、主从复制实现操作(多机实例实现)   前提配置: 主库操作: 从库一操作: 从库二操作: 主库变化: 验  证: 三、

    2024年02月09日
    浏览(58)
  • Redis高可用——主从复制

    主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(Master),后者称为从节点(Slave);数据的复制是单向的,只能由主节点到从节点。 默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能

    2024年02月12日
    浏览(37)
  • Redis高可用:主从复制详解

    目录 1.什么是主从复制? 2.优势 3.主从复制的原理 4.全量复制和增量复制    4.1 全量复制    4.2 增量复制 5.相关问题总结    5.1 当主服务器不进行持久化时复制的安全性    5.2 为什么主从全量复制使用RDB而不使用AOF?    5.3 为什么还有无磁盘复制模式?    5.4 为什么还

    2024年02月12日
    浏览(39)
  • 【Redis】3、Redis主从复制、哨兵、集群

    主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(Master),后者称为从节点(Slave);数据的复制是单向的,只能由主节点到从节点。 默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能

    2024年02月09日
    浏览(38)
  • Redis安装与使用、redis主从复制、redis集群

    文章内容主要参考b站 运维实战课程 的redis视频:redis的课程介绍_哔哩哔哩_bilibili 1.Redis是一个缓存数据库,主要是做缓存。什么是缓存?也就是缓冲存储,也可以理解为挡箭牌,对后面的一个保护—般放在mysql/oracle等数据库前面,对数据库进行一个保护。用户请求数据时候,

    2024年02月10日
    浏览(36)
  • Redis 主从复制 哨兵 集群

    主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(Master),后者称为从节点(Slave);数据的复制是单向的,只能由主节点到从节点。 默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能

    2024年02月11日
    浏览(49)
  • Redis缓存高可用集群

    作者:京东零售 王雷 • 哨兵模式 在redis3.0以前的版本要实现集群一般是借助哨兵sentinel工具来监控master节点的状态,如果master节点异常,则会做主从切换,将某一台slave作为master,哨兵的配置略微复杂,并且性能和高可用性等各方面表现一般。 特别是在主从切换的瞬间存在

    2023年04月10日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包