Redis_主从复制

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

8. 主从复制

8.1 简介

主从库采用读写分离的方式

  • 读操作:主库、从库都可以处理
  • 写操作:首先写到主库执行,然后再将主库同步给从库。

实现读写分离,性能扩展
容灾快速恢复
Redis_主从复制,redis,缓存,数据库

8.2 主从复制步骤

  1. 创建一个目录 ,在root下创建一个myredis的目录
    mkdir myredis//创建目录
    cd myredis //进行目录
    cp /opt/reids-6.2.6/redis.conf redis_1.conf //cp 源文件 目标文件
    ls
    
  2. 关闭aof
  3. 使用vi编辑三个conf文件,redis_6379.conf,redis_6380.conf,redis_6381.conf做为一主二从配置,配置文件内容如下所示:
    include redis_1.conf
    pidfile /var/run/reids_6379.pid
    port 6379
    dbfilename dump6379.rdb
    
  4. 分别启动三个服务
    [root@localhost myredis]# redis-server redis_6379.conf
    [root@localhost myredis]# redis-server redis_6380.conf
    [root@localhost myredis]# redis-server redis_6381.conf
    [root@localhost myredis]# ps -ef|grep redis
    root 7289 1 0 17:35 ? 00:00:00 redis-server 127.0.0.1:6379
    root 7296 1 0 17:35 ? 00:00:00 redis-server 127.0.0.1:6380
    root 7302 1 0 17:35 ? 00:00:00 redis-server 127.0.0.1:6381
    root 7316 6663 0 17:35 pts/0 00:00:00 grep --color=auto redis
    
  5. 在三个客户端,模拟分别连接到不同服务器
    redis-cli -p 端口号
    redis-cli -p 6379
    redis-cli -p 6380
    redis-cli -p 6381
    
  6. 查看服务器状态
    info replication
    
  7. 在6380和6381上调用replicaof ,将其从属于6379(如果是三台服务器以上步骤可以跳过,直接配置从属服务器)
    replicaof 127.0.0.1 6379
    
  8. 在主库上可以写入数据,从库不能写入数据
  9. 主库和从库都可以读数据

8.3 服务器宕机演示

8.3.1 从服务器宕机

  • 6381上调用shutdown
  • 在主服务器上写入数据
  • 6381重新连上时,仍然可以接收到主服务器的数据

8.3.2 主服务器宕机

  • 6379服务器调用shutdown
  • 在从服务器上仍然可以读取数据
  • 从服务器显示主服务器的状态为down
  • 当主服务器重新启动,从服务器显示主服务器的状态是up

8.4 主从同步原理

Redis_主从复制,redis,缓存,数据库

第一阶段

  • 主从建立连接,协商同步。从库和主库建立连接,告诉主库即将进行同步操作。主库需要确认并回复,主从就可以开始进行同步处理了。
  • 从库向主库发送一个psync指令,包含两个参数。一个是主库的runID,另一个是复制进度offset。
    • runID是每个redis实例启动时生成的一个随机ID,唯一标识。第一次复制时,从库不知道主库的runid,所以设为一个"?"。
    • offset,-1表示第一次复制
  • 主库收到指令后,会发送给从库fullresync指令去响应,带着主库的runid,还有目前复制进度offset。
  • 从库会记录下这两个参数。fullresync表示全量复制。主库把所有内容都复制给从库

第二阶段

  • 主库将所有数据发送给从库进行同步。从库收到rdb文件后,在本地把原有的数据清除,同步从主库接收到的rdb文件 。
  • 如果在主库把数据跟从库同步的过程中,主库还有数据写入,为了保证主从数据的一致性,主库会在内
  • 存中给一块空间replication buffer,专门记录rdb文件生成后收到的所有写操作

第三阶段

  • 主库把第二阶段执行过程中新收到的操作,再发送给从库,从库再加载执行这些操作,就实
    现同步处理了。

8.5 主-从-从模式

采用主-从-从模式,将主库生成和传输rdb文件的压力,以级联方式分散到从库上。
Redis_主从复制,redis,缓存,数据库

8.6 网络连接异常情况

在redis2.8之前,如果网络异常,再次连接后,需要做全量复制
从redis2.8之后,采用增量复制方式。repl_backlog_buffer缓冲区。当主从网络断开后,主库把收到写
操作,写入replication buffer,同时,也写入到repl_backlog_buffer缓冲区.
这个缓冲区,是一个环形缓冲区,主库会记录自己写到的位置,从库会记录自己读到的位置。
在之前还是会识别一下环形缓冲区还能不能够提供完整的数据,如果不能就进行全量同步了
Redis_主从复制,redis,缓存,数据库文章来源地址https://www.toymoban.com/news/detail-648937.html

  • repl_backlog_size参数
    • 缓冲空间大小=主库写入速度 * 操作大小-主从库网络传输速度 * 操作大小
    • repl_backlog_size=缓冲空间大小*2
    • 2000 * 2-1000 * 2=2000 大约为2M 乘2 所以repl_backlog_size值为4M

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

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

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

相关文章

  • redis数据库缓存服务器

    redis比mysql访问数据快 非关系型数据库以键值对的方式存储数据 作用:加快访问速度,缓解数据库压力 redis最新版本7 特点 丰富的数据结构 list,set,hash等数据结构的存储 支持持久化 支持事务 “一个完整的动作,要么全部执行,要么什么也没有做” 支持主从支持高可用,支持

    2024年02月05日
    浏览(59)
  • redis的缓存更新策略以及如何保证redis与数据库的数据一致性

    redis的缓存更新策略有这么几种: 1、由应用直接和redis以及数据库相连接:         查询数据时,应用去redis中查询,查不到的话再由应用去数据库中查询,并将查询结果放在redis;         更新数据时,由应用去触发redis数据的删除以及数据库的update。 2、应用只跟redi

    2024年02月13日
    浏览(53)
  • Redis---数据库和缓存如何保证一致性?

    用「读 + 写」请求的并发的场景来分析: 假如某个用户数据在缓存中不存在,请求 A 读取数据时从数据库中查询到年龄为 20,在未写入缓存中时另一个请求 B 更新数据。它更新数据库中的年龄为 21,并且清空缓存。这时请求 A 把从数据库中读到的年龄为 20 的数据写入到缓存

    2024年01月24日
    浏览(53)
  • Redis如何保证缓存和数据库一致性?

    现在我们在面向增删改查开发时,数据库数据量大时或者对响应要求较快,我们就需要用到Redis来拿取数据。 Redis:是一种高性能的内存数据库,它将数据以键值对的形式存储在内存中,具有读写速度快、支持多种数据类型、原子性操作、丰富的特性等优势。 优势: 性能极高

    2024年01月16日
    浏览(66)
  • Redis如何保障缓存与数据库的数据一致性问题?

    目录 一.最经典的数据库加缓存的双写双删模式 二. 高并发场景下的缓存+数据库双写不一致问题分析与解决方案设计 三、上面高并发的场景下,该解决方案要注意的问题 1.1 Cache Aside Pattern概念以及读写逻辑 (1)读的时候,先读缓存,缓存没有的话,那么就读数据库,然后取

    2023年04月21日
    浏览(47)
  • 数据库缓存服务——NoSQL之Redis配置与优化

    目录 一、缓存概念 1.1 系统缓存 1.2 缓存保存位置及分层结构 1.2.1 DNS缓存 1.2.2 应用层缓存 1.2.3 数据层缓存 1.2.4 硬件缓存 二、关系型数据库与非关系型数据库 2.1 关系型数据库 2.2 非关系型数据库 2.3 关系型数据库和非关系型数据库区别: 2.4 非关系型数据库产生背景 2.5 总结

    2024年02月15日
    浏览(48)
  • Springboot+Redis:实现缓存 减少对数据库的压力

    🎉🎉欢迎光临,终于等到你啦🎉🎉 🏅我是苏泽,一位对技术充满热情的探索者和分享者。🚀🚀 🌟持续更新的专栏 Redis实战与进阶 本专栏讲解Redis从原理到实践 这是苏泽的个人主页可以看到我其他的内容哦👇👇 努力的苏泽 http://suzee.blog.csdn.net/   目录 缓存如何实现?

    2024年03月24日
    浏览(54)
  • Redis缓存MySQL数据库存储二者如何保证数据一致性

    在大型互联网应用中,由于数据库读写频繁、压力大等原因,我们通常会使用缓存来减少数据库的访问次数,提高系统的性能。而Redis作为一个高性能的内存数据库,成为了缓存的首选方案之一。但是,缓存和数据库之间存在数据一致性的问题,如何解决这个问题呢?本文将

    2023年04月19日
    浏览(49)
  • redis面试题目-如何保证数据库与缓存的数据一致性

    原视频:https://www.bilibili.com/video/BV1Km4y1r75f?p=62vd_source=fa75329ae3880aa55609265a0e9f5d34 由于缓存和数据库是分开的,无法做到原子性的同时进行数据修改,可能出现缓存更新失败,或者数据库更新失败的情况,这时候会出现数据不一致,影响前端业务 先更新数据库,再更新缓存。缓

    2024年02月05日
    浏览(59)
  • Redis 缓存与数据库双写不一致如何解决

    Redis缓存与数据库双写不一致是一个常见的挑战,但可以通过一些方法来解决或减轻这种不一致性。以下是一些可能的解决方案: 事务处理: 在进行缓存和数据库双写时,确保它们被包含在同一事务中。这可以通过使用支持事务的数据库和Redis事务来实现。这样,要么两者同

    2024年01月21日
    浏览(52)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包